Protege中的SPARQL查询结果无法识别传递属性

时间:2012-08-23 11:12:51

标签: rdf sparql owl protege

我在此问题中的要求几乎相同:Get all nodes in a transitive relation

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

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

A包含B包含C

当我运行以下SPARQL查询时:

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

我明白了:

A1 B1
B1 C1

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

A1 C1 

太。 我在这做错了什么?我联系到的问题包括Jena的答案,在Jena模型上做这个会有所不同吗?

2 个答案:

答案 0 :(得分:1)

好的,

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

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

  

“出于我们的目的,可以直接执行SPARQL查询   通过Protege中的SPARQL查询面板或从JAVA内部   应用程序使用专门的Jena库方法。都   方法能够处理有关显式对象和查询的查询   财产关系,但耶拿图书馆的优势在于使用   推理。因此,使用Jena库方法执行的查询可以返回   结果还考虑了传递和推断的关系。“

答案 1 :(得分:0)

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

不确定哪个实现实际上是在引擎盖下使用Protege ...