选择SPARQL查询的负数
可以选择sparql查询的“负数”吗选择SPARQL查询的负数,sparql,Sparql,可以选择sparql查询的“负数”吗 例如,考虑以下RDF数据、查询和期望结果: 知识库: 有办法通过吗?(我需要它进行删除)我想减去就是你要找的: 前缀gr: 选择?prod WHERE { 产品采购订单。 负{o?p2?o2} } 它获取左侧匹配的内容(?prod?p?o),并删除与减模式匹配的项目对应的任何内容 注意,这并不能给出您想要的答案,因为?prod?p?o模式匹配所有您对结果不感兴趣的内容,包括链接属性(:propB rdfs:label“Hello”) 要获得您想要的答案,您
例如,考虑以下RDF数据、查询和期望结果:
知识库:有办法通过吗?(我需要它进行
删除)我想减去就是你要找的:
前缀gr:
选择?prod WHERE
{
产品采购订单。
负{o?p2?o2}
}
它获取左侧匹配的内容(?prod?p?o
),并删除与减模式匹配的项目对应的任何内容
注意,这并不能给出您想要的答案,因为?prod?p?o
模式匹配所有您对结果不感兴趣的内容,包括链接属性(:propB rdfs:label“Hello”
)
要获得您想要的答案,您需要使查询的第一部分更加具体,如下所示:
前缀:
前缀gr:
选择?prod WHERE
{
?产品:hasProp?o。
负{o?p2?o2}
}
在这里,我将?p
变量改为:hasProp
常量。通过这个问题,我得到了你想要的答案
NB-您的示例中没有定义空前缀,因此我发明了一个空前缀以使查询有效,因此我可以测试它是否有效另一种方法是使用过滤器不存在
SELECT ?prod WHERE
{
?prod :hasProp ?o.
FILTER NOT EXISTS { ?o rdfs:label "Hello". }
}
第一个?prod:hasProp?o.
是哪个?然后检查?o是否导致?o rdfs:标签“Hello”
匹配。使用你认为最容易理解的形式
| ?prod |
|---------|
| :prod_A |
| :prod_C |
| :prod_D |
SELECT ?prod WHERE
{
?prod :hasProp ?o.
FILTER NOT EXISTS { ?o rdfs:label "Hello". }
}