【发布时间】:2012-04-04 12:59:31
【问题描述】:
这个问题可能很容易回答,但我什至不知道如何制定 Google 查询来找到它。
我正在针对包含空白节点的数据集编写 SPARQL 构造查询。因此,如果我进行类似的查询
CONSTRUCT {?x ?y ?z .}
WHERE {?x ?y ?z .}
那么我的结果之一可能是:
nm:John nm:owns _:Node
如果所有的都是问题
_:Node nm:has nm:Hats
三元组也不会以某种方式进入查询结果(因为我使用的一些解析器,比如 Python 的 rdflib 真的不喜欢悬空的 bnodes)。
有没有办法编写我的原始 CONSTRUCT 查询以递归地添加附加到任何 bnode 结果的所有三元组,这样在我的新图中没有 bnode 悬空?
【问题讨论】:
-
如果您这样做的方式可以运行 CONSTRUCT 查询,然后针对该查询运行 SPARQL 查询,您实际上 可以 获得简明的有界描述 ( CBD)使用 SPARQL 查询。看看Sparql query to return all triples recursively that make up an rdfs:class definition(也许还有Implementing Concise Bounded Description in SPARQL)。
-
上一条评论中答案背后的想法是,您可以创建一个新属性,它可以有效地充当属性路径中的谓词。例如,对于每个 IRI 节点 i,您添加一个三元组“i selfIRI i”。然后,当您编写类似“?x p/selfIRI ?y”这样的路径时,您已确保 ?y 是一个 IRI 节点。
标签: sparql rdf semantic-web semantics blank-nodes