SPARQL的基数限制

时间:2015-01-30 16:32:47

标签: rdf sparql restrictions rdfs cardinality

我的问题是关于RDF三元组的SPARQL查询语言,假设我们有一个用RDF / XML格式编写的系列本体。

现在,我想查询所有父母,例如,至少有两个孩子(hasChild关系的基数)与SPARQL。

我的问题是,是否可以用SPARQL语言编写此查询,但我知道可以用DL查询语言编写此查询(描述逻辑)

在更一般的形式中,是否可以在SPARQL语言中应用某些基数限制?

1 个答案:

答案 0 :(得分:5)

  

现在,我想查询所有父母,例如,至少有两个   使用SPARQL的子项(hasChild关系的基数)。

您只需在每一行中选择一个父级和子级,然后按父级分组,然后只选择那些至少有两个值的子级:

select ?parent where {
  ?parent :hasChild ?child
}
group by ?parent
having (count(distinct ?child) >= 2)

要小心;在OWL中,您可以拥有一个必须至少有两个孩子的人,但此查询不会返回。例如,如果你有

TwoChildParent subClassof (hasChild min 2)
Joe a TwoParentChild

但没有任何

Joe hasChild ?x

三倍,此查询不会返回 Joe ,即使 Joe 至少有两个孩子。