The author has deleted this message.
Others will probably have better answers but the first thing I would suggest is you remember that everything in OWL is based on set theory and first order logic. If you don't know what those are I recommend taking a few hours and getting in intro text book. The first chapter in Elements of the Theory of Computation by Lewis and Papadimitriou is an excellent intro. I say that because the way you are describing your ontology sounds very much like a programmer defining the objects for their system rather than as someone creating a logical model. I don't mean that as a criticism and perhaps I'm just being too sensitive to that issue because its a problem I still grapple with, my first intuition is to always think like an OO programmer and while there are many similarities with OOP there are also important differences.
If you haven't already done so you should do the Pizza Tutorial. That provides a lot of examples and I think would answer many of your questions. I also think the FHKB tutorial from Manchester is excellent and definitely worth doing. It shows some of the more powerful capabilities of using DL.
Also, (and IMO this is true for OO modeling as well) there is seldom just one "right" way to model something. It all depends on your application(s), i.e., how you want to use the model.
To get to some of your specific questions (and keeping in mind the caveat above) it seems unintuitive to me to have classes like RedTrafficLight, GreenTrafficLight, etc. Since the color of the light is constantly changing that means the type of any actual traffic lights you have will also be constantly changing. Now (unlike most OO systems) that is not prohibited in OWL but it just isn't the way my intuition would go for this problem.
Also, you can have a string that records the color of the light and still have classes based on that color as well. That's one of the powerful things about OWL DL you can describe new classes based on the value of properties. So if you had a class called TrafficLight you could (although for most applications I don't think I would do this) define a new class called RedTrafficLight and you would add an axiom something like: TrafficLight and hasColor value "red"
Hope that was helpful.
On Thu, May 11, 2017 at 7:53 AM, ysg11 <[hidden email]> wrote:
protege-user mailing list
These are good advices. I would add that you should think of classes as sets of individuals. If you say that TrafficLight is a class, then what are individuals of this class? Subclasses are subsets. If you have a subclass, what are individuals of this subclass and are they also individuals of the superclass?
With best regards,
Samson Tu email: [hidden email]
Senior Research Engineer web: www.stanford.edu/~swt/
Center for Biomedical Informatics Research phone: 1-650-725-3391
Stanford University fax: 1-650-725-7944
protege-user mailing list
|Free forum by Nabble||Edit this page|