Looking for part-whole relations Example for TopBraid

20 views
Skip to first unread message

Tim Williams

unread,
Jan 15, 2014, 3:05:55 PM1/15/14
to topbrai...@googlegroups.com
Hi Folks,

I am new to TopBraid and OWL generally so please forgive my ignorance.

I am trying to develop an example ontology for an inventory of car parts. For example, let's say I have classes for:

Car
Engine
EngineInternal
EngineCylinderhead
EngineIntake
Part

Where Cars have Engines, Engines have Internal, Cylinderhead and Intake components.   Parts is  general class for all parts.

I want to express the parts break down using isPartOf , isDirectPartOf relations, so I can find "all Engine Parts", for example.

To do this I have defined the properties:
  isPartOf  as transitive
        isDirectPartOf as a subproperty of isPartOf.  It is NOT transitive.

How do I best apply the isDirectPartOf?  Must I apply the property to both Classes and Instances as it appears to state in the W3 guidance?  


http://www.w3.org/2001/sw/BestPractices/OEP/SimplePartWhole/simple-part-whole-relations-v1.3.html   (see Pattern1 for an inventory approach)

If I create and instance of a Car (Car-1), an Engine (Engine-1), a Cylinderhead (Cylinderhead-1) and a Part (Part-1)  I can make the instance Part-1 have property isDirectPartOf CylinderHead-1, CylinderHead-1 isDirectPartOf Engine-1, Engine-1 isDirectPartOf Car-1, and the parts roll up as expected. But is this the correct approach?  Shouldn't I also have SubClassOf relations like  "Engine isDirectPartOf some Car" ?

How best to do this in TopBraid?

I look forward to any advice or examples you can provide.


Cheers,

Tim

Irene Polikoff

unread,
Jan 16, 2014, 4:37:10 PM1/16/14
to topbrai...@googlegroups.com, topbrai...@googlegroups.com
First question to consider is if you are planning to manage individual instances of cars, engines, etc. If you are not, then you could create a single class such as CarComponent, declare that your isDirectPartOf property has it as both domain and range and make Car, Engine, etc. members of this class connecting them as appropriate. 

If you plan to manage instances of cars and parts, make them subclasses of the CarComponent class, then start creating OWL restrictions. For example, to say that class Engine is a subclass of things that are a direct part of a Car. In this case, you may also want to consider using a property going into another direction, so that you could, for example, say that a car must have an engine or that it must have 4 wheels or whatever.

I don't know if you really need to differentiate between direct and indirect properties. It depends on what application you are envisioning and how you are planning to use inferencing. In SPARQL you can get all transitive parents or children by simply using a star (*) at the end of the property.

Regards,

Irene Polikoff


--
-- 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 Insight, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
topbrai...@googlegroups.com
To unsubscribe from this group, send email to
topbraid-user...@googlegroups.com
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 Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Tim Williams

unread,
Jan 20, 2014, 2:26:41 PM1/20/14
to topbrai...@googlegroups.com
Thank you for the advice, Irene.   I'm struggling with the use case because I have two usage scenarios:

In one case I am cataloging parts when they come off a car during the restoration process. So I need to know all of the engine parts of "Car #1" vs. all the parts from "Car #2".  It makes sense to model this based on instances.  Part 1 is a direct Part of the instance of Engine 1. 

On the other hand I want to catalog an inventory of parts that are purchased new and sitting on the shelf. This could later become part of Car #1 or Car #2, depending on future need and the fact that some parts are interchangeable between some cars. This makes more sense (to me) on a Class basis.

I am using whole-part relations so I can easily query "just engine parts that directly make up the engine internals" , for example.

I will keep playing!

Cheers,

Tim

Irene Polikoff

unread,
Jan 20, 2014, 3:06:32 PM1/20/14
to topbrai...@googlegroups.com

Tim,

 

I think they just belong to different namespaces – one is a design namespace and another is a build namespace. And there is a relationship between them, but it does not have to be rdf:type relationship. It could be any relationship you create.

 

Otherwise, you are into punning which is really a cope out.

 

This is my view, but you can do whatever works.

 

Regards,

 

Irene

--

Bohms, H.M. (Michel)

unread,
Jan 22, 2014, 4:47:00 AM1/22/14
to topbrai...@googlegroups.com

Have a look at hasPart releationship (individual level decomposition) avail. From Dublin core.

Use QCRs to restrict.

 

That’s how we do it after trying many options…

Seems most flexible/natural/efficient

 

Gr 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
michel...@tno.nl

Location
Disclaimer
 

 

 

From: topbrai...@googlegroups.com [mailto:topbrai...@googlegroups.com] On Behalf Of Tim Williams
Sent: maandag 20 januari 2014 20:27
To: topbrai...@googlegroups.com
Subject: Re: [topbraid-users] Looking for part-whole relations Example for TopBraid

 

Thank you for the advice, Irene.   I'm struggling with the use case because I have two usage scenarios:

--

-- 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 Insight, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
topbrai...@googlegroups.com
To unsubscribe from this group, send email to
topbraid-user...@googlegroups.com
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 Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
topbraid-user...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Dit bericht kan informatie bevatten die niet voor u is bestemd. Indien u niet de geadresseerde bent of dit bericht abusievelijk aan u is toegezonden, wordt u verzocht dat aan de afzender te melden en het bericht te verwijderen. TNO aanvaardt geen aansprakelijkheid voor de inhoud van deze e-mail, de wijze waarop u deze gebruikt en voor schade, van welke aard ook, die verband houdt met risico's verbonden aan het elektronisch verzenden van berichten.

 

This message may contain information that is not intended for you. If you are not the addressee or if this message was sent to you by mistake, you are requested to inform the sender and delete the message. TNO accepts no liability for the content of this e-mail, for the manner in which you use it and for damage of any kind resulting from the risks inherent to the electronic transmission of messages.

Tim Williams

unread,
Jan 27, 2014, 4:15:38 PM1/27/14
to topbrai...@googlegroups.com
Thanks, Michel. I would much rather re-use Dublin Core than craft something de novo.

Cheers,

Tim



You received this message because you are subscribed to a topic in the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/topbraid-users/t24z-6Vhz04/unsubscribe.
To unsubscribe from this group and all its topics, send an email to topbraid-user...@googlegroups.com.
image001.gif
Reply all
Reply to author
Forward
0 new messages