An ontology about people is available in RDF/XML. It is also shown below in abstract syntax format.
Namespace(a = <http://owl.man.ac.uk/2005/sssw/people#>)
Ontology(
ObjectProperty(a:drives)
ObjectProperty(a:eaten_by)
ObjectProperty(a:eats
inverseOf(a:eaten_by)
domain(a:animal))
ObjectProperty(a:has_child)
ObjectProperty(a:has_father
range(a:man))
ObjectProperty(a:has_mother
range(a:woman))
ObjectProperty(a:has_parent)
ObjectProperty(a:has_part
inverseOf(a:part_of))
ObjectProperty(a:has_pet
domain(a:person)
range(a:animal))
ObjectProperty(a:is_pet_of
inverseOf(a:has_pet))
ObjectProperty(a:likes)
ObjectProperty(a:part_of)
ObjectProperty(a:reads
range(a:publication))
ObjectProperty(a:works_for)
Class(a:adult partial
annotation(rdfs:comment "Things that are adult.")
Class(a:animal partial
restriction(a:eats someValuesFrom (owl:Thing)))
Class(a:animal_lover complete
intersectionOf(restriction(a:has_pet minCardinality(3)) a:person))
Class(a:animal_lover partial
annotation(rdfs:comment "Someone who really likes animals"))
Class(a:bicycle partial
a:vehicle)
Class(a:bicycle partial
annotation(rdfs:comment "A human propelled vehicle, with two
wheels"))
Class(a:bone partial)
Class(a:brain partial)
Class(a:broadsheet partial
annotation(rdfs:comment "A newspaper. Broadsheets are usually
considered to be more \"high-brow\" than tabloids."))
a:newspaper)
Class(a:bus partial
a:vehicle)
Class(a:bus_company partial
a:company)
Class(a:bus_driver complete
annotation(rdfs:comment "Someone who drives a bus.")
intersectionOf(restriction(a:drives someValuesFrom (a:bus))
a:person))
Class(a:car partial
a:vehicle)
Class(a:cat partial
a:animal)
Class(a:cat_liker complete
intersectionOf(a:person restriction(a:likes someValuesFrom (a:cat))))
Class(a:cat_owner complete
intersectionOf(a:person restriction(a:has_pet someValuesFrom (a:cat))))
Class(a:company partial)
Class(a:cow partial
annotation(rdfs:comment "Cows are naturally vegetarians.")
a:vegetarian)
Class(a:dog partial
restriction(a:eats someValuesFrom (a:bone)))
Class(a:dog_liker complete
intersectionOf(restriction(a:likes someValuesFrom (a:dog)) a:person))
Class(a:dog_owner complete
intersectionOf(a:person restriction(a:has_pet someValuesFrom (a:dog))))
Class(a:driver complete
intersectionOf(restriction(a:drives someValuesFrom (a:vehicle)) a:person))
Class(a:driver partial
a:adult)
Class(a:duck partial a:animal)
Class(a:elderly partial a:adult)
Class(a:female partial)
Class(a:giraffe partial
a:animal
restriction(a:eats allValuesFrom (a:leaf)))
Class(a:grass partial
a:plant)
Class(a:grownup complete
intersectionOf(a:person a:adult))
Class(a:haulage_company partial
a:company)
Class(a:haulage_truck_driver complete
intersectionOf(restriction(a:drives someValuesFrom (a:truck)) a:person
restriction(a:works_for someValuesFrom
(restriction(a:part_of someValuesFrom (a:haulage_company))))))
Class(a:haulage_worker complete
restriction(a:works_for someValuesFrom
(unionOf(restriction(a:part_of someValuesFrom (a:haulage_company))
a:haulage_company))))
Class(a:kid complete
intersectionOf(a:person a:young))
Class(a:leaf partial
restriction(a:part_of someValuesFrom (a:tree)))
Class(a:lorry partial
a:vehicle)
Class(a:lorry_driver complete
intersectionOf(restriction(a:drives someValuesFrom (a:lorry)) a:person))
Class(a:mad_cow complete
annotation(rdfs:comment "A mad cow is a cow that has been eating the
brains of sheep.")
intersectionOf(restriction(a:eats someValuesFrom
(intersectionOf(restriction(a:part_of someValuesFrom (a:sheep)) a:brain))) a:cow))
Class(a:magazine partial
a:publication)
Class(a:male partial
annotation(rdfs:comment "The class of all male things."))
Class(a:man complete
intersectionOf(a:male a:person a:adult))
Class(a:newspaper partial
annotation(rdfs:comment "All newspapers are either broadsheets or tabloids.")
a:publication
unionOf(a:tabloid a:broadsheet))
Class(a:old_lady complete
intersectionOf(a:female a:person a:elderly))
Class(a:old_lady partial
intersectionOf(restriction(a:has_pet allValuesFrom (a:cat))
restriction(a:has_pet someValuesFrom (a:animal))))
Class(a:person partial
a:animal)
Class(a:pet complete
restriction(a:is_pet_of someValuesFrom (owl:Thing)))
Class(a:pet_owner complete
intersectionOf(restriction(a:has_pet someValuesFrom (a:animal)) a:person))
Class(a:plant partial)
Class(a:publication partial)
Class(a:quality_broadsheet partial a:broadsheet)
Class(a:red_top partial a:tabloid)
Class(a:sheep partial
a:animal
restriction(a:eats allValuesFrom (a:grass)))
Class(a:tabloid partial
annotation(rdfs:comment "A newspaper. Tabloids are usually thought of
as more "down-market" than broadsheets.")
a:newspaper)
Class(a:tiger partial
a:animal)
Class(a:tree partial
a:plant)
Class(a:truck partial
a:vehicle)
Class(a:van partial
a:vehicle)
Class(a:van_driver complete
intersectionOf(restriction(a:drives someValuesFrom (a:van)) a:person))
Class(a:vegetarian complete
annotation(rdfs:comment "A vegetarian is defined as an animal that
eats no other animals, or parts of animals.")
intersectionOf(a:animal
restriction(a:eats allValuesFrom (complementOf(restriction(a:part_of someValuesFrom (a:animal)))))
restriction(a:eats allValuesFrom (complementOf(a:animal)))))
Class(a:vehicle partial)
Class(a:white_thing partial)
Class(a:white_van_man complete
annotation(rdfs:comment "A white van man is a man who drives a white van.")
intersectionOf(restriction(a:drives someValuesFrom (intersectionOf(a:van a:white_thing))) a:man))
Class(a:white_van_man partial
restriction(a:reads allValuesFrom (a:tabloid)))
Class(a:woman complete
intersectionOf(a:female a:person a:adult))
Class(a:young partial)
Class(owl:Thing partial)
AnnotationProperty(rdfs:comment)
AnnotationProperty(rdfs:label)
Individual(a:Daily_Mirror annotation(rdfs:comment "The paper read by Mick (a white van man).")
type(owl:Thing))
Individual(a:Dewey type(a:duck))
Individual(a:Fido type(a:dog))
Individual(a:Flossie type(a:cow))
Individual(a:Fluffy type(a:tiger))
Individual(a:Fred type(a:person)
value(a:has_pet a:Tibbs))
Individual(a:Huey type(a:duck))
Individual(a:Joe type(a:person)
type(restriction(a:has_pet maxCardinality(1)))
value(a:has_pet a:Fido))
Individual(a:Kevin type(a:person)
value(a:has_pet a:Fluffy)
value(a:has_pet a:Flossie))
Individual(a:Louie type(a:duck))
Individual(a:Mick
annotation(rdfs:comment "Mick is male and drives a white van. Due to
the axiom concerning drivers, we know that Mick must be a man, and
is therefore a white van man. The axiom about the reading material
of a white van man then allows us to infer things about the Daily
Mirror.")
type(a:male)
value(a:reads a:Daily_Mirror)
value(a:drives a:Q123_ABC))
Individual(a:Minnie type(a:female) type(a:elderly)
value(a:has_pet a:Tom))
Individual(a:Pete type(owl:Thing))
Individual(a:Q123_ABC
annotation(rdfs:comment "A white van")
type(a:van)
type(a:white_thing))
Individual(a:Rex type(a:dog)
value(a:is_pet_of a:Mick))
Individual(a:Spike type(owl:Thing)
value(a:is_pet_of a:Pete))
Individual(a:The_Guardian type(a:broadsheet))
Individual(a:The_Sun type(a:tabloid))
Individual(a:The_Times type(a:broadsheet))
Individual(a:Tibbs type(a:cat))
Individual(a:Tom type(owl:Thing))
Individual(a:Walt type(a:person)
value(a:has_pet a:Huey)
value(a:has_pet a:Louie)
value(a:has_pet a:Dewey))
AllDifferent(a:Daily_Mirror a:Dewey a:Fido a:Flossie a:Fluffy a:Fred
a:Huey a:Joe a:Kevin a:Louie a:Mick a:Minnie a:Pete a:Q123_ABC
a:Rex a:Spike a:The_Guardian a:The_Sun a:The_Times a:Tibbs
a:Tom a:Walt)
DisjointClasses(unionOf(a:animal restriction(a:part_of someValuesFrom (a:animal)))
unionOf(a:plant restriction(a:part_of someValuesFrom (a:plant))))
DisjointClasses(a:tabloid a:broadsheet)
DisjointClasses(a:adult a:young)
DisjointClasses(a:cat a:dog)
SubPropertyOf(a:has_mother a:has_parent)
SubPropertyOf(a:has_father a:has_parent)
SubPropertyOf(a:has_pet a:likes)
)
Class(a:bus_driver complete intersectionOf(a:person restriction(a:drives someValuesFrom (a:bus)))) Class(a:driver complete intersectionOf(a:person restriction(a:drives someValuesFrom (a:vehicle)))) Class(a:bus partial a:vehicle)
The subclass is inferred due to subclasses being used in existential quantification.
Class(a:cat_owner complete intersectionOf(a:person restriction(a:has_pet someValuesFrom (a:cat)))) SubPropertyOf(a:has_pet a:likes) Class(a:cat_liker complete intersectionOf(a:person restriction(a:likes someValuesFrom (a:cat))))
The subclass is inferred due to a subproperty assertion.
(Note: A grown up is an adult person)
Class(a:driver complete intersectionOf(a:person restriction(a:drives someValuesFrom (a:vehicle)))) Class(a:driver partial a:adult) Class(a:grownup complete intersectionOf(a:adult a:person))
An example of axioms being used to assert additional necessary information about a class. We do not need to know that a driver is an adult in order to recognize one, but once we have recognized a driver, we know that they must be adult.
Class(a:sheep partial
restriction(a:eats allValuesFrom (a:grass))
a:animal)
Class(a:grass partial a:plant)
DisjointClasses(unionOf(restriction(a:part_of someValuesFrom (a:animal)) a:animal)
unionOf(a:plant restriction(a:part_of someValuesFrom (a:plant))))
Class(a:vegetarian complete intersectionOf(
restriction(a:eats allValuesFrom (complementOf(restriction(a:part_of someValuesFrom (a:animal)))))
restriction(a:eats allValuesFrom (complementOf(a:animal))) a:animal))
Note the complete definition, which means that we can recognise when things are vegetarians.
Class(a:giraffe partial a:animal
restriction(a:eats allValuesFrom (a:leaf)))
Class(a:leaf partial restriction(a:part_of someValuesFrom (a:tree)))
Class(a:tree partial a:plant)
DisjointClasses(unionOf(restriction(a:part_of someValuesFrom (a:animal)) a:animal)
unionOf(a:plant restriction(a:part_of someValuesFrom (a:plant))))
Class(a:vegetarian complete intersectionOf(
restriction(a:eats allValuesFrom (complementOf(restriction(a:part_of someValuesFrom (a:animal)))))
restriction(a:eats allValuesFrom (complementOf(a:animal))) a:animal))
Similar to the previous example with the additional inference provided by the existential restriction in the definition of leaf.
Class(a:old_lady complete intersectionOf(a:person a:female a:elderly)) Class(a:old_lady partial intersectionOf( restriction(a:has_pet allValuesFrom (a:cat)) restriction(a:has_pet someValuesFrom (a:animal)))) Class(a:cat_owner complete intersectionOf(a:person restriction(a:has_pet someValuesFrom (a:cat))))
An example of the interaction between an existential quantification (asserting the existence of a pet) and a universal quantification (constraining the types of pet allowed).
This also illustrates that an ontology is one view on the world — you may disagree with my modelling but I am being explicit about it.
Class(a:cow partial a:vegetarian)
DisjointClasses(unionOf(restriction(a:part_of someValuesFrom (a:animal)) a:animal)
unionOf(a:plant restriction(a:part_of someValuesFrom (a:plant))))
Class(a:vegetarian complete intersectionOf(
restriction(a:eats allValuesFrom (complementOf(restriction(a:part_of someValuesFrom (a:animal)))))
restriction(a:eats allValuesFrom (complementOf(a:animal))) a:animal))
Class(a:mad_cow complete intersectionOf(a:cow
restriction(a:eats someValuesFrom (intersectionOf(restriction(a:part_of someValuesFrom (a:sheep))
a:brain)))))
Class(a:sheep partial a:animal
restriction(a:eats allValuesFrom (a:grass)))
Thus a mad cow has been eating part of an animal, which is inconsistent with the definition of a vegetarian
Individual(a:Daily_Mirror type(owl:Thing)) Individual(a:Mick type(a:male) value(a:drives a:Q123_ABC) value(a:reads a:Daily_Mirror)) Individual(a:Q123_ABC type(a:van) type(a:white_thing)) Class(a:white_van_man complete intersectionOf(a:man restriction(a:drives someValuesFrom (intersectionOf(a:van a:white_thing))))) Class(a:white_van_man partial restriction(a:reads allValuesFrom (a:tabloid)))
Here we see interaction between complete and partial definitions plus a universal quantification allowing an inference about a role filler.
Individual(a:Spike type(owl:Thing) value(a:is_pet_of a:Pete)) Individual(a:Pete type(owl:Thing)) ObjectProperty(a:has_pet domain(a:person) range(a:animal)) ObjectProperty(a:is_pet_of inverseOf(a:has_pet))
Here we see an interaction between an inverse relationship and domain and range constraints on a property. The domain of a property is the range of its inverse and the range of a property is the domain of its inverse.
Individual(a:Walt type(a:person) value(a:has_pet a:Huey) value(a:has_pet a:Louie) value(a:has_pet a:Dewey)) Individual(a:Huey type(a:duck)) Individual(a:Dewey type(a:duck)) Individual(a:Louie type(a:duck)) DifferentIndividuals(a:Huey a:Dewey a:Louie) Class(a:animal_lover complete intersectionOf(a:person restriction(a:has_pet minCardinality(3))))
Note that in this case, we don't actually need to include person in the definition of animal lover (as the domain restriction will allow us to draw this inference).
Individual(a:Minnie type(a:female) type(a:elderly) value(a:has_pet a:Tom)) Individual(a:Tom type(owl:Thing)) ObjectProperty(a:has_pet domain(a:person) range(a:animal)) Class(a:old_lady complete intersectionOf(a:person a:female a:elderly)) Class(a:old_lady partial intersectionOf( restriction(a:has_pet allValuesFrom (a:cat)) restriction(a:has_pet someValuesFrom (a:animal))))
Here the domain restriction gives us additional information which then allows us to infer a more specific type. The universal quantification then allows us to infer information about the role filler.