Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql 本体论:个体的推断超类_Sparql_Ontology_Protege4 - Fatal编程技术网

Sparql 本体论:个体的推断超类

Sparql 本体论:个体的推断超类,sparql,ontology,protege4,Sparql,Ontology,Protege4,我将Protege 4.3(也尝试了5-beta)与以下简单本体一起使用: Class: Person Class: Man SubClassOf: Person Individual: John Types: Man 接下来,我开始讲推理者隐士1.3.8,但约翰并不是一个人。此外,以下SPARQL不会返回任何内容: PREFIX this: <http://www.semanticweb.org/ontologies/20

我将Protege 4.3(也尝试了5-beta)与以下简单本体一起使用:

Class: Person


Class: Man

    SubClassOf: 
        Person


Individual: John

    Types: 
        Man
接下来,我开始讲推理者隐士1.3.8,但约翰并不是一个人。此外,以下SPARQL不会返回任何内容:

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

SELECT ?subject
    WHERE { ?subject a this:Person }
前缀:
选择?主题
何处{?主体a:此人}
你对我理解的错误有什么建议吗?

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

Protégé不会在其超类中显示子类的个体,即使推理器处于活动状态。然而,正如您已经看到的,这个推论是有效的。以下两个例子都将约翰作为班级成员返回:

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

另一种显而易见的方法是导出包含所有推断公理的本体(“文件”->“将推断公理导出为本体…”)。生成的本体包含两个类断言,一个是人,一个是人


我假设这种行为可以使GUI在处理更大的本体(可能包含许多个体)时保持可用。从Protégé5.1.0开始,似乎没有办法改变这种行为。

好的,至于SPARQL查询,Protege似乎没有使用使用reasoner()的SPARQL实现。使用例如Jena应该解决这个问题。但第一个问题仍然存在。将Protege5与Snap SPARQL插件结合使用也解决了第二个问题。
PREFIX this: <urn:absolute:test#>

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