我有一个班级,人。有一个数据类型属性专业,其人的值为 {“Composer”,“Singer”,“Conductor”} 。我有另一个名为 Piece 的类,以及一个对象属性 composedBy 。我希望 composedBy 的范围都是专业人士 专业 “作曲家”?我如何在OWL中完成此操作,如何使用Protégé表达OWL?
答案 0 :(得分:1)
您的第一个描述并不难以表达为DL公理(尽管如此,我将使用名称 hasProfession 与其他属性名称更加一致, composedBy )。
有一个数据类型属性Profession,其Person值为{“Composer”,“Singer”,“Conductor”}。
人⊑仅限职业{“作曲家”,“歌手”,“指挥”}
第二个也不是太棘手:
我有另一个叫做Piece的类,一个对象属性composBy。我希望编辑范围成为所有职业都是“作曲家”的人吗?
现在,你需要在这里更清楚。你可能意味着 composedBy 的范围是“所有职业都是'作曲家'的人”,即任何是值的 composedBy 语句是Peron,其职业是“作曲家”。但是,你提到了另一个类,Piece,所以我认为你要问的是如果一个 Piece 是 compositionBy 的东西,那么那个东西就是一个人职业是'作曲家'。那就是这个公理:
Piece⊑⊑composedBy。(人⊓hasProfession value“Composer”)
如果要复制和粘贴本体,请按以下步骤:
<rdf:RDF
xmlns="http://stackoverflow.com/q/20920232/1281433/composers#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://stackoverflow.com/q/20920232/1281433/composers"/>
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Piece">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#composedBy"/>
</owl:onProperty>
<owl:allValuesFrom>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Person"/>
<owl:Restriction>
<owl:onProperty>
<owl:DatatypeProperty rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#hasProfession"/>
</owl:onProperty>
<owl:hasValue>Composer</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Person">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://stackoverflow.com/q/20920232/1281433/composers#hasProfession"/>
<owl:allValuesFrom>
<rdfs:Datatype>
<owl:oneOf>
<rdf:List>
<rdf:first>Composer</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first>Conductor</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first>Singer</rdf:first>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</owl:oneOf>
</rdfs:Datatype>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
答案 1 :(得分:0)
将composedBy
的范围定义为Person and some Profession {Composer}
范围说的是,compositionBy的值将是一个Person,它将拥有一个属性Profession,其值只有Composer - 它是一个HasValue限制。