2016-03-20 7 views
0

Ich habe mich gefragt, wie ich folgendes mit r2rml Modell könnte:R2RML Blank Knoten innerhalb rr: ObjectMap-

Person -> hat eine Adresse -> Blank Knoten [Straßenname, PLZ, Ort]

ich bin sicher, Beachten Sie, wie ich kann Straßennamen, Postleitzahl und Ort auf die leeren Knoten innerhalb der rr:objectMap

hinzufügen (weiteren Frage: Sind ein rr:class obligatorisch für ein rr:BlankNode?)

Irgendwelche Vorschläge? :)

<#Person> 
    rr:logicalTable [ rr:tableName "PERSON" ]; 
    rr:subjectMap [ 
     rr:template "http://ex.com/data/PersonClass/{ID}"; 
     rr:class ex:PersonClass; 
    ]; 
    rr:preciateObjectMap [ 
     rr:predicate ex:hasAddress; 
     rr:objectMap [ 
     rr:termType rr:BlankNode; 
     ## How/where can a add the street name, postal code, city? ## 
     ]; 
    ]. 

Antwort

1

Sollte nicht zu schwierig sein. Zuerst nehmen Sie das R2RML-Mapping, das Sie erstellt haben, und erstellen einen leeren Knoten für die Adresse. Geben Sie ihm einen eindeutigen Namen, indem Sie eine Vorlage verwenden. Geben Sie ihm jedoch keinen IRI, damit er als leerer Knoten interpretiert wird.

Hinweis: ADDRESSID in der Tabelle PERSON wird als Fremdschlüssel für den Primärschlüssel der Tabelle ADDRESS betrachtet.

Als nächstes erstellen Sie den leeren Knoten mit rdf: type und alles andere.

<#Address> 
    rr:logicalTable [ rr:tableName "ADDRESS" ]; 
    rr:subjectMap [ 
     rr:template "BlankAddressNode{ID}"; 
     rr:termType rr:BlankNode; 
     rr:class ex:AddressClass; 
    ]; 
    rr:predicateObjectMap [ 
     rr:predicate ex:street; 
     rr:objectMap [ rr:column "Street"] 
    ]; 
    . 

Hinweis: ID ist der Primärschlüssel der ADDRESS-Tabelle.

Sie können dies mit einem Join auch tun ... aber ich denke, aus einem Tutorial Sicht ist dies klarer.

+0

Zunächst einmal ... Danke :) Aber ich verstehe nicht den Teil mit 'rr: Vorlage" BlankAddressNode {ID} ";' Ist das eine benutzerdefinierte Variable, die Sie verwenden? Arbeitet es in einer 'rr: subjectMap'? – Kody

+0

Zuerst: Sie benötigen beide Mappings in der gleichen Datei. Während der Verarbeitung dieser R2RML-Zuordnungsdatei werden für jeden leeren Knoten Kennungen verwendet. Wenn Sie beispielsweise die Person-Zeile mit der ID 1025 verarbeiten, wird ein leerer Knoten 'BlankAddressNode1025' erstellt. Es wird diesen leeren Knoten in hasAddress- und Address-Zuordnungen verwenden. Hinweis: Es ist möglicherweise nicht der "richtige" Weg, da die Turtle-Spezifikation besagt, dass leere Knoten wie _: BlankAddressNode1025 formatiert werden müssen, aber es funktionierte für mich. –

+0

Ich werde das versuchen :) Weißt du, wie der "richtige" Weg aussehen würde? – Kody