【发布时间】:2015-06-04 21:54:42
【问题描述】:
我有一张桌子,上面有作者相同的文档。我需要获取不同的文档对。我做了以下事情:
SELECT DISTINCT ?d1 ?d2 WHERE {
?d1 myns:creator ?x.
?d2 myns:creator ?y.
FILTER (?x=?y && ?d1!=?d2).
}
GROUP BY ?d1 ?d2
但是DOC1, DOC2 和DOC2, DOC1 都在结果中。我需要摆脱其中一对。
这是整个三元组数据库:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix myns: <http://my.local.namespace#> .
_:doc1 rdf:type myns:Document.
_:doc1 myns:creator _:Pete.
_:doc1 myns:year "2000"^^xsd:integer.
_:doc1 myns:publisher _:p1.
_:doc2 rdf:type myns:Document.
_:doc2 myns:creator _:John.
_:doc2 myns:year "2004"^^xsd:integer.
_:doc2 myns:publisher _:p2.
_:doc3 rdf:type myns:Document.
_:doc3 myns:creator _:Pete.
_:doc3 myns:publisher _:p3.
_:doc4 rdf:type myns:Document.
_:doc4 myns:creator _:Bob.
_:doc4 myns:year "2010"^^xsd:integer.
_:doc4 myns:publisher _:p2.
_:Pete rdf:type myns:Person.
_:Pete myns:knows _:Bob.
_:Pete myns:knows _:John .
_:John rdf:type myns:Person.
_:John myns:age "29"^^xsd:integer.
_:John myns:knows _:Bob.
_:Bob rdf:type myns:Person.
_:Bob myns:age "35"^^xsd:integer.
执行查询后得到的结果是:
D1 D2
_:891f1e98-b411-4e54-9533-18d530f09c6ddoc1 _:891f1e98-b411-4e54-9533-18d530f09c6ddoc3
_:891f1e98-b411-4e54-9533-18d530f09c6ddoc3 _:891f1e98-b411-4e54-9533-18d530f09c6ddoc1
值得注意的是,从技术上讲,这两对是相同的。我需要一个不同的(即其中一个就足够了)。我不确定环境特征。但是有芝麻框架
【问题讨论】:
-
从您对我的回答的 cmets 来看,您的问题缺少基本信息。您需要显示complete, minimal, verifiable example,包括您正在执行此操作的 实际 数据的最小样本(我们可以复制粘贴到三重存储中),您的输出 期望 得到,以及你实际得到的输出。如果您告诉我们您正在使用哪种软件(哪种 SPARQL 引擎、哪种数据库、哪种编程语言等),也会有很大帮助。
-
@JeenBroekstra,已更新。
-
谢谢,现在清楚多了。