SPARQL で基本的な論理演算子が実装されていない理由がよくわかりません。ただし、ほとんどの場合、さまざまな方法で同じ結果を得ることができます。
この質問の目的は、「または」ステートメントを置き換えることができる可能な方法の谷のクイック リファレンスを用意することです。
これが私が考えることができるものです:
1)UNION
例えば:
SELECT * WHERE
{ { ?s :propA ?o } UNION { ?s :propB ?o } }
-非常に冗長になる可能性があるため、多くの場合適切ではありません
SELECT * WHERE {
{ GRAPH ?g {?s ?p ?o. ?o ?pp ?data1}} UNION
{ GRAPH ?g {?s ?p ?o. ?o ?pp ?data2}}
}
として機能しません
SELECT * WHERE {
GRAPH ?g {
?s ?p ?o.
{?o ?pp ?data1} UNION
{?o ?pp ?data2}
}
}
(少なくともStardogではありません)
2)FILTER
例えば:
SELECT * WHERE
{
?s ?p ?o.
FILTER (?p = :propA || ?p = :propB )
}
他のアイデアはありますか?