如何使用“属性为p的值为v的所有xs”作为对象属性范围?

时间:2014-01-04 11:14:14

标签: semantic-web owl ontology protege description-logic

我有一个班级,。有一个数据类型属性专业,其的值为 {“Composer”,“Singer”,“Conductor”} 。我有另一个名为 Piece 的类,以及一个对象属性 composedBy 。我希望 composedBy 的范围都是专业人士 专业 “作曲家”?我如何在OWL中完成此操作,如何使用Protégé表达OWL?

2 个答案:

答案 0 :(得分:1)

您的第一个描述并不难以表达为DL公理(尽管如此,我将使用名称​​ hasProfession 与其他属性名称更加一致, composedBy )。

  

有一个数据类型属性Profession,其Person值为{“Composer”,“Singer”,“Conductor”}。

  

人⊑仅限职业{“作曲家”,“歌手”,“指挥”}

enter image description here

第二个也不是太棘手:

  

我有另一个叫做Piece的类,一个对象属性composBy。我希望编辑范围成为所有职业都是“作曲家”的人吗?

现在,你需要在这里更清楚。你可能意味着 composedBy 范围是“所有职业都是'作曲家'的人”,即任何是值的 composedBy 语句是Peron,其职业是“作曲家”。但是,你提到了另一个类,Piece,所以我认为你要问的是如果一个 Piece compositionBy 的东西,那么那个东西就是一个人职业是'作曲家'。那就是这个公理:

  

Piece⊑⊑composedBy。(人⊓hasProfession value“Composer”)

enter image description here

如果要复制和粘贴本体,请按以下步骤:

<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限制。