Michel,
I think you have 3 options:
1. Create classes like Non17inchWheel
Then you can say
17inchWheelVehicle hasPart max 0 Non17inchWheel
Your class hierarchy will grow considerably more complex than it is now
since for each type of part you have you will have to create a “non” class
and arrange everything appropriately in the class tree. If you have let’s
say 3 different wheel types - 17inch, 18inch and 19inch, you need create
three “non” classes and define the subclass relationships so that any member
of 17inchWheel, is also a member of :Non18inchWheel and :Non19inchWheel. I
don’t really see this approach as a viable solution.
2. Create specific properties as subs of hasPart such as hasWheel
Then you can say
17inchWheelVehicle hasWheel: allValuesFrom 17inchWheel
You will probably need to have much more properties. How many depends on
your needs. I would create them for each part where you need this pattern.
That is if you only have one type of an engine and you only need to say that
a vehicle must have one engine, you don’t need to create hasEngine property,
but if you have multiple types of engines, you would need the property.
3. Use SPIN constraints
Then you can keep your current model as is and add the following
spin:constraint to 17inchWheelVehicle
ASK WHERE {?this hasPart ?wheel.
?wheel a ?wheelClass.
?wheelClass rdfs:subClass* :Wheel.
NOT EXISTS {?wheelClass rdfs:subClassOf* :17inchWheel}
This constraint identifies a violation if any 17inchWheelVehicle has a part
that is a wheel but not a 17inch wheel. It will work even if you have
subclasses of 17inch wheel such as Premium17inchWheel or whatever.
Regards,
Irene Polikoff
From: [email protected]
[mailto:[email protected]] On Behalf Of Bohms, H.M. (Michel)
Sent: Thursday, October 11, 2012 3:44 AM
To: [email protected]
Cc: Bonsma, P. (Peter)
Subject: [topbraid-users] Modelling decomposition issue
Dear All,
We ran here in a modeling issue for which we would highly appreciate your
advice.
Suppose I have the following ontology:
· Vehicle class
· Body class
· Wheel class with subclass 17inchWheel
· hasPart object property
Vehicle hasPart Wheel, 2 or more > QCR-mincard
Vehicle hasPart exactly one Body > QCR-card
My preference is not to introduce subproperties of hasPart (we prefer one
consistent approach that is, now at least, quite class-based).
Now suppose we want to model a subclass of Vehicle, a 17inchWheelVehicle (a
“vehicle having only 17inch wheels”) and want to say that all wheels should
be of type 17inchWheel.
The first idea was to add an allValuesFrom for hasPart but this is limiting
this hasPart too much (also the subtype has a body etc.).
Next we could add also a mincard-QCR on the subtype now qualified for
17inchWheel but this is not covering the semantics: then there can be 2
17inchwheels and 2 non-17inchwheels…which you want to exclude
So what we really need is a kind of “qualified allValuesFrom” here….:
17inchWheelVehicle hasPart Wheel: allValuesFrom 17inchWheel
Which is of course not available.
Comments/advice very welcome,
In case we have to start introducing subproperties of hasPart here, I would
also like to know what are good strategies ( a subprop. For each potential
part?, only under certain conditions etc.?),
Thanks a lot, Michel
Dr. ir. H.M. (Michel) Böhms
Sr. Research Scientist
Technical Sciences
T +31 (0)88 866 31 07
M +31 (0)63 038 12 20
E <mailto:[email protected]> [email protected]
<http://www.tno.nl/locaties/dtm> Location
<http://www.tno.nl/emaildisclaimer> Disclaimer
<http://www.tno.nl/> Description:
C:\Users\bohmshm\AppData\Roaming\Microsoft\Signatures\TNO
(EN)_files\logo_signature.gif
--
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise
Vocabulary Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
--
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary
Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
<<image001.gif>>
