<?xml version="1.0"?>
<rdf:RDF
    xmlns="http://www.owl-ontologies.com/generations.owl#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
  xml:base="http://www.owl-ontologies.com/generations.owl">
  <owl:Ontology rdf:about="">
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >An example ontology created by Matthew Horridge</owl:versionInfo>
  </owl:Ontology>
  <owl:Class rdf:ID="Parent">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:ID="Person"/>
          <owl:Restriction>
            <owl:someValuesFrom rdf:resource="#Person"/>
            <owl:onProperty>
              <owl:ObjectProperty rdf:ID="hasChild"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="GrandFather">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasChild"/>
            </owl:onProperty>
            <owl:someValuesFrom>
              <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                  <owl:Class rdf:about="#Person"/>
                  <owl:Restriction>
                    <owl:someValuesFrom rdf:resource="#Person"/>
                    <owl:onProperty>
                      <owl:ObjectProperty rdf:about="#hasChild"/>
                    </owl:onProperty>
                  </owl:Restriction>
                </owl:intersectionOf>
              </owl:Class>
            </owl:someValuesFrom>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:ID="hasSex"/>
            </owl:onProperty>
            <owl:hasValue>
              <Sex rdf:ID="MaleSex"/>
            </owl:hasValue>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="GrandParent">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasChild"/>
            </owl:onProperty>
            <owl:someValuesFrom>
              <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                  <owl:Class rdf:about="#Person"/>
                  <owl:Restriction>
                    <owl:onProperty>
                      <owl:ObjectProperty rdf:about="#hasChild"/>
                    </owl:onProperty>
                    <owl:someValuesFrom rdf:resource="#Person"/>
                  </owl:Restriction>
                </owl:intersectionOf>
              </owl:Class>
            </owl:someValuesFrom>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="GrandMother">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasChild"/>
            </owl:onProperty>
            <owl:someValuesFrom>
              <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                  <owl:Class rdf:about="#Person"/>
                  <owl:Restriction>
                    <owl:someValuesFrom rdf:resource="#Person"/>
                    <owl:onProperty>
                      <owl:ObjectProperty rdf:about="#hasChild"/>
                    </owl:onProperty>
                  </owl:Restriction>
                </owl:intersectionOf>
              </owl:Class>
            </owl:someValuesFrom>
          </owl:Restriction>
          <owl:Restriction>
            <owl:hasValue>
              <Sex rdf:ID="FemaleSex"/>
            </owl:hasValue>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Son">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:ID="hasParent"/>
            </owl:onProperty>
            <owl:someValuesFrom rdf:resource="#Person"/>
          </owl:Restriction>
          <owl:Restriction>
            <owl:hasValue rdf:resource="#MaleSex"/>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Father">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
            <owl:hasValue rdf:resource="#MaleSex"/>
          </owl:Restriction>
          <owl:Restriction>
            <owl:someValuesFrom rdf:resource="#Person"/>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasChild"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Man">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
            <owl:hasValue rdf:resource="#MaleSex"/>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Woman">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
            <owl:hasValue rdf:resource="#FemaleSex"/>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Sister">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:someValuesFrom rdf:resource="#Person"/>
            <owl:onProperty>
              <owl:SymmetricProperty rdf:ID="hasSibling"/>
            </owl:onProperty>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
            <owl:hasValue rdf:resource="#FemaleSex"/>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Sibling">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:someValuesFrom rdf:resource="#Person"/>
            <owl:onProperty>
              <owl:SymmetricProperty rdf:about="#hasSibling"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="OffSpring">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:someValuesFrom rdf:resource="#Person"/>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasParent"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Sex">
    <owl:equivalentClass>
      <owl:Class>
        <owl:oneOf rdf:parseType="Collection">
          <Sex rdf:about="#MaleSex"/>
          <Sex rdf:about="#FemaleSex"/>
        </owl:oneOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Female">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:hasValue rdf:resource="#FemaleSex"/>
        <owl:onProperty>
          <owl:FunctionalProperty rdf:about="#hasSex"/>
        </owl:onProperty>
      </owl:Restriction>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Brother">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
              <owl:Restriction>
                <owl:onProperty>
                  <owl:SymmetricProperty rdf:about="#hasSibling"/>
                </owl:onProperty>
                <owl:someValuesFrom rdf:resource="#Person"/>
              </owl:Restriction>
              <owl:Restriction>
                <owl:hasValue rdf:resource="#MaleSex"/>
                <owl:onProperty>
                  <owl:FunctionalProperty rdf:about="#hasSex"/>
                </owl:onProperty>
              </owl:Restriction>
            </owl:intersectionOf>
          </owl:Class>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Mother">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Person"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasChild"/>
            </owl:onProperty>
            <owl:someValuesFrom rdf:resource="#Person"/>
          </owl:Restriction>
          <owl:Restriction>
            <owl:hasValue rdf:resource="#FemaleSex"/>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Male">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:hasValue rdf:resource="#MaleSex"/>
        <owl:onProperty>
          <owl:FunctionalProperty rdf:about="#hasSex"/>
        </owl:onProperty>
      </owl:Restriction>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Daughter">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="#hasParent"/>
            </owl:onProperty>
            <owl:someValuesFrom rdf:resource="#Person"/>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty>
              <owl:FunctionalProperty rdf:about="#hasSex"/>
            </owl:onProperty>
            <owl:hasValue rdf:resource="#FemaleSex"/>
          </owl:Restriction>
          <owl:Class rdf:about="#Person"/>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:ObjectProperty rdf:about="#hasParent">
    <owl:inverseOf>
      <owl:ObjectProperty rdf:about="#hasChild"/>
    </owl:inverseOf>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasChild">
    <owl:inverseOf rdf:resource="#hasParent"/>
  </owl:ObjectProperty>
  <owl:SymmetricProperty rdf:about="#hasSibling">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/>
  </owl:SymmetricProperty>
  <owl:FunctionalProperty rdf:about="#hasSex">
    <rdfs:range rdf:resource="#Sex"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/>
  </owl:FunctionalProperty>
  <Person rdf:ID="Matthew">
    <owl:sameAs>
      <Person rdf:ID="Matt">
        <hasParent>
          <Person rdf:ID="Peter">
            <hasSex rdf:resource="#MaleSex"/>
            <hasChild rdf:resource="#Matt"/>
            <hasParent>
              <Person rdf:ID="William">
                <hasSex rdf:resource="#MaleSex"/>
                <hasChild rdf:resource="#Peter"/>
              </Person>
            </hasParent>
          </Person>
        </hasParent>
        <hasSex rdf:resource="#MaleSex"/>
        <hasSibling>
          <Person rdf:ID="Gemma">
            <hasSex rdf:resource="#FemaleSex"/>
          </Person>
        </hasSibling>
        <owl:sameAs rdf:resource="#Matthew"/>
      </Person>
    </owl:sameAs>
  </Person>
</rdf:RDF>

<!-- Created with Protege (with OWL Plugin 1.3, Build 206)  http://protege.stanford.edu -->
