SPARQL的基数限制

fro*_*tto 1 rdf rdfs cardinality sparql restrictions

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

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

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

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

Jos*_*lor 5

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

您只需在每行中选择父项和子项,然后按父项分组,然后仅获取至少具有两个值的项:

select ?parent where {
  ?parent :hasChild ?child
}
group by ?parent
having (count(distinct ?child) >= 2)
Run Code Online (Sandbox Code Playgroud)

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

TwoChildParent subClassof (hasChild min 2)
Joe a TwoParentChild
Run Code Online (Sandbox Code Playgroud)

但没有

Joe hasChild ?x
Run Code Online (Sandbox Code Playgroud)

三倍,即使Joe至少有两个孩子,这个查询也不会返回Joe.