2016-03-20 21 views
0

私はr2rmlと以下のようにモデル化する可​​能性がどのように思っていた:R2RML空白ノード:のObjectMap

人 - >空白ノード[ストリート名、郵便番号、市]

- >がアドレスを持っています私はrr:objectMap

内の空白ノードに通りの名前、郵便番号や都市を追加する方法を確認してください注意してくださいね(追加質問:rr:classrr:BlankNodeに必須ですか?)

任意の提案ですか? :)

<#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? ## 
     ]; 
    ]. 

答えて

1

あまりにも難しくありません。最初に作成したR2RMLマッピングを取得し、そのアドレスの空白ノードを作成します。テンプレートを使用して一意の名前を付けますが、IRIには与えないで、空のノードとして解釈されます。

<#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:template "BlankAddressNode{ADDRESSID}"; 
     rr:termType rr:BlankNode; 
     ]; 
    ]. 

注:表PERSON内のADDRESSIDは、ADDRESS表の主キーの外部キーとみなされます。

次に、rdf:typeとその他すべての空白ノードを作成します。

<#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"] 
    ]; 
    . 

注:IDはADDRESSテーブルの主キーです。

あなたも参加でこれを行うことができます...しかし私はチュートリアルの観点から考えるとこれははっきりしています。

+0

まずは...ありがとう:)しかし、私は 'rr:template" BlankAddressNode {ID} "の部分を理解していません。それはあなたが使っているカスタム変数ですか? 'rr:subjectMap'の内部で動作していますか? – Kody

+0

最初のもの:両方のマッピングが同じファイルに必要です。その1つのR2RMLマッピングファイルの処理中、各ブランクノードに識別子を使用します。たとえば、ID 1025のPerson行を処理している場合、空白ノード「BlankAddressNode1025」が作成されます。それは、hasAddressとAddressのマッピングで空白のノードを使用します。注:カメの指定は空白のノードは_のように書式設定する必要があると言うので、「正しい」方法ではない可能性があります:BlankAddressNode1025しかし、それは私のために働いていました。 –

+0

私はこれを試してみます:)あなたは正しい方法がどのように見えるか知っていますか? – Kody