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)...
还有其他解决办法吗?
提前谢谢你!
答案 0 :(得分:0)
我会尝试给你一个可能的部分答案。 首先,非常重要的是,FOAF ontology是纯RDF而不是OWL。
FOAF本体不包含类rdfs:subClassOf
的{{1}}公理,除了(在曼彻斯特OWL语法中)
foaf:Person
如果您的person类是Class: Person
SubClassOf: Agent, SpatialThing
的子类,那么您通过推断得到的唯一内容就是您的类也是foaf:Person
和foaf: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 .
完成。没有继承,或者是相同的映射,或者其他任何必要的东西。