SPARQL 1.1中属性路径的筛选器

SPARQL 1.1中属性路径的筛选器,sparql,rdf,semantic-web,triplestore,propertypath,Sparql,Rdf,Semantic Web,Triplestore,Propertypath,有什么方法可以过滤像这样的查询吗 选择?x?y,其中{x+?y}”; 对于提供的数据集,具有以下输出: http://article.com/2-3 http://article.com/2-2 http://article.com/2-3 http://article.com/2-1 http://article.com/2-4 http://article.com/2-3 http://article.com/2-4 http://article.com/2-2 http://articl

有什么方法可以过滤像这样的查询吗

选择?x?y,其中{x+?y}”;
对于提供的数据集,具有以下输出:

http://article.com/2-3 http://article.com/2-2
http://article.com/2-3 http://article.com/2-1
http://article.com/2-4 http://article.com/2-3
http://article.com/2-4 http://article.com/2-2
http://article.com/2-4 http://article.com/2-1
http://article.com/2-2 http://article.com/2-1
http://article.com/1-3 http://article.com/1-2
http://article.com/1-3 http://article.com/1-1
http://article.com/1-2 http://article.com/1-1
我们如何过滤查询,这样我们就可以删除另一个结果中具有?x值等于?y值的所有结果

http://article.com/2-4 http://article.com/2-3
http://article.com/2-4 http://article.com/2-2
http://article.com/2-4 http://article.com/2-1
因为所有其他结果的?x值作为?y值出现在其他结果中

以下是数据集:

<http://article.com/1-3> <http://relationship.com/wasGeneratedBy> <http://edit.com/comment1-2> .
<http://article.com/1-3> <http://relationship.com/wasRevisionOf> <http://article.com/1-2> .
<http://edit.com/comment1-2> <http://relationship.com/used> <http://article.com/1-2> .
<http://edit.com/comment1-2> <http://relationship.com/wasAssociatedWith> <http://editor.com/user1-1> .

<http://article.com/1-2> <http://relationship.com/wasGeneratedBy> <http://edit.com/comment1-1> .
<http://article.com/1-2> <http://relationship.com/wasRevisionOf> <http://article.com/1-1> .
<http://edit.com/comment1-1> <http://relationship.com/used> <http://article.com/1-1> .
<http://edit.com/comment1-1> <http://relationship.com/wasAssociatedWith> <http://editor.com/user1-1> .

<http://article.com/2-4> <http://relationship.com/wasGeneratedBy> <http://edit.com/comment2-3> .
<http://article.com/2-4> <http://relationship.com/wasRevisionOf> <http://article.com/2-3> .
<http://edit.com/comment2-3> <http://relationship.com/used> <http://article.com/2-3> .
<http://edit.com/comment2-3> <http://relationship.com/wasAssociatedWith> <http://editor.com/user2-3> .

<http://article.com/2-3> <http://relationship.com/wasGeneratedBy> <http://edit.com/comment2-2> .
<http://article.com/2-3> <http://relationship.com/wasRevisionOf> <http://article.com/2-2> .
<http://edit.com/comment2-2> <http://relationship.com/used> <http://article.com/2-2> .
<http://edit.com/comment2-2> <http://relationship.com/wasAssociatedWith> <http://editor.com/user2-2> .

<http://article.com/2-2> <http://relationship.com/wasGeneratedBy> <http://edit.com/comment2-1> .
<http://article.com/2-2> <http://relationship.com/wasRevisionOf> <http://article.com/2-1> .
<http://edit.com/comment2-1> <http://relationship.com/used> <http://article.com/2-1> .
<http://edit.com/comment2-1> <http://relationship.com/wasAssociatedWith> <http://editor.com/user2-1> .
。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
选择?x?y,其中{x+?y}
我们如何过滤查询,以便使用 在另一个结果中等于?y值的?x值

如果一行中的?x值是另一行中的?y值,则意味着?x是wasRevisionOf属性上某个三元组的对象。您可以简单地将其过滤掉:

选择?x?y,其中{
?x+?y
筛选器不存在{
什么
}
}
这确保?x的每个值都是链的“起点”

select ?x ?y  where {?x <http://relationship.com/wasRevisionOf>+ ?y }