Sparql中的属性路径
我正在使用属性路径向Dbpedia端点提出Sparql查询:Sparql中的属性路径,sparql,rdf,Sparql,Rdf,我正在使用属性路径向Dbpedia端点提出Sparql查询: select (COUNT(distinct ?s2) AS ?count) WHERE{ ?s2 skos:broader{0,2} dbc:Countries_in_Europe } select (COUNT(distinct ?s2) AS ?count) (COUNT(distinct ?s1) AS ?count1) WHERE{ ?s2 skos:broader dbc:Countries_in_Europe. ?s
select (COUNT(distinct ?s2) AS ?count) WHERE{
?s2 skos:broader{0,2} dbc:Countries_in_Europe
}
select (COUNT(distinct ?s2) AS ?count) (COUNT(distinct ?s1) AS ?count1) WHERE{
?s2 skos:broader dbc:Countries_in_Europe.
?s1 skos:broader ?s2.
}
我想在没有属性路径的情况下提出相同的查询:
select (COUNT(distinct ?s2) AS ?count) WHERE{
?s2 skos:broader{0,2} dbc:Countries_in_Europe
}
select (COUNT(distinct ?s2) AS ?count) (COUNT(distinct ?s1) AS ?count1) WHERE{
?s2 skos:broader dbc:Countries_in_Europe.
?s1 skos:broader ?s2.
}
我有两个问题:
选择(计数(不同的)作为计数),其中{
{
s skos:更广泛的dbc:欧洲国家
}联合{
s1 skos:更广泛的dbc:欧洲国家。
?s skos:范围更广?s1
}
}
注意,在您的第一个查询中,您使用了{0,2}
,这意味着由于0
距离,类别dbc:Countries\u in\u european
本身也是结果的一部分。如果需要,应该将+1
添加到第二个查询的结果中
更新
根据@JohuaTaylor下面的评论,更简洁的语法应该是
选择(计数(不同的)作为计数),其中{
?s skos:范围更广/skos:范围更广?dbc:欧洲国家
}
选择(计数(不同的)作为计数),其中{
{
s skos:更广泛的dbc:欧洲国家
}联合{
s1 skos:更广泛的dbc:欧洲国家。
?s skos:范围更广?s1
}
}
注意,在您的第一个查询中,您使用了{0,2}
,这意味着由于0
距离,类别dbc:Countries\u in\u european
本身也是结果的一部分。如果需要,应该将+1
添加到第二个查询的结果中
更新
根据@JohuaTaylor下面的评论,更简洁的语法应该是
选择(计数(不同的)作为计数),其中{
?s skos:范围更广/skos:范围更广?dbc:欧洲国家
}
1。您使用的是非标准SPARQL,即限制深度并没有使其达到最终版本,请参见。我猜第一个查询应该返回给定查询的子类别,深度为2,对吗?您的第二个查询没有执行相同的操作。必须使用每个距离的并集,即一个用于直接子类别,另一个用于其他级别。1。您使用的是非标准SPARQL,即限制深度并没有使其达到最终版本,请参见。我猜第一个查询应该返回给定查询的子类别,深度为2,对吗?您的第二个查询没有执行相同的操作。您必须使用每个距离的并集,即一个用于直接子类别,另一个用于其他级别。?
路径操作符在这里会有所帮助。例如,路径broader/broader?
相当于skos:broader{1,2}
@JoshuaTaylor是的,的确如此。我想到的问题更多的是,为什么他/她希望查询没有属性路径。事实上,我想在没有属性路径的情况下进行查询,以了解差异。非常感谢您的评论和回复。?
路径操作符将在这里提供帮助。例如,路径broader/broader?
相当于skos:broader{1,2}
@JoshuaTaylor是的,的确如此。我想到的问题更多的是,为什么他/她希望查询没有属性路径。事实上,我想在没有属性路径的情况下进行查询,以了解差异。非常感谢您的评论和回复。