我正在尝试在 GraphDB 上的SPARQL游乐场中运行此查询。
select * where {
?s content:value ?value .
FILTER REGEX(str(?value), "_:x1697BD364N0abcdd866d54")
}
?value
是BNodes
我正在尝试过滤BNode ID为以下所有值: _:x1697BD364N0abcdd866d54
我尝试了几种不同的方式来过滤ID:
FILTER REGEX(str(?value), "#bnode-id")
FILTER (?value), "#bnode-id")
但没有一个成功。
答案 0 :(得分:3)
See blank-nodes标签信息。简而言之,不能依赖SPARQL查询中的空白节点标签:
结果集中的标签
_:a
与具有相同标签的数据图中的空白节点之间不必存在任何关系。应用程序编写者不应期望查询中的空白节点标签引用数据中的特定空白节点。
如果很难通过SPARQL中的空白节点的属性等来区分空白节点,则可以使用GraphDB的内部资源标识符。
PREFIX ent: <http://www.ontotext.com/owlim/entity#>
SELECT * {
?s content:value ?value .
?s ent:id ?id .
FILTER (?id = 424242)
}
或
PREFIX ent: <http://www.ontotext.com/owlim/entity#>
SELECT * {
?s content:value ?value
BIND (ent:id(?s) AS ?id)
FILTER (?id = 424242)
}