単純なSPARQLクエリを使用してAPIをクエリします。
PREFIX ...
SELECT DISTINCT *
WHERE {
?item dct:date ?date .
?item dct:title ?title .
?item rdfs:info ?info .
}
そしてこれは私にxmlを返します
<results>
<result>
<binding name='title'>
<literal>titletitle</literal>
</binding>
<binding name='info'>
<uri>link</uri>
</binding>
<binding name='date'>
<literal datatype='http://www.w3.org/2001/XMLSchema#dateTime'>2012-12-21T02:26:00+00:00</literal>
</binding>
<binding name='item'>
<uri>link</uri>
</binding>
</result>
...
</results>
しかし、問題は次のとおりです。このアイテムに一致するrdfs:infoのリンクが複数あることはわかっています。どうすれば取得できるようにクエリできますか
...
<binding name='info'>
<uri>link1</uri>
</binding>
<binding name='info'>
<uri>link2</uri>
</binding>
<binding name='info'>
<uri>link3</uri>
</binding>
...
?これは単純ですか、それともサブクエリまたは奇妙なものが必要UNION
ですか?やってみたら
PREFIX ...
SELECT DISTINCT *
WHERE {
?item dct:date ?date .
?item dct:title ?title .
OPTIONAL (?item rdfs:info ?info1 ).
OPTIONAL (?item rdfs:info ?info2 ).
}
?info1
これは、との値のすべての可能な順列を返します?info2
。それに、情報アイテムの数がわかりません。
を追加FILTER (?info1 != ?info2)
しても、まだいくつかの順列があります。代数の観点から、FILTER (?info1 < ?info2)
順列を破棄することは可能だと思います。しかし、どうすれば<
URIに適用できますか?