您可以按照以下步骤操作:
(1) 创建类Class1 和Class2。
<owl:Class rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#Class1"/>
<owl:Class rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#Class2"/>
(2) 定义一个对象属性,比如related,域为Class1,范围为Class2:
<owl:ObjectProperty rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#related">
<rdfs:domain rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#Class1"/>
<rdfs:range rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#Class2"/>
</owl:ObjectProperty>
说明
这表明,如果个体 a 通过对象属性 related 与个体 b 相关联,则 a 将被假定为 Class1 类型,b 将被假定为 Class2 类型.
(3) 定义另一个对象属性,比如inverseRelated,它是related的倒数:
<owl:ObjectProperty rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#inverseRelated">
<owl:inverseOf rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#related"/>
</owl:ObjectProperty>
说明
这表明,如果个体 a 通过对象属性 inverseRelated 与个体 b 相关联,则将假定 a 的类型为 Class2,并且假定 b 的类型为 Class1 .
(4) 通过inverseRelated 对象属性定义2 个个体,例如individual1 和individual2 和individual1 到individual2:
<owl:NamedIndividual rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#individual1">
<DomainRangeExample:inverseRelated rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#individual2"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#individual2"/>
(5) 如果您现在对您的本体运行推理器(即在 Protege 中),您将看到individual1 被推断为Class2 类型,而individual2 为Class1 类型。