在这个简单的sparql查询中,我得到了对象为42的主题列表。
SELECT ?v WHERE { ?v ?p 42 }
如果我将?p添加为变量
SELECT ?v ?p WHERE { ?v ?p 42 }
我将每行获得两个实体,即主题和谓词。
如果我要三个实体(包括42个实体)怎么办?就像是:
SELECT ?v ?p ?m WHERE { ?v ?p (42 as m) }
最佳答案
标准SPARQL 1.0确实不允许这样做。但是,可能会有一些特定于实现的扩展。
解决方法是,如果数据包含以42作为对象文字的三元组,则可以执行以下操作:像这样:
SELECT ?v ?p ?m { ?v ?p 42, ?m FILTER(?m=42)}
相当于
SELECT ?v ?p ?m WHERE { ?v ?p 42 . ?v ?p ?m FILTER(?m=42)}
因为您可以编写共享相同主题的图形模式,并使用逗号对象列表表示法作为谓词,并且
WHERE
关键字是可选的。为了提高效率,您希望使用基本图形模式将工作三元组减少到较小的集合,然后才应用FILTER表达式进一步修剪结果。
关于sparql - 如何将变量绑定(bind)到SPARQL中的查询项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1760926/