我不太明白为什么在 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 )
}
还有其他想法吗?