2012-05-14 6 views
-1

어떻게하면 다음과 같은 경우 (? a,? b) 변수를 비교할 수있는 sparql 쿼리를 작성할 수 있습니까? (문제는이 예를 들어 잘못?) :이 내가 원하는 걸주지 않는rdf 트리플을 쿼리

<ont:XXXXX rdf:about="http://www.myOntDomain#C"> 
    <ro:part_of rdf:resource="http://www.myOntDomain#A"> 
    <ro:part_of rdf:resource="http://www.myOntDomain#B"> 
</ont:XXXXX> 

:

select ?s ?a ?b 
where { 
    ?s a ont:XXXXX; ro:part_of ?a; ro:part_of ?b . 
    filter(str(?a) = "http://www.myOntDomain#A" && str(?b) = "http://www.myOntDomain#B") 
} 

내가 원하는 : 사전에

http://www.myOntDomain#C http://www.myOntDomain#A http://www.myOntDomain#B 

많은 감사합니다.

답변

3

귀하가 작성한 귀하의 질문에서 알 수없는 유일한 질문이 :C이므로 귀하의 질문 또는 오히려 귀하의 의도가 확실하지 않습니다. 이미 :A:B이라는 ID를 알고있는 경우 URI 을 쿼리 자체에 인용하기 때문에입니다. 난 당신이 뭘 하려는지 두 가지 해석의

을 생각할 수 있습니다 :

select ?s where { 
    ?s a ont:XXXXX ; 
     ro:part_of <http://www.myOntDomain#A> ; 
     ro:part_of <http://www.myOntDomain#B> 
} 

:

첫째, 당신은 단지 ont:XXXXX하고 part_of:A:B이있는 ?s을 알고 싶어요 또는 ont:XXXXX 인 을 알고 싶고 적어도 두 개의 별개 부분이있는 경우 :

select ?s ?a ?b where { 
    ?s a ont:XXXXX ; 
     ro:part_of ?a, ?b 
     FILTER (?a != ?b) 
} 

실제로 시도하고있는 것과 일치하지 않는 경우 질문을 명확하게 작성해야합니다.