2016-04-02 10 views
2

Ich möchte eine Textdarstellung eines RDF-Graphen mit Turtle machen. Als Beispiel die Beziehung zwischen Spiderman und dem Green Goblin. Siehe die Referenz hier https://www.w3.org/TR/turtle/Textdarstellung von RDF mit Schildkröte

@base <http://example.org/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix rel: <http://www.perceive.net/schemas/relationship/> 

<#green-goblin> 
    rel:enemyOf <#spiderman> ; 
    a foaf:Person ; # in the context of the Marvel universe 
    foaf:name "Green Goblin" . 
<#spiderman> 
    rel:enemyOf <#green-goblin> ; 
    a foaf:Person ; 
    foaf:name "Spiderman", "Человек-паук"@ru . 

Was das Komma bedeutet (,) bedeutet zwischen „Spiderman“ und dem russischen Wort?

Eine andere wichtigere Frage ist: Wie kann ich das mit einer Stadt und einem Land im Laufe der Zeit tun? Zum Beispiel: Leipzig gehörte bis 1990 zur DDR. Heute ist Leipzig eine Stadt in Deutschland.

+1

Wie können Sie _was_ mit einer Stadt und einem Land im Laufe der Zeit tun? Es ist nicht sehr klar, was Sie suchen oder was Ihre "andere Frage" mit Ihrem Beispiel von Spiderman und dem Green Goblin zu tun hat. –

Antwort

3

Scheint wie zwei sehr getrennte Fragen hier. Eine zur Syntax und eine zur Modellierung.

Für das Syntaxproblem würde ich vorschlagen, Turtle - Terse RDF Triple Language zu betrachten. Turtle gibt Tripel an, die drei Entitäten in der Spezifikation eines Tripels erfordern. Die . gibt das Ende eines Triple an. Als Abkürzung bedeutet ;, dass der aktuelle Betreff auf die nächste dreifache Spezifikation übertragen wird - daher müssen nur das Prädikat und das Objekt angegeben werden. A , bedeutet, dass die Betreff und Objekt auf das nächste Tripel übertragen werden. Daher

<#spiderman> foaf:name "Spiderman", "Человек-паук"@ru . 

Gibt zwei Triples:

<#spiderman> foaf:name "Spiderman" . 
<#spiderman> foaf:name "Человек-паук"@ru . 

Einer der Modellierung Frage zu verschiedenen Epochen der Zeit, die verschiedenen Verstaatlichungen von Leipzig angeben, eine Eigenschaft angeben, wie isMemberOfCountry, die Eigenschaften von fromDate hat und toDate. Jede Instanz des Landes Mitgliedschaft würde dann gefüllt werden:

@prefix ex: <http://example.org/geoex/> 
ex:Leipzig 
    ex:isMemberOfCountry [ 
     ex:country ex:DDR ; 
     ex:fromDate 1945 ; 
     ex:toDate 1990 ; 
    ] ; 
    ex:isMemberOfCountry [ 
     ex:country ex:Germany ; 
     ex:fromDate 1990 ; 
    ] . 

Bnodes werden verwendet, eindeutige Namen für ein Objekt, dessen Name Materie kann nicht über den Datensatz sichern (wenn es der Fall ist, dann geben Sie eine Aufgabe, eine Verwendung anstelle des bnode). Dann das aktuelle Land abzufragen, verwenden:

SELECT ?country 
WHERE { 
    ex:Leipzig ex:isMemberOfCountry ?member . 
    ?member ex:country ?country . 
    FILTER NOT EXISTS { 
     ?member ex:toDate ?d 
    } 
} 

Und die Mitgliedschaft in einem bestimmten Jahr zu finden, verwenden Sie die folgenden Schritte aus:

SELECT ?country 
WHERE { 
BIND("1991"^^xsd:integer AS ?date) #placeholder - ?date should be passed into the query 
    ex:Leipzig ex:isMemberOfCountry ?member . 
    ?member ex:country ?country . 
    ?member ex:fromDate ?fdate . 
    OPTIONAL {?member ex:toDate ?td} 
    BIND(IF(bound(?td), ?td, year(now())) AS ?edate) 
    FILTER (?date >= ?fdate && ?date <= ?edate) 
} 

Beachten Sie, dass ?date-1.990 Bindung in zwei Ergebnissen führen, die ist korrekt, wenn in diesem Beispielmodell Jahre anstelle von Daten verwendet werden.

+0

Ok, das hilft sehr, danke für die ausführlichen Informationen. Die Tags oder Wörter wie isMemberOfCountry oder country sind frei definierte Tags. welche sollten logisch verwendet werden oder? – Mchoeti

+2

Diese Wörter sind keine "Wörter", sondern URIs - Objekte. Daher wird ex: isMemberOfCountry bei der obigen Präfixdefinition auf erweitert. Einige Nachforschungen zu den RDF/Turtle-Dokumenten, die wir hier gepostet haben, sollten dies deutlicher machen. – scotthenninger

+1

Beachten Sie, dass Turtle eine W3C-Empfehlung ist: https://www.w3.org/TR/turtle/ (Ihr Link ist zu einem älteren Entwurf) – unor