2017-05-11 6 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에서 어떻게하는지 모르겠습니다. 나는이 쿼리 tryed,하지만 난 항상 (내 데이터베이스에 내가 가진 필드 많은 비어와 레지스터로 "제목?") 빈 노드를 많이 얻을 :

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을 사용하지 않으므로 각 행에 대해 한 번 실행됩니다.