SPARQL查询:使用值内联数据或与bigdata存储区联合
我有一个数据集,看起来有点像:SPARQL查询:使用值内联数据或与bigdata存储区联合,sparql,union,rdf,blazegraph,Sparql,Union,Rdf,Blazegraph,我有一个数据集,看起来有点像: <item1> <isLocated> <someAddress> <item2> <isLocated> <someAddress> <item3> <isLocated> <someOtherAddress> 我希望能够使用SPARQL回答以下问题: “我将在某个地址或某个其他地址找到哪些项目?” 我可以使用这样的工会: SELECT ?item
<item1> <isLocated> <someAddress>
<item2> <isLocated> <someAddress>
<item3> <isLocated> <someOtherAddress>
我希望能够使用SPARQL回答以下问题:
“我将在某个地址或某个其他地址找到哪些项目?”
我可以使用这样的工会:
SELECT ?item
{
{ ?item <isLocated> <someAddress> }
UNION { ?item <isLocated> <someOtherAddress }
}
SELECT?项目
{
{?项目}
UNION{?item您将语法弄混了一点。请使用:
VALUES ?loc { <someAddress> <someOtherAddress> }
我猜,Bigdata还不支持VALUES
子句。这是最新SPARQL工作草案(几周前发布)中引入的一个全新特性,因此很自然,一些工具还不支持它
您可以尝试改用绑定(这与以前的工作草案基本相同,已被替换)。您是对的,我确实在帖子中弄乱了语法,当我使用正确的语法时,仍然会出现相同的错误。尽管我使用了正确的语法运行查询(尝试了这两种语法)“'FILTER'确实产生了一组正确的结果。您和@JeenBroekstra都给出了给出正确解决方案的答案。是的,绑定/值的名称有一些来回的变化。更改很便宜,所以很遗憾它已经更改了。(语义也发生了变化,但您可能不会注意到)阅读bigdata文档意味着他们几乎完全支持SPARQL 1.1。但我猜你是对的。我在查询中用绑定?loc
替换了值(?loc)
,它按预期工作。是的,我肯定他们支持,但SPARQL 1.1是一个正在进行的工作,还不是一个固定的标准。
VALUES ?loc { <someAddress> <someOtherAddress> }
VALUES (?loc) { ( <someAddress> ) ( <someOtherAddress> ) }
FILTER (?loc IN ( val1, val2, ...))