It depends how you model your facts. When you say "X was seen driving a truck", does it mean that X actually drives a truck? Let me try to model your situation, in Turtle syntax:
:Vehicle a owl:Class . # The class of all vehicles
:Bus a owl:Class; # The class of all buses
rdfs:subClassOf :Vehicle . # Buses are vehicles
:Truck a owl:Class; # The class of all trucks
rdfs:subClassOf :Vehicle; # Trucks are vehicles
owl:disjointWith :Bus . # Trucks are not buses and vice versa
:drives a owl:ObjectProperty . # The relationship between persons and the vehicles they drive
:BusDriver a owl:Class;
rdfs:subClassOf [
a owl:Restriction;
owl:onProperty :drives;
owl:someValuesFrom :Bus # A bus driver is someone who drives a bus
] .
:X a :BusDriver, [ # X is a bus driver
a owl:Restriction;
owl:onProperty :drives;
owl:allValuesFrom :Bus # X only drives buses
] .
Now, if it is asserted that X drives a truck like this:
:X :drives [ a :Truck ] .
then the resulting knowledge base with the ontology is inconsistent and an OWL reasoner can detect this automatically.
answered
30 Dec '12, 02:04
Antoine Zimm... ♦
8.3k●5●14
accept rate:
30%