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 > On Jan 15, 2014, at 3:05 PM, Tim Williams <[email protected]> wrote: > > 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 > > -- > -- 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 > [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 Groups > "TopBraid Suite Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. -- -- 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 [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 Groups "TopBraid Suite Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
