本体之间的属性继承(没有SubPropertyOf)

时间:2016-08-26 12:39:30

标签: inheritance owl

I,

我需要一些关于本体之间属性继承的精确度。

我想创建一个本体,它将尽可能多地使用标准本体中定义的属性(例如:foaf,vcard,bio等......)。我只是不想重新创建一个类的属性,如果它已经存在于另一个(或许多其他)智能定义的本体中。

我们举个例子。

我必须描述一个人。我的本体中的“人”有一些已经在foaf中描述的标准属性。但是,就我而言,它还有一些特定于我的业务的属性(假设我在“客户关系”域中工作),以及一些特定于我的组织的属性。

我已经确定了一些解决方案:

  • 通过owl:SubClassOf使用“多重”继承,即使语义相同(SubClassOf表明语义接近但不完全相同)子类关系为属于类提供了必要的条件“。但我的Person类与foaf具有相同的语义:Person,我只是想了解更多信息。)

  • 使用owl:SameAs:这个属性是否允许类继承另一个类的属性?

  • 使用rdf:type(例如:myontology:Person for for rdf:type owl:class,foaf:Person,anotherontology:Person)...

还有其他解决办法吗?

提前谢谢你!

2 个答案:

答案 0 :(得分:0)

我会尝试给你一个可能的部分答案。 首先,非常重要的是,FOAF ontology是纯RDF而不是OWL。

FOAF本体不包含类rdfs:subClassOf的{​​{1}}公理,除了(在曼彻斯特OWL语法中)

foaf:Person

如果您的person类是Class: Person SubClassOf: Agent, SpatialThing 的子类,那么您通过推断得到的唯一内容就是您的类也是foaf:Personfoaf:Agent的子类。

您在documentation中看到的属性列表只是其域为foaf:SpatialThing的属性。例如。对于foaf:Person,FOAF本体包含公理

foaf:surname

这与subClass公理说的不一样,即每个人的姓氏都是一个字符串值(用奇怪的RDF三元表示法):

foaf:surname rdfs:domain foaf:Person

相反,该域名仅仅是语法糖,因为它表示"所有有姓氏的人都是#34;。

foaf:surname rdfs:subClassOf _:x . _:x rdf:type owl:Restriction . _:x owl:onProperty foaf:surname . _:x owl:someValuesFrom xsd:string . 用于表示两个人表示相同的真实世界实体,因此,它不用于类。在RDFS中,您可以在两个方向上使用owl:sameAs,OWL有一个快捷方式,称为rdfs:subClassOf

owl:equivalentClass用于向个人主张个人。

答案 1 :(得分:0)

除非我完全误解你的情况,否则你不需要做任何事情"困难"为了这。只需使用标准的FOAF Person类,并根据需要添加其他属性。例如,您可以像这样定义自己的自定义属性:

ex:myCustomerRelationProperty a owl:ObjectProperty ;
                              rdfs:domain foaf:Person .

然后有一个人的数据:

ex:person0001 a foaf:Person ;
              foaf:surname "Doe";
              foaf:firstName "John"; 
              .... // etc other FOAF properties
              ex:myCustomerRelationProperty ex:someValue .

完成。没有继承,或者是相同的映射,或者其他任何必要的东西。