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
Termsare under the jurisdiction ofGermany - The
legalAgeinGermanyis18 - The legal subject
Fritzchenis 25 years old - The legal subject
Fritzchenlives inGermany
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.