Reputation: 13
I want to model that something may be, but is not guaranteed, to be true. For example, a house may have a garage, but not necessarily. And a garage may be part of a house, but not necessarily.
If I add as an axiom "has_part some 'garage'" to my 'house' class, I'm claiming that all houses have garages, which isn't always true. Similarly, I can't add "partOf" to my garage class for the same reaosn.
What would be the ideal way to model this relationship?
I've tinkered with declaring that the class 'house' "has_part some 'garage' min 0" in order to use cardinality to set the minimum bound to zero, but I'm not sure that's correct.
Upvotes: 1
Views: 47
Reputation: 4787
In that case you you can think of the class House consisting of two different classes: (1) the class of houses that do not have garages and (2) the class of houses that do have garages.
You could do this in Manchester syntax as follows:
Class: ClassWithoutGarage
SubClassOf: hasGarage max 0 Thing //has no garage
Class: ClassWithGarage
SubClassOf: hasGarage min 1 Thing
DisjointWith: ClassWithoutGarage //has at least 1 garage
ObjectProperty: hasGarage
Domain: ClassWithGarage
Range: Garage
Class: House
EquivalentTo: ClassWithGarage or ClasWithoutGarage
In this case we have given explicit names to these 2 possible classes. Often in ontologies, the existence of these classes can be implied without explicitly naming them:
Class: House
EquivalentTo: hasGarage max 0 Thing
or
hasGarage min 1 Thing
which can be stated more concisely with
Class: House
EquivalentTo: hasGarage only Garage
hasGarage only Garage
defines the class of individuals consisting of those individuals x
such that when individual y
is linked via hasGarage
to individual x
, then y
is of type Garage
, or those individuals x
that has no link via hasGarage
.
Upvotes: 0