How to infer a property depending on a comparison between two (transitive) properties on two individuals?

50 views Asked by At

I am modeling an ontology that shall be used to decide whether a person (a legal subject) is legally capable of accepting a contract. To do so, I model the contract itself, the jurisdiction it is under, the age of full legal capacity in a jurisdiction, and the legal subject.

One (simplifeid) example is this:

    <owl:Class rdf:about="#Jurisdiction"/>

    <owl:Class rdf:about="#LegalStandard">
        <rdfs:comment>A legal standard, or contract</rdfs:comment>
    </owl:Class>

    <owl:Class rdf:about="#LegalSubject"/>

    <owl:ObjectProperty rdf:about="#jurisdiction">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource=#LegalStandard"/>
        <rdfs:range rdf:resource="#Jurisdiction"/>
        <rdfs:comment>Jurisdiction this legal standard falsl under</rdfs:comment>
    </owl:ObjectProperty>

    <owl:ObjectProperty rdf:about="#livesIn">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource=#LegalSubject"/>
        <rdfs:range rdf:resource="#Jurisdiction"/>
        <rdfs:comment>Jurisdiction this legal subject lives in</rdfs:comment>
    </owl:ObjectProperty>

    <owl:DatatypeProperty rdf:about="#legalAge">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="#Jurisdiction"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#positiveInteger"/>
        <rdfs:comment>Age at which a person reaches the age of majority in a jurisdiction</rdfs:comment>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="#age">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="#LegalSubject"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#positiveInteger"/>
        <rdfs:comment>Current age of an individual person</rdfs:comment>
    </owl:DatatypeProperty>

    <owl:NamedIndividual rdf:about="#Germany">
        <rdf:type rdf:resource="#Jurisdiction"/>
        <ex:legalAge rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">18</ex:legalAge>
    </owl:NamedIndividual>

    <owl:NamedIndividual rdf:about="#Terms">
        <rdf:type rdf:resource="#LegalStandard"/>
        <ex:jurisdiction rdf:resource="#Germany"/>
    </owl:NamedIndividual>

    <owl:NamedIndividual rdf:about="#Fritzchen">
        <rdf:type rdf:resource="#LegalSubject"/>
        <ex:age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">25</ex:age>
        <ex:livesIn rdf:resource="#Germany"/>
    </owl>

In this model, I know that:

  • The Terms are under the jurisdiction of Germany
  • The legalAge in Germany is 18
  • The legal subject Fritzchen is 25 years old
  • The legal subject Fritzchen lives in Germany

How do I ask whether Fritzchen is old enough to accept the terms of the contract?

I could, of course, re-model and make a class PersonCapableOfAcceptingTerms, but let's assume this is not feasible because the ontology will ultimately grow very huge.

My current tendency is that I will need SWRL for this, and if this is the case, I'd be happy about an example of how to do this with SWRL.

0

There are 0 answers