SPARQLには変数名という縛りがある故、Collectionなノードの値すべてを得るような方法が存在しない。……たぶん。
<ex:Team rdf:about="http://example.com/team9/">
<ex:members rdf:parseType="Collection">
<ex:Member>
<ex:name>foo</ex:name>
</ex:Member>
<ex:Member>
<ex:name>bar</ex:name>
</ex:Member>
</ex:members>
</ex:Team>
こんな感じのグラフがあったとして、SPARQLでex:Memberすべての名前を取り出す場合とか。
WHERE {
?team a ex:Team ;
ex:members (?mbr1 ?mbr2) .
?mbr1 ex:name ?mbr1_name .
?mbr2 ex:name ?mbr2_name
}
これだと2人までしか対応できないし。OPTIONALでとりあえず256人分まで作っておくぐらいしか解決策が思いつかない。
「何個あるか分からないけど、そのうちの幾つかが欲しい」っていう要求にはSPARQLは向かない、と見るべきか。それとも、WDを隅まで読めば解決策があるのか。