我的问题是关于 RDF 三元组的 SPARQL 查询语言,假设我们有一个用 RDF/XML 格式编写的家族本体。
现在,我想使用 SPARQL 查询所有 parent ,例如至少有两个 child (hasChild
关系上的基数)。
我的问题是,是否可以用 SPARQL 语言编写此查询,但我知道可以用 DL 查询语言(描述逻辑)编写此查询
以更一般的形式,是否可以在 SPARQL 语言中应用一些基数限制?
最佳答案
Now, I want to query all parents, for example, with at least two children (cardinality on hasChild relation) with SPARQL.
你只需在每一行中选择一个父子,然后按父组分组,然后只取那些至少有两个子值的:
select ?parent where {
?parent :hasChild ?child
}
group by ?parent
having (count(distinct ?child) >= 2)
不过要小心;在 OWL 中,您可以拥有一个至少有两个 child 的个体,但此查询不会返回。例如,如果你有
TwoChildParent subClassof (hasChild min 2)
Joe a TwoChildParent
但是没有
Joe hasChild ?x
triples,此查询不会返回 Joe,即使 Joe 至少有两个 child 。
关于rdf - SPARQL 的基数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240395/