You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SPARQL语句查询OWL本体中Bob的所有子女及后代

首先请确保你的SPARQL查询引擎开启了RDFS/OWL推理支持,否则属性层级的继承规则不会自动生效,两种场景的查询语句分别如下:

查询Bob的所有子女

开启推理的场景下,直接基于hasChild属性查询即可,会自动包含hasSon、hasDaughter两种子属性关联的个体:

PREFIX : <http://ex.org#>
SELECT ?child WHERE {
  :Bob :hasChild ?child .
}

返回结果为:Mary、:John。

如果未开启推理,可以用属性路径匹配所有hasChild的直接/间接子属性:

PREFIX : <http://ex.org#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?child WHERE {
  :Bob ?p ?child .
  ?p rdfs:subPropertyOf* :hasChild .
}
查询Bob的所有后代

你的现有本体中未将hasDescendant声明为传递属性,有两种实现方案:

  1. 先修改本体,给:hasDescendant添加传递属性声明:
:hasDescendant rdf:type owl:ObjectProperty, owl:TransitiveProperty .

开启推理后直接查询即可拿到所有后代:

PREFIX : <http://ex.org#>
SELECT ?descendant WHERE {
  :Bob :hasDescendant ?descendant .
}
  1. 不修改本体、不依赖推理,直接用SPARQL属性路径实现递归查询:
PREFIX : <http://ex.org#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?descendant WHERE {
  :Bob (^rdfs:subPropertyOf/:hasChild)+ ?descendant .
}

两种方案返回结果均为:Mary、:John、:LittleBoy、:LittleGirl。

内容的提问来源于stack exchange,提问作者joylix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:01