uml与RDF和OWL的组合关系
我是RDF和OWL本体论的初学者 我正在尝试将此图转换为OWL语法uml与RDF和OWL的组合关系,uml,rdf,owl,Uml,Rdf,Owl,我是RDF和OWL本体论的初学者 我正在尝试将此图转换为OWL语法 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:dc="http://purl.org/dc/elements/
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<!-- OWL Class Definition - Robot Position -->
<owl:Class rdf:ID="house" />
<owl:Class rdf:ID="room" />
<owl:Class rdf:ID="kitchen" />
<owl:Class rdf:ID="garden" />
<owl:Class rdf:ID="table" />
<owl:Class rdf:ID="chair" />
<owl:ObjectProperty rdf:ID="composedBy">
<rdfs:domain rdf:resource="#house"/>
<rdfs:rang rdf:resource="#room" >
</owl:ObjectProperty>
</rdf:RDF>
我不知道该怎么做才能使这个被多次使用的组合关系。
我在考虑把范围扩大到收藏类型
(房子)---composedBy(房间、厨房、花园)
但是,我想用同样的关系
(厨房)---comoposedBy-----(桌子、椅子)
验证程序出错,因为我两次使用composedBy作为ID。(我现在把它拆了)
如何正确翻译此图表
:)事实上,这样一个
composedBy
属性的范围应该是一个并集
由于UML类模型中有两种不同的组合,因此可能必须定义两种不同的OWL属性,如houseComposedBy
和kitchenComposedBy
正如您在评论中所建议的,原则上,还可以使用XML名称空间为这些不同的composedBy
OWL属性获取不同的名称(如限定名称house:composedBy
和kitchen:composedBy
)。事实上,这对应于UML属性,这些属性总是在它们的(域)类定义的名称空间中。因此,您必须声明与属于composedBy
属性域的类一样多的名称空间
编辑:我将尝试总结约书亚·泰勒和我自己的两个答案
AllValues。除了这些allValuesFrom
restrictions(对翻译至关重要)之外,我们还可以定义与UML类模型中定义的多重性约束相对应的基数约束(如果有)
如果你想说房子必须有(或至少一个)厨房,必须有(或至少一个)房间,必须有(或至少一个)花园,那么unionOf并不能真正解决这个问题。与其担心composition属性的范围,我认为如果您有一个更通用的component属性,并通过使用存在性限制来表达必须保持的不同关系,可能会更有帮助。例如,你可以这么说 豪斯&斯克泰克酒店=1.厨房部分
豪斯&斯克泰克酒店;≥2部分房间
豪斯&斯克泰克酒店;∃哈斯帕特花园酒店 说一所房子有一个厨房、至少两个房间和至少一个花园。类似地,你可以说有一张桌子和一把椅子 厨房及厨房;∃hasPart.椅子
厨房及厨房;∃hasPart.桌子 在Protégé中,这看起来像: Turtle和RDF/XML中的RDF序列化是:
@前缀:。
@前缀rdfs:。
@前缀owl:。
@前缀xsd:。
@前缀rdf:。
猫头鹰:本体论。
:hasPart a owl:ObjectProperty。
:表a猫头鹰:类。
:a房间猫头鹰:上课。
:花园猫头鹰:上课。
:坐猫头鹰:上课。
:家猫头鹰:班级;
rdfs:子类[a owl:限制;
owl:minQualifiedCardinality“2”^^xsd:nonNegativeInteger;
猫头鹰:onClass:房间;
owl:onProperty:hasPart
] ;
rdfs:子类[a owl:限制;
owl:onProperty:hasPart;
猫头鹰:一些来自花园的价值
] ;
rdfs:子类[a owl:限制;
猫头鹰:onClass:厨房;
owl:onProperty:hasPart;
owl:qualifiedCardinality“1”^^xsd:nonNegativeInteger
] .
:厨房猫头鹰:班级;
rdfs:子类[a owl:限制;
owl:onProperty:hasPart;
owl:表中的某些值
] ;
rdfs:子类[a owl:限制;
owl:onProperty:hasPart;
猫头鹰:椅子上的一些价值
] .
2.
1.
我可以使用名称空间吗?例如,house:ComposedBy&kitchen:ComposedBy??所以我必须声明一些实体??谁没有在评论中解释就否决了我的答案?同一个人删除了他被否决的答案?被否决的不是我,但这里被否决的一种可能性是,虽然财产的范围