2017-05-11 17 views
-1

私は、多くのデータを持つ個人用データ​​ベースを使用して、BIBFRAME 2.0モデルに従ってグラフを作成または挿入するSPARQLクエリを作成しようとしています。SPARQLクエリ/空白ノードの構築/挿入

Subject a bf:Topic, madsrdf:ComplexSubject ; 
rdfs:label "Subject" ; 
madsrdf:componentList [ a madsrdf:Topic ; 
      madsrdf:authoritativeLabel "FirstSubject" ] ; 

しかし、私はSPARQLでこれを行う方法がわかりません。私はこのクエリをしようと試みたが、私は常に空白ノード(私は私のデータベースを持っている空のフィールドに登録さと同じくらい「件名?」)の多くを得る:

PREFIX bf: <http://id.loc.gov/ontologies/bibframe/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
prefix madsrdf: <http://www.loc.gov/mads/rdf/v1#> 

CONSTRUCT{ 

    ?subject a bf:Topic, madsrdf:ComplexSubject ; 
     rdfs:label ?subject; 
     madsrdf:componentList [ a madsrdf:Topic ; 
       madsrdf:authoritativeLabel ?firstsubject ]; 

} where{ service <http://localhost:.......> { 
     ?registerRow a <urn:Row> ; 
     OPTIONAL{?registerRow <urn:col:Subject> ?subject ;} 
     OPTIONAL{?registerRow <urn:col:FirstSubject> ?firstsubject ;} 
        } 
} 
+0

CONSTRUCTクエリの最初の部分は、WHERE部分のパターンに一致する各RDFサブグラフに対して実行されます。確かに、それは各行のために行われます。 – AKSW

+0

そして 'OPTIONAL'の部分では、'?registerRow'の代わりに '?registroRow'という別の変数を使用しています。したがって、接続されていないので、たくさんの項目とのクロスプロダクトです。 – AKSW

+0

申し訳ありませんが、両方とも '?registerRow'です。問題はそのままです。 – Wences

答えて

0

@Wencesを、AKSWは読んでください、あなたに答えもっと慎重に CONSTRUCT部分に?registerRowを使用しないため、各行に対して1回実行されます。

関連する問題