1

我在这个问题中表达了几乎相同的要求:Get all nodes in a transitive relationship

我正在使用 Protege 3.4.8。这是一个 Owl-Lite 项目。我有一个传递属性“包含”,它被定义为节点类型的对象属性节点具有类型 A、B 和 C 的后代

我有个人通过包含这样的属性相互链接:

A 包含 B 包含 C

当我运行以下 SPARQL 查询时:

SELECT ?A ?B
WHERE
{
    ?A :contains ?B         
}

我得到:

A1 B1
B1 C1

由于包含的传递性,我希望得到

A1 C1 

也。我在这里做错了什么?我链接到的问题在答案中包括耶拿,在耶拿模型上这样做会有所不同吗?

4

2 回答 2

1

好的,

进一步搜索将我带到此页面: http: //opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql

此页面的以下引用(可能)解释了我所看到的行为背后的原因:

“为了我们的目的,可以通过 Protege 中的 SPARQL 查询面板直接执行 SPARQL 查询,也可以使用专门的 Jena 库方法从 JAVA 应用程序内部执行。这两种方法都能够处理有关显式对象和属性关系的查询,但 Jena 库具有优势使用推理器。因此,使用 Jena 库方法执行的查询可以返回考虑到传递和推断关系的结果。

于 2012-08-23T11:41:20.447 回答
0

SPARQL 是一种 RDF 查询语言,因此并非所有 SPARQL 引擎都应该实现 OWL 蕴涵(即,使用 OWL 语义来评估查询)。更多详情请访问http://www.w3.org/TR/sparql11-entailment/

不确定哪个实现实际上在后台使用 Protege ......

于 2012-09-04T08:41:48.910 回答