为什么 Pellet 推理机不推断子类关系?
Why isn't Pellet reasoner inferring subclass relationships?
我刚开始学习 Protégé 和 OWL。我刚刚在 Protege 中创建了一个 class 层次结构,例如:
:A rdf:type owl:Class ;
rdfs:subClassOf owl:Thing ;
owl:disjointWith :B .
:B rdf:type owl:Class ;
rdfs:subClassOf owl:Thing .
:C rdf:type owl:Class ;
rdfs:subClassOf :A ;
owl:disjointWith :D .
:D rdf:type owl:Class ;
rdfs:subClassOf :A .
:E rdf:type owl:Class ;
rdfs:subClassOf :B .
当我启动 pellet reasoner 时,我希望它能推断出 A 和 B 的所有子classes 也是 Thing 的子classes,但这并没有发生。我还预计 SPARQL 查询 SELECT ?subject WHERE { ?subject rdfs:subClassOf owl:Thing}
会导致所有 classes A 到 B。但是查询仅 returns A 和 B.
我是做错了什么,还是我的预期不正确?
Protege 中有多个 SPARQL 插件。如果要使用推理,Snap SPARQL Query 插件 是使用方式。请注意,这 不是 Protege 发行版附带的默认 SPARQL 插件,但必须明确安装(通过插件管理器,这非常简单)。
我刚开始学习 Protégé 和 OWL。我刚刚在 Protege 中创建了一个 class 层次结构,例如:
:A rdf:type owl:Class ;
rdfs:subClassOf owl:Thing ;
owl:disjointWith :B .
:B rdf:type owl:Class ;
rdfs:subClassOf owl:Thing .
:C rdf:type owl:Class ;
rdfs:subClassOf :A ;
owl:disjointWith :D .
:D rdf:type owl:Class ;
rdfs:subClassOf :A .
:E rdf:type owl:Class ;
rdfs:subClassOf :B .
当我启动 pellet reasoner 时,我希望它能推断出 A 和 B 的所有子classes 也是 Thing 的子classes,但这并没有发生。我还预计 SPARQL 查询 SELECT ?subject WHERE { ?subject rdfs:subClassOf owl:Thing}
会导致所有 classes A 到 B。但是查询仅 returns A 和 B.
我是做错了什么,还是我的预期不正确?
Protege 中有多个 SPARQL 插件。如果要使用推理,Snap SPARQL Query 插件 是使用方式。请注意,这 不是 Protege 发行版附带的默认 SPARQL 插件,但必须明确安装(通过插件管理器,这非常简单)。