1

I'm trying to model some lexical data using OWL 2 (DL, using Protege). My main class is "Lemma", which has a number of axioms (using Manchester syntax):

Every Lemma hasLanguage some Language. 
Every Lemma hasEtymology some Etymology. 
Every Lemma hasMorphology some Morphology.

etc.

I also have a class VariantLemma, which is basically a variant spelling of the original lemma, but it will always have the same language and etymology as its parent Lemma, but can have different morphology. I originally modelled it as being equivalent to:

Lemma and (isVariantOf some Lemma)

but how can I state that it'll have the same values as its parent lemma for all axioms except Morphology? Can I use property chains in some way?

Thanks for any advice!

user2497748
  • 171
  • 1
  • 1
  • 3

1 Answers1

2

You can do this. In the situation that you have the

         isVariantOf             hasLanguage
lemma2 ---------------> lemma1 ---------------> language1

then you want to infer an additional propertty:

         hasLanguage
lemma2 ---------------> language1

Since you can find a path in the first graph from lemma2 to language1, you assert that the second graph must exist by the following subproperty chain axiom. You need to do the same for the other properties, too, of course.

isVariantOf o hasLanguage SubPropertyOf hasLanguage

When you have an OWL reasoner and these axioms, then if you have assertions that about lem1, and that lem2 isVariantOf lem1, you'll see the inferred properties for lem2. Here's a lem1 and its properties in Protégé:

object properties about lem1

With the Pellet reasoner attached, the hasEtymology and hasLanguage properties are inferred for lem2 (shown with a yellow background):

inferred properties about lem2

Here's the OWL ontology, if you're interested:

<rdf:RDF
    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="http://www.example.org/lemmata#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://www.example.org/lemmata"/>
  <owl:Class rdf:about="http://www.example.org/lemmata#Morphology"/>
  <owl:Class rdf:about="http://www.example.org/lemmata#VariantLemma">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="http://www.example.org/lemmata#Lemma"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#isVariantOf"/>
            </owl:onProperty>
            <owl:someValuesFrom rdf:resource="http://www.example.org/lemmata#Lemma"/>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:about="http://www.example.org/lemmata#Language"/>
  <owl:Class rdf:about="http://www.example.org/lemmata#Etymology"/>
  <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#hasEtymology">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <rdf:Description>
        <owl:inverseOf rdf:resource="http://www.example.org/lemmata#isVariantOf"/>
      </rdf:Description>
      <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#hasEtymology"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#hasLanguage">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <rdf:Description>
        <owl:inverseOf rdf:resource="http://www.example.org/lemmata#isVariantOf"/>
      </rdf:Description>
      <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#hasLanguage"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="http://www.example.org/lemmata#hasMorphology"/>
</rdf:RDF>
Joshua Taylor
  • 84,998
  • 9
  • 154
  • 353