我的问题是关于RDF三元组的SPARQL查询语言,假设我们有一个用RDF / XML格式编写的系列本体。
现在,我想查询所有父母,例如,至少有两个孩子(hasChild
关系的基数)与SPARQL。
我的问题是,是否可以用SPARQL语言编写此查询,但我知道可以用DL查询语言编写此查询(描述逻辑)
在更一般的形式中,是否可以在SPARQL语言中应用某些基数限制?
答案 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 至少有两个孩子。