-1

次のような場合、変数(?a、?b)を比較できるsparqlクエリを作成するにはどうすればよいですか?(これに何か問題がありますか?):

<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

よろしくお願いします。

4

1 に答える 1

3

あなたの質問、またはあなたの意図は、あなたが書いたようにクエリで唯一不明であるため、かなり不明確です:Cクエリ自体でURI を引用しているため、:Aとの ID は既にわかっています。:B

あなたがやろうとしていることの2つの解釈を考えることができます:

最初に、 が であり?sont:XXXXXおよび があることを知りたいだけです。part_of :A:B

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

?sまたは、 which が でありont:XXXXX、 which が (少なくとも) 2 つの異なる部分を持っていることを知りたい場合:

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

これらのどちらも実際にやろうとしていることと一致しない場合は、質問をより明確にする必要があります.

于 2012-05-14T22:53:46.400 に答える