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 }