我正在尝试编写一个 SPARQL 查询,它允许我找到可从给定节点访问的所有节点。目前,每条边都有前缀 http://www.foo.com/edge#并且有 3 种可能的边(使用、扩展、实现)。虽然我可以从 "?start (edge:uses | edge:implements | edge:extends)* ?reached "得到正确的结果,但我想将其减少到一个语句,即 Edge: 之后的某种通配符,这样 if我添加更多边缘类型,然后我就不需要扩展查询。这可能吗?
最佳答案
看到这个SPARQL - Restricting Result Resource to Certain Namespace(s)
如果您知道它始终位于同一 namespace 中,则可能会出现如下所示的内容:
?start ?edge ?reached
FILTER(REGEX(STR(?var), "^http://www.foo.com/edge#"))
关于SPARQL 前缀通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678069/