How to Relate Different Classes

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

How to Relate Different Classes

Samoc
Hi

I have 2 distinct classes that have some crossover relationships - that I am
unsure how to relate thru Desktop Protege  ?

Class Drugs
Drug1
Drug2
etc

Class Disease
Disease1
Disease2
etc

I create a Drugs Class with Subclasses Drug1.Drug2 etc A  second distinct
class is Disease with Subclasses Disease1,Disease2, etc

If I want to show that Drug1  and Drug2 Treat Disease1  how is that
relationship created thru thru Desktop Protege App ?

Any help is greatly appreciated as I try to learn Ontology creation :-)

Thanks
Sam



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Igor Toujilov-2
Hi Sam,
In Protégé 5.5.0, create an object property “treats”.
Then go to Classes tab; select Drug1; in Description window, click + after SubClass Of, and a separate window Drug1 will pop-up.
Now you have two alternative methods to create the class expression:
1. In the Drug1 pop-up window, select Object Restriction Creator, then select: “treats” as a Restricted property, Disease1 as a Restriction filler, and Some (existential) as a Restriction type; and click OK.
2. In the Drug1 pop-up window, select Class expression editor, then write “treats some Disease1”, and click OK.
Both methods create the same class-expression:
treats some Disease1.

Cheers,
Igor


> Sent: Saturday, November 09, 2019 at 2:25 PM
> From: "Samoc" <[hidden email]>
> To: [hidden email]
> Subject: [protege-user] How to Relate Different Classes
>
> Hi
>
> I have 2 distinct classes that have some crossover relationships - that I am
> unsure how to relate thru Desktop Protege ?
>
> Class Drugs
> Drug1
> Drug2
> etc
>
> Class Disease
> Disease1
> Disease2
> etc
>
> I create a Drugs Class with Subclasses Drug1.Drug2 etc A second distinct
> class is Disease with Subclasses Disease1,Disease2, etc
>
> If I want to show that Drug1 and Drug2 Treat Disease1 how is that
> relationship created thru thru Desktop Protege App ?
>
> Any help is greatly appreciated as I try to learn Ontology creation :-)
>
> Thanks
> Sam
>
>
>
> --
> Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user[https://mailman.stanford.edu/mailman/listinfo/protege-user]
>
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Dave McComb-2
In reply to this post by Samoc

It is possible to make Drug1 and Drug2 classes, but in most scenarios that isn’t the way to go.  Classes are sets.  What are the members of the class Drug1?

 

If you were manufacturing the drug you might think that the lots, or bottles are the instances of this class, but when you work through it you’ll see that the class the lot belongs to is :Lot and bottles probably :SKU, where the instances are probably :madeUpOf   (a property) :drug1

 

It sounds like you want to talk about drugs and diseases more in the abstract.

 

I’d recommend making a class :Drug and a class :Disease have :drug1 etc be instances of the appropriate class

 

Then the first version you can just have a simple property :treats (later you will get more sophisticated and want to have another class in-between the disease and drug to talk about efficacy and evidence and the like) but for now, just :treats.

 

At the instance level just make the triple   :drug1 :treats :disease2

 

At the class level you can say what we know in general:

 

:Drug :subClassOf :treats some :Disease   (that is to say a partial definition of a drug is that it treats at least one disease)

 

Sent from Mail for Windows 10

 


From: protege-user <[hidden email]> on behalf of Samoc <[hidden email]>
Sent: Saturday, November 9, 2019 7:25:51 AM
To: [hidden email] <[hidden email]>
Subject: [protege-user] How to Relate Different Classes
 
Hi

I have 2 distinct classes that have some crossover relationships - that I am
unsure how to relate thru Desktop Protege  ?

Class Drugs
Drug1
Drug2
etc

Class Disease
Disease1
Disease2
etc

I create a Drugs Class with Subclasses Drug1.Drug2 etc A  second distinct
class is Disease with Subclasses Disease1,Disease2, etc

If I want to show that Drug1  and Drug2 Treat Disease1  how is that
relationship created thru thru Desktop Protege App ?

Any help is greatly appreciated as I try to learn Ontology creation :-)

Thanks
Sam



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Samoc
In reply to this post by Igor Toujilov-2
Hi Igor

Thanks that worked
A followup question if you don't mind ?

I can see the connection you suggested thru OntoGraph
If I wanted to examine the Ontology for relationships or demonstrate to an
end user what is the preferred way to do this ??

OntoGraph ?
Sparql query ?
Owlviz ? or does this just show subclasses ?

Thanks again



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Samoc
In reply to this post by Dave McComb-2
Hi Dave

Thanks for reply
I am not sure if you are saying same thing as Igor?

I am new to laying out an ontology and not sure if I need to look at my
situation differently?

To me Drugs would be a class of n number of drugs and of course if I wanted
to get really complicated
at the start within drugs there would be subclasses of drug types
And Diseases would be a class of n number of diseases and we could
sub-divide into body systems

My overall goal as a start on designing a simple ontology was to be able to
examine/visualize the
relationship of
say

drug1 is subclass of diabetes drugs which is a subclass of drugs

drug1 also has a connection to disease-diabetes which is a subclass of
pancrease which is subclass diseases

So since I am a newbie in ontology - I may of intertwined the incorrect
terminology class/subclass/relationships etc but hopefully you can see where
I am trying to get to :-)
I was trying to start simple since there is alot to consider here :-)


Thanks - any pointers would be great



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Michael DeBellis-2
Samoc and Dave, here's my 2 cents: I think this is a common issue with modeling, what to make a class and what to make an instance. I think it becomes clearer when we start talking about real examples rather than Drug1 and Drug2. So if instead of Drug1 and Drug2 we say MentalHealthDrugs and ADDDrugs those are probably going to be classes where as Adderall, Ritalin, and Vyvanse are probably going to be instances of ADDDrugs. 

Note though that it depends on your particular application. So if you had a Pharmacy system then even Adderall, Ritalin, and Vyvanse could be classes and the instances could be things like JohnSmithRitalinFulfilment3 which would refer to a specific transaction where John Smith got a prescription for Ritalin filled on a certain date, with a certain doctor's okay, etc. 

There is no one right answer, it all depends on the application and use cases.

On Sun, Nov 10, 2019 at 8:08 AM Samoc <[hidden email]> wrote:
Hi Dave

Thanks for reply
I am not sure if you are saying same thing as Igor?

I am new to laying out an ontology and not sure if I need to look at my
situation differently?

To me Drugs would be a class of n number of drugs and of course if I wanted
to get really complicated
at the start within drugs there would be subclasses of drug types
And Diseases would be a class of n number of diseases and we could
sub-divide into body systems

My overall goal as a start on designing a simple ontology was to be able to
examine/visualize the
relationship of
say

drug1 is subclass of diabetes drugs which is a subclass of drugs

drug1 also has a connection to disease-diabetes which is a subclass of
pancrease which is subclass diseases

So since I am a newbie in ontology - I may of intertwined the incorrect
terminology class/subclass/relationships etc but hopefully you can see where
I am trying to get to :-)
I was trying to start simple since there is alot to consider here :-)


Thanks - any pointers would be great



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Dave McComb-2

Totally agree.  It is very situation dependent, and like you were suggesting here, I think the best route is to first think through the instances you’re going to have, which will inform the classes you need.  Doing it the other way around typically creates lots of classes that add little value.

 

Sent from Mail for Windows 10

 


From: protege-user <[hidden email]> on behalf of Michael DeBellis <[hidden email]>
Sent: Sunday, November 10, 2019 9:31:30 AM
To: User support for WebProtege and Protege Desktop <[hidden email]>
Subject: Re: [protege-user] How to Relate Different Classes
 
Samoc and Dave, here's my 2 cents: I think this is a common issue with modeling, what to make a class and what to make an instance. I think it becomes clearer when we start talking about real examples rather than Drug1 and Drug2. So if instead of Drug1 and Drug2 we say MentalHealthDrugs and ADDDrugs those are probably going to be classes where as Adderall, Ritalin, and Vyvanse are probably going to be instances of ADDDrugs. 

Note though that it depends on your particular application. So if you had a Pharmacy system then even Adderall, Ritalin, and Vyvanse could be classes and the instances could be things like JohnSmithRitalinFulfilment3 which would refer to a specific transaction where John Smith got a prescription for Ritalin filled on a certain date, with a certain doctor's okay, etc. 

There is no one right answer, it all depends on the application and use cases.

On Sun, Nov 10, 2019 at 8:08 AM Samoc <[hidden email]> wrote:
Hi Dave

Thanks for reply
I am not sure if you are saying same thing as Igor?

I am new to laying out an ontology and not sure if I need to look at my
situation differently?

To me Drugs would be a class of n number of drugs and of course if I wanted
to get really complicated
at the start within drugs there would be subclasses of drug types
And Diseases would be a class of n number of diseases and we could
sub-divide into body systems

My overall goal as a start on designing a simple ontology was to be able to
examine/visualize the
relationship of
say

drug1 is subclass of diabetes drugs which is a subclass of drugs

drug1 also has a connection to disease-diabetes which is a subclass of
pancrease which is subclass diseases

So since I am a newbie in ontology - I may of intertwined the incorrect
terminology class/subclass/relationships etc but hopefully you can see where
I am trying to get to :-)
I was trying to start simple since there is alot to consider here :-)


Thanks - any pointers would be great



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Samoc
Michael and David

Thank-you for the replies

Stupid question - how does once define an instance vs a class  in Protege ??

Also is there a tool or programming language that allows one to parse the
owl document and walk the relationship
ie if I have a drug
drug:insulin treats disease:diabetes

can I walk thru the owl document to get all drugs related to diabetes ?

Thanks for your input



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Dave McComb-2
The way I like to do it is open the “instances by class” tab.  If you click on owl: Thing in the class tee them when you create an instance ( by clicking on the magenta diamond with a plus sign next to it) you will create an individual without a declared type. If you pick a class from the tree first it will create an individual of that type 

The way to find what is connected in general is with a query ( there are many available including spraql) also if you look in the usage pane you will see where it has been referred to


From: protege-user <[hidden email]> on behalf of Samoc <[hidden email]>
Sent: Sunday, November 10, 2019 15:01
To: [hidden email]
Subject: Re: [protege-user] How to Relate Different Classes
 
Michael and David

Thank-you for the replies

Stupid question - how does once define an instance vs a class in Protege ??

Also is there a tool or programming language that allows one to parse the
owl document and walk the relationship
ie if I have a drug
drug:insulin treats disease:diabetes

can I walk thru the owl document to get all drugs related to diabetes ?

Thanks for your input



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Michael DeBellis-2
In reply to this post by Samoc
I agree with Dave, I usually use the "Individuals by class" tab. Also, I usually add the "Individuals by Type (Inferred)" pane as a sub-tab along with Individuals, Annotation, and Usage which if I'm remembering correctly are the three sub-tabs that come by default in the top right of the Individuals by Class tab. The Individuals pane just lists all the individuals in alphabetic order so you can have a person listed next to a disease, etc. The Individuals by Type (inferred) pane gives you a list organized by each class where you can select a class and then expand it to find the instances for that specific class, I find it much easier to use. 

Although keep in mind there are many ways to create an individual. For example, if you look at the "Classes" tab and click on a class you should see its Description pane in the lower right part of the Window. If that class already has instances defined they should show up under the "Instances" property for that class. If you want to create new instances of that class you can also click on the "+" icon next to the Instances label and that will create a new instance of that class. 

One thing that sometimes confuses new users is that Individuals show up under the lowest class that they are an instance of. So for example if I have a class called Mammal and a subclass called Human and I create an instance of Human called Mary, Mary will only show up as an instance of Human not as an instance of Mammal even though since Human is a subclass of Mammal she is also an instance of Mammal. 

Also, regarding "can I walk thru the owl document to get all drugs related to diabetes ?"  If you don't know the various object properties that can have Diabetes as their value then using SPARQL is probably your best bet, because you can create queries where you make the property itself a wild card and match all properties that have Diabetes as their value. 

However, if you know a specific property and you want to find all the individuals that have Diabetes as that value SWRL might be easier. So for example, if you have an object property called hasDisease with domain Person and range Disease you could write a SWRL rule like: 

hasDisease(?p, Diabetes) -> Do stuff specific to patients with Diabetes

Or if you just want to list them out you can use SQWRL: 

  hasDisease(?p, Diabetes) -> sqwrl:select(?p)

That will print out each Person who hasDisease Diabetes. If you want to know more about SWRL and SQWRL see my SWRL tutorial: https://www.michaeldebellis.com/post/swrl_tutorial

You can also use DL Queries. Look at the DL Query tab (if you don't see it go to Window>Tabs>DL Query that will create one). Then you can do queries like:

hasDisease value Diabetes

Make sure the Instances check box on the right is checked. That will also print out each Person who hasDisease Diabetes. 

If you haven't already done them, I recommend doing the Pizza tutorial and also the Manchester FHKB tutorial. The Pizza tutorial is the best overview of the basics for creating classes, individuals, defined classes, etc. in Protege. The FHKB tutorial will give you a good intro into some of the ways to write valid DL axioms which are very useful to define classes as well as for queries. FHKB also has a good overview of properties in OWL. One of the biggest differences between OWL and Object-Oriented programming languages like Java is the way they handle properties. FHKB does a good job of explaining how properties are different in OWL and some of the powerful things you can do with them that you can't do with standard OO properties. 

Cheers,
Michael



On Sun, Nov 10, 2019 at 2:01 PM Samoc <[hidden email]> wrote:
Michael and David

Thank-you for the replies

Stupid question - how does once define an instance vs a class  in Protege ??

Also is there a tool or programming language that allows one to parse the
owl document and walk the relationship
ie if I have a drug
drug:insulin treats disease:diabetes

can I walk thru the owl document to get all drugs related to diabetes ?

Thanks for your input



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Igor Toujilov-2
In reply to this post by Samoc
Hi Sam,
If a graphical visualisation works for you, that is great.
If you need a “bullet proof” (I mean a completely formalised) response from a query, you should use DL Query. For example, a subclass query for class expression “treats some Disease1” means “Which drugs treat Disease1?” And it will return a list of classes, including Drug1.
The whole point of using OWL 2 DL is to get under the cover of the formal theory (the Description Logic).
Current SPARQL implementations are mostly of low-level (i.e. RDF syntax based). The SPARQL specification defines the DL entailment (reasoning) mode, however its full implementation remains a fantasy during the last decade.


Cheers,
Igor


> Sent: Sunday, November 10, 2019 at 3:53 PM
> From: "Samoc" <[hidden email]>
> To: [hidden email]
> Subject: Re: [protege-user] How to Relate Different Classes
>
> Hi Igor
>
> Thanks that worked
> A followup question if you don't mind ?
>
> I can see the connection you suggested thru OntoGraph
> If I wanted to examine the Ontology for relationships or demonstrate to an
> end user what is the preferred way to do this ??
>
> OntoGraph ?
> Sparql query ?
> Owlviz ? or does this just show subclasses ?
>
> Thanks again
>
>
>
> --
> Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Igor Toujilov-2
In reply to this post by Dave McComb-2
Hi All,
I am not a biomedical expert; so, please correct if I am wrong. However from my point of view (software engineering), many modern drugs are developed as a specialisation of existing drugs, i.e. by bringing new features to existing drugs. So, some new drug can be considered as a subclass of an existing drug. This is similar to object-orientated design in software: to bring new features, establish a subclass and implement it.
For example, methylphenidate can be considered as a superclass of Ritalin. If an earlier version of your ontology represents methylphenidate as an individual, then it would be difficult to represent Ritalin in later versions without breaking backward compatibility with existing interoperable applications.
This example shows that the preferable approach in ontology development is: use classes instead of individuals, if there is any chance you would need subclasses in the future.
 
Regards,
Igor
 
 
 

Sent: Sunday, November 10, 2019 at 5:15 PM
From: "Dave McComb" <[hidden email]>
To: "User support for WebProtege and Protege Desktop" <[hidden email]>
Subject: Re: [protege-user] How to Relate Different Classes

Totally agree.  It is very situation dependent, and like you were suggesting here, I think the best route is to first think through the instances you’re going to have, which will inform the classes you need.  Doing it the other way around typically creates lots of classes that add little value.
 
Sent from Mail[https://go.microsoft.com/fwlink/?LinkId=550986] for Windows 10
 
------------------------------------------------------------

From: protege-user <[hidden email]> on behalf of Michael DeBellis <[hidden email]>
Sent: Sunday, November 10, 2019 9:31:30 AM
To: User support for WebProtege and Protege Desktop <[hidden email]>
Subject: Re: [protege-user] How to Relate Different Classes
 

Samoc and Dave, here's my 2 cents: I think this is a common issue with modeling, what to make a class and what to make an instance. I think it becomes clearer when we start talking about real examples rather than Drug1 and Drug2. So if instead of Drug1 and Drug2 we say MentalHealthDrugs and ADDDrugs those are probably going to be classes where as Adderall, Ritalin, and Vyvanse are probably going to be instances of ADDDrugs. 
 
Note though that it depends on your particular application. So if you had a Pharmacy system then even Adderall, Ritalin, and Vyvanse could be classes and the instances could be things like JohnSmithRitalinFulfilment3 which would refer to a specific transaction where John Smith got a prescription for Ritalin filled on a certain date, with a certain doctor's okay, etc. 
 
There is no one right answer, it all depends on the application and use cases. 

On Sun, Nov 10, 2019 at 8:08 AM Samoc <[hidden email][mailto:[hidden email]]> wrote:Hi Dave

Thanks for reply
I am not sure if you are saying same thing as Igor?

I am new to laying out an ontology and not sure if I need to look at my
situation differently?

To me Drugs would be a class of n number of drugs and of course if I wanted
to get really complicated
at the start within drugs there would be subclasses of drug types
And Diseases would be a class of n number of diseases and we could
sub-divide into body systems

My overall goal as a start on designing a simple ontology was to be able to
examine/visualize the
relationship of
say

drug1 is subclass of diabetes drugs which is a subclass of drugs

drug1 also has a connection to disease-diabetes which is a subclass of
pancrease which is subclass diseases

So since I am a newbie in ontology - I may of intertwined the incorrect
terminology class/subclass/relationships etc but hopefully you can see where
I am trying to get to :-)
I was trying to start simple since there is alot to consider here :-)


Thanks - any pointers would be great



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html[http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html]
_______________________________________________
protege-user mailing list
[hidden email][mailto:[hidden email]]
https://mailman.stanford.edu/mailman/listinfo/protege-user_______________________________________________ protege-user mailing list [hidden email] https://mailman.stanford.edu/mailman/listinfo/protege-user[https://mailman.stanford.edu/mailman/listinfo/protege-user]
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

Igor Toujilov-2
In reply to this post by Samoc
Hi Sam,
Please see in-line comments below.

> Sent: Sunday, November 10, 2019 at 10:03 PM
> From: "Samoc" <[hidden email]>
> To: [hidden email]
> Subject: Re: [protege-user] How to Relate Different Classes
>
> Michael and David
>
> Thank-you for the replies
>
> Stupid question - how does once define an instance vs a class  in Protege ??
>

Please see my previous post about instances (individuals) vs. classes.

> Also is there a tool or programming language that allows one to parse the
> owl document and walk the relationship
> ie if I have a drug
> drug:insulin treats disease:diabetes
>
> can I walk thru the owl document to get all drugs related to diabetes ?
>

In Java you can use OWL API to load an ontology from an OWL file. Then you need a reasoner to execute a DL query “treats some diabetes”, which will return a list of drug classes, including insulin.

> Thanks for your input
>
>
>
> --
> Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: How to Relate Different Classes

samsontu
In reply to this post by Igor Toujilov-2
An example of “drug feature” like what Igor mentions is the time when a drug is active. Years after metformin was discovered, FDA approved metformin extended release for the treatment of type 2 diabetes. If you had modeled metformin as an instance you can’t specialize it to accommodate the extended release version. 

With best regards,
Samson


On Nov 11, 2019, at 4:19 PM, Igor Toujilov <[hidden email]> wrote:

Hi All,
I am not a biomedical expert; so, please correct if I am wrong. However from my point of view (software engineering), many modern drugs are developed as a specialisation of existing drugs, i.e. by bringing new features to existing drugs. So, some new drug can be considered as a subclass of an existing drug. This is similar to object-orientated design in software: to bring new features, establish a subclass and implement it.
For example, methylphenidate can be considered as a superclass of Ritalin. If an earlier version of your ontology represents methylphenidate as an individual, then it would be difficult to represent Ritalin in later versions without breaking backward compatibility with existing interoperable applications.
This example shows that the preferable approach in ontology development is: use classes instead of individuals, if there is any chance you would need subclasses in the future.
 
Regards,
Igor
 
 
 

Sent: Sunday, November 10, 2019 at 5:15 PM
From: "Dave McComb" <[hidden email]>
To: "User support for WebProtege and Protege Desktop" <[hidden email]>
Subject: Re: [protege-user] How to Relate Different Classes

Totally agree.  It is very situation dependent, and like you were suggesting here, I think the best route is to first think through the instances you’re going to have, which will inform the classes you need.  Doing it the other way around typically creates lots of classes that add little value.
 
Sent from Mail[https://go.microsoft.com/fwlink/?LinkId=550986] for Windows 10
 
------------------------------------------------------------

From: protege-user <[hidden email]> on behalf of Michael DeBellis <[hidden email]>
Sent: Sunday, November 10, 2019 9:31:30 AM
To: User support for WebProtege and Protege Desktop <[hidden email]>
Subject: Re: [protege-user] How to Relate Different Classes
 

Samoc and Dave, here's my 2 cents: I think this is a common issue with modeling, what to make a class and what to make an instance. I think it becomes clearer when we start talking about real examples rather than Drug1 and Drug2. So if instead of Drug1 and Drug2 we say MentalHealthDrugs and ADDDrugs those are probably going to be classes where as Adderall, Ritalin, and Vyvanse are probably going to be instances of ADDDrugs. 
 
Note though that it depends on your particular application. So if you had a Pharmacy system then even Adderall, Ritalin, and Vyvanse could be classes and the instances could be things like JohnSmithRitalinFulfilment3 which would refer to a specific transaction where John Smith got a prescription for Ritalin filled on a certain date, with a certain doctor's okay, etc. 
 
There is no one right answer, it all depends on the application and use cases. 

On Sun, Nov 10, 2019 at 8:08 AM Samoc <[hidden email][[hidden email]]> wrote:Hi Dave

Thanks for reply
I am not sure if you are saying same thing as Igor?

I am new to laying out an ontology and not sure if I need to look at my
situation differently?

To me Drugs would be a class of n number of drugs and of course if I wanted
to get really complicated
at the start within drugs there would be subclasses of drug types
And Diseases would be a class of n number of diseases and we could
sub-divide into body systems

My overall goal as a start on designing a simple ontology was to be able to
examine/visualize the
relationship of
say

drug1 is subclass of diabetes drugs which is a subclass of drugs

drug1 also has a connection to disease-diabetes which is a subclass of
pancrease which is subclass diseases

So since I am a newbie in ontology - I may of intertwined the incorrect
terminology class/subclass/relationships etc but hopefully you can see where
I am trying to get to :-)
I was trying to start simple since there is alot to consider here :-)


Thanks - any pointers would be great



--
Sent from: <a href="http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html[http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html" class="">http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html[http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html]
_______________________________________________
protege-user mailing list
[hidden email][[hidden email]]
https://mailman.stanford.edu/mailman/listinfo/protege-user_______________________________________________ protege-user mailing list [hidden email] <a href="https://mailman.stanford.edu/mailman/listinfo/protege-user[https://mailman.stanford.edu/mailman/listinfo/protege-user" class="">https://mailman.stanford.edu/mailman/listinfo/protege-user[https://mailman.stanford.edu/mailman/listinfo/protege-user]
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

smime.p7s (1K) Download Attachment