rog*_*err 11 rdf semantic-web sparql semantics blank-nodes
可能很容易回答这个问题,但我甚至无法弄清楚如何制定Google查询来查找它.
我正在针对包含空白节点的数据集编写SPARQL构造查询.所以,如果我做一个像这样的查询
CONSTRUCT {?x ?y ?z .}
WHERE {?x ?y ?z .}
然后我的一个结果可能是:
nm:John nm:owns _:Node
这是一个问题,如果所有的
_:Node nm:has nm:Hats
三元组也不会以某种方式进入查询结果(因为我使用的一些解析器就像rdflib for Python真的不喜欢悬空的bnodes).
有没有办法编写我的原始CONSTRUCT查询以递归方式添加附加到任何bnode结果的所有三元组,以便在我的新图形中没有留下任何bnodes?
use*_*512 11
递归是不可能的.我能想到的最接近的是SPARQL 1.1属性路径(注意:该版本已过期)但是bnode测试不可用(afaik).
你可以删除带有尾随bnodes的语句:
CONSTRUCT {?x ?y ?z .} WHERE
{
?x ?y ?z .
FILTER (!isBlank(?z))
}
Run Code Online (Sandbox Code Playgroud)
或试试你的运气取下一点:
CONSTRUCT {?x ?y ?z . ?z ?w ?v } WHERE
{
?x ?y ?z .
OPTIONAL {
?z ?w ?v
FILTER (isBlank(?z) && !isBlank(?v))
}
}
Run Code Online (Sandbox Code Playgroud)
(最后一个查询非常严厉,顺便说一句)
你可能会更好DESCRIBE,通常会跳过bnodes.