2015-03-03 53 views
0

我有一个Protégé中传递角色推理的问题。在Protégé中传递角色的推理

我创建了一个简单的本体论,说:

“任何棒是一些发动机的部分。”

“任何发动机都是某辆车的一部分。”

“PartOf关系是传递的。”

我期望Protégé在DL-Metric中将此DL识别为S并推断出“任何杆都是某辆车的一部分”,但似乎只是忽略了传递性公理。问题是为什么。

(我用)的门生不同版本(4.3和5.0,不同推理 我怀疑我没有设置一些重要的复选框选项。)

我附上我的本体论:

<?xml version="1.0"?> 


<!DOCTYPE Ontology [ 
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > 
<!ENTITY xml "http://www.w3.org/XML/1998/namespace" > 
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > 
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
]> 


<Ontology xmlns="http://www.w3.org/2002/07/owl#" 
xml:base="http://www.semanticweb.org/ирина/ontologies/2015/2/untitled-ontology-9" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:xml="http://www.w3.org/XML/1998/namespace" 
ontologyIRI="http://www.semanticweb.org/ирина/ontologies/2015/2/untitled-ontology-9"> 
<Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/> 
<Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/> 
<Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/> 
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/> 
<Declaration> 
    <Class IRI="#Car"/> 
</Declaration> 
<Declaration> 
    <Class IRI="#Engine"/> 
</Declaration> 
<Declaration> 
    <Class IRI="#Rod"/> 
</Declaration> 
<Declaration> 
    <ObjectProperty IRI="#isPartOf"/> 
</Declaration> 
<SubClassOf> 
    <Class IRI="#Engine"/> 
    <ObjectSomeValuesFrom> 
     <ObjectProperty IRI="#isPartOf"/> 
     <Class IRI="#Car"/> 
    </ObjectSomeValuesFrom> 
</SubClassOf> 
<SubClassOf> 
    <Class IRI="#Rod"/> 
    <ObjectSomeValuesFrom> 
     <ObjectProperty IRI="#isPartOf"/> 
     <Class IRI="#Engine"/> 
    </ObjectSomeValuesFrom> 
</SubClassOf> 
<TransitiveObjectProperty> 
    <ObjectProperty IRI="#isPartOf"/> 
</TransitiveObjectProperty> 
</Ontology> 



<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net --> 

回答

1

我希望门徒新认识到这一点DL为S在DL-指标

它承认传递并标记为+。总体表现力是ALE +(好吧,EL +可能会更好),这是正确的,因为它还没有看到否定。

并推断“任何杆是某辆车的一部分”,但它似乎只是忽略了传递性公理。问题是为什么。

答案是双重的。目前还不清楚你是怎么想到这里,我假定你想看到isPartOf some Car在匿名子类区域Rod。 Protege没有这样做,因为通常这种方法需要在类名和任意表达式之间进行分类,并且有无数个包含任何单个类的表达式。

另一方面,Protege 确实考虑到传递性公理。如果你添加一个名为类PartOfCar如下定义 <EquivalentClasses> <Class IRI="#PartOfCar"/> <ObjectSomeValuesFrom> <ObjectProperty IRI="#isPartOf"/> <Class IRI="#Car"/> </ObjectSomeValuesFrom> </EquivalentClasses>

然后门生都将EngineRod分类为PartOfCar一个子类。

+0

谢谢!确实如此。这解决了这个问题。 – Stanislav 2015-03-15 18:48:14