本体:推断个体的超类

时间:2015-07-19 15:58:17

标签: sparql ontology protege4

我正在使用Protege 4.3(也尝试过5-beta),使用以下简单的本体:

Class: Person


Class: Man

    SubClassOf: 
        Person


Individual: John

    Types: 
        Man

接下来,我启动了Reasoner Hermit 1.3.8,但John并未被推断为人。此外,以下SPARQL不会返回任何内容:

PREFIX this: <http://www.semanticweb.org/ontologies/2015/6/untitled-ontology-18#>

SELECT ?subject
    WHERE { ?subject a this:Person }

你有什么建议我理解错了吗?

1 个答案:

答案 0 :(得分:2)

关于子类 Man 对超类 Person 的“缺失”推断:

即使推理者处于活动状态,Protégé也不会在其超类中显示子类的个体。然而,正如您已经看到的那样,推理有效。以下两个示例都将 John 作为类 Person 的个人返回:

SPARQL +推理器(Snap SPARQL插件4.2.0 + HermiT 1.3.8.413)

PREFIX this: <urn:absolute:test#>

SELECT ?subject
    WHERE { ?subject a this:Person }

DL-Query + Reasoner(DL-Query 4.0.1 + HermiT 1.3.8.413)

Person

另一种使其显而易见的方法是使用所有推断的公理导出本体(“文件” - &gt;“导出推断的公理为本体......”)。生成的本体包含两个 John 的类断言,一个作为 Man ,另一个作为 Person

我认为这种行为可以在处理可能包含许多个人的更大的本体时保持GUI的可用性。从Protégé5.1.0开始,似乎无法改变这种行为。