Ontology design - Classes or individuals

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

Ontology design - Classes or individuals

Brigitte Müller
Hi,

I'm a student and newbie to the semantic web and I want to write a class Topic that represents a hierarchy of topics. I also have a class Conference, it has data properties like name, date, location. Class Conference has an object property hasTopic to connect conference individuals to multiple topics.

The purpose of the ontology would be to enable searching for individuals of Conference with queries like 'what conferences are there that have the topics Hardware and Databases' for example.  Or 'what conferences do have a topic that is related to Data_Mining'.

So the question is how to design the topic class. I could create a lot of individuals like Databases, Relational_Databases, OO_Databases, and add an object property isPartOf to Topic to create a hierarchy of topics. Then the object property hasTopic could connect Conference and Topic individuals. In 'Ontology Development 101' Noy/McGuinness say that if concepts form a natural hierarchy, then we should represent them as classes. They also say Protege allows us to specify classes as Abstract, signifying they cannot have any direct instances. In older posts on this list here some people said there is no such thing as abstract classes in OWL, though.

So I could use a class Topic and make Databases a subclass of Topic. Relational_Databases would be a subclass of Databases and so on. But how do I link the conference individuals to their topics? When I try to create an individual of conference and edit the object property hasTopic, it only allows me to choose other individuals as Object for the triple. Should I create one individual for every subclass of Topic? That looks wrong to me. I read a class can be an instance of a class, too, could class Databases be an inidvidual of class Databases? How do I do this in Protege? And is it possible to do queries like the two mentioned above, if the topics are just classes and no individuals?

Cheers!
Brigitte






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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Thomas Russ

On Mar 22, 2011, at 6:46 AM, Brigitte Müller wrote:

> Hi,
>
> I'm a student and newbie to the semantic web and I want to write a  
> class Topic that represents a hierarchy of topics. I also have a  
> class Conference, it has data properties like name, date, location.  
> Class Conference has an object property hasTopic to connect  
> conference individuals to multiple topics.
>
> The purpose of the ontology would be to enable searching for  
> individuals of Conference with queries like 'what conferences are  
> there that have the topics Hardware and Databases' for example.  Or  
> 'what conferences do have a topic that is related to Data_Mining'.
>
> So the question is how to design the topic class. I could create a  
> lot of individuals like Databases, Relational_Databases,  
> OO_Databases, and add an object property isPartOf to Topic to create  
> a hierarchy of topics. Then the object property hasTopic could  
> connect Conference and Topic individuals. In 'Ontology Development  
> 101' Noy/McGuinness say that if concepts form a natural hierarchy,  
> then we should represent them as classes.

You could do that, but if the relationship really is a subclass or  
subset relationship, it makes more sense to use the class hierarchy to  
represent that.  It would also mean that the class hierarchy reasoning  
built in to OWL would be available for use in your ontology.

> They also say Protege allows us to specify classes as Abstract,  
> signifying they cannot have any direct instances. In older posts on  
> this list here some people said there is no such thing as abstract  
> classes in OWL, though.

There is certainly no enforceable abstract class in OWL.  Individuals  
really belong to all of their superclasses, and the ability to use  
defined classes means that class membership can be inferred through  
inference.  This, then, allows one to partially specify an individual,  
having it belong to a more general class and then, as more information  
about the individual becomes known, have the classifier infer  
additional more specific classes to which it belongs.  This design  
approach doesn't work well with a notion of abstract class.  You would  
not want to prohibit asserting membership in the abstract class,  
because a definition could involve belonging to the abstract class  
along with some other properties that will lead to classification into  
a subclass of the abstract class.

There is also some conflict between the idea of an abstract class and  
open world semantics, since you can never be completely sure that an  
individual is a "direct instance" of a particular class.

> So I could use a class Topic and make Databases a subclass of Topic.  
> Relational_Databases would be a subclass of Databases and so on. But  
> how do I link the conference individuals to their topics? When I try  
> to create an individual of conference and edit the object property  
> hasTopic, it only allows me to choose other individuals as Object  
> for the triple. Should I create one individual for every subclass of  
> Topic? That looks wrong to me. I read a class can be an instance of  
> a class, too, could class Databases be an inidvidual of class  
> Databases? How do I do this in Protege? And is it possible to do  
> queries like the two mentioned above, if the topics are just classes  
> and no individuals?

I think that you will want to have the topics be a class hierarchy,  
since there is a subclass relation between them.

There are a couple of approaches that could be taken here, each with  
its own advantages and disadvantages.  You have identified two of  
them.  I'll discuss them and also add a couple of additional choices.  
You can then decide which of these will fit in best with your  
particular application.

1.  Make the classes be individuals of themselves.  That would make  
the classes be their own metaclasses.  I have never tried this and I'm  
not sure how well it would be supported by reasoners.  I have used  
separate metaclasses successfully in OWL ontologies, but a lot of  
ontology designers do not like to use meta-modeling.  It isn't well  
supported by the reasoning tools and it moves OWL 1 ontologies into  
OWL Full.

2.  Use the classes from the hierarchy as fillers of hasTopic property.

     In OWL 1 this will move you into the OWL-Full subtype of the  
language, and the standard reasoners like Pellet, Fact++, HermiT are  
not guaranteed to work with OWL Full ontologies.  (You can get Protege  
3 to allow you to use fillers like this by setting the range of the  
object property to "Class".  I'm not sure how that works in Protege  
4.)  In OWL 2, this would generally be handled through "punning".

  Advantages:
    A. You have a more "natural" model of the topics
    B. There are no artificial individuals for the topics

  Disadvantages:
    A. You are in OWL Full (OWL 1) or have punning.
    B. You don't get inclusion reasoning for conference classification.

Disadvantage B means that you can't define a class like
    DatabaseConference == Conference and some hasTopic DatabaseTopic
and then have a Conference with hasTopic RelationalDatabaseTopic  
classify under it because the classes are treated as individuals and  
individuals do not have subclass-of relations.  You would have to add  
any such inclusion reasoning on your own.  I think this is a decisive  
disadvantage.

3.  Create a "prototypical" individual for each topic class.  In other  
words, for the topic DatabaseTopic you create i_DatabaseTopic as an  
individual.  You can, if you wish, restrict the topic class to having  
only this individual by defining the topic to be exactly the set with  
that singleton value.  Each conference will then use the prototypical  
individual to represent the topic when you make assertions about the  
topic

   Advantages:
     A. You get the inclusion reasoning for conference classification.
     B. You get the inclusion reasoning for conference individuals as  
well.

   Disadvantages:
     A. You have an artificial dual structure of classes and  
individuals.
     B. You need to remember to use the prototype, but the Protege  
input tools and constraints will help you do this.

   I think that this might be the most pragmatic choice for your  
situation, in that you will be able to exploit the hierarchy and the  
handling of assertions is straight-forward.  You would also get the  
classification results for conference types, allowing you to use the  
reasoners to maintain a hierarchy of conference types based on their  
topics.  It will also automatically classify individual conferences  
based on their topics.

4.  Use a topic hierarchy but don't use individuals in this at all.  
Instead of specifying an individual as the filler of the hasTopic  
property for conferences, instead just use an abstract class.  So for  
a conference about relational databases you would say something like
     conference_123 type (some hasTopic RelationalDatabaseTopic)

   Advantages:
     A. There is some aesthetic appeal to not using individual  
prototypes
     B. You get classification of conference types
     C. You get classification of conference individuals

   Disadvantages:
     A. The assertion for an individual conference is more complicated.
     B. The use of the ontology may be harder to explain to novice  
users.
     C. Tool support for this type of assertion is not available.

   What disadvantage A means is that instead of simply asserting a  
filler for the hasTopic property, you assert a restriction by making  
the individual belong to a restriction class.  This is a bit more  
complicated and could be more difficult to explain and realize.  You  
could overcome disadvantage C by having a specialized input widget of  
your own.




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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Timothy Redmond
In reply to this post by Brigitte Müller

Hopefully you will get some other responses to this question - I am not the best expert for a modeling question of this sort.  But I think I know what I would do.

My first answer is "yes" ;).  That is to say, I think that this is a standard difficult question. 

For the Conference class, I feel that I know what the individuals should be.  An individual in the conference class will have a specified name, date and location.  In fact you might choose to use these fields as a key for the Conference class (in Protege 4 there is a hasKey section).

I agree with the notion that Topic should be a class with many subclasses.  A topic is a somewhat nebulous thing and I think it would be hard to say exactly what an individual in the topic class represents.  To say that a particular individual conference, say xyz_conference_2002, has a RelationalDatabaseTopic you can say

Individual: xyz_conference_2002

    Types: 
        hasTopic some RelationalDatabaseTopic,

This way you don't have to make an individual in the RelationalDatabaseTopic class and explain exactly what that individual represents.  In addition you can query for conferences that have a particular topic.  In Protege 4 you can use the DL query tab and ask for individuals in

Conference that hasTopic some RelationalDatabaseTopic

If you stick to an idiom you can even use sparql queries for this.  (SPARQL is poor with inference so you would need to stick to an idiom in any case).

I have seen attempts at meta-modeling and I think that good meta-modeling is difficult.  For this reason I tend to lean against using puns.  I sense that this will probably become a bigger and more complicated issue as you add more details.

In older posts on this list here some people said there is no such thing as abstract classes in OWL, though.

Modulo the open world assumption, classes that are disjoint unions of their subclasses are the closest thing to an abstract class.  This means that any individual in the disjoint union class must be a member of one of the sub classes.  The problem with this is that it is possible for you to know that an individual is in the disjoint union without knowing what subclass contains the individual.

-Timothy



On 03/22/2011 06:46 AM, Brigitte Müller wrote:
Hi,

I'm a student and newbie to the semantic web and I want to write a class Topic that represents a hierarchy of topics. I also have a class Conference, it has data properties like name, date, location. Class Conference has an object property hasTopic to connect conference individuals to multiple topics.

The purpose of the ontology would be to enable searching for individuals of Conference with queries like 'what conferences are there that have the topics Hardware and Databases' for example.  Or 'what conferences do have a topic that is related to Data_Mining'.

So the question is how to design the topic class. I could create a lot of individuals like Databases, Relational_Databases, OO_Databases, and add an object property isPartOf to Topic to create a hierarchy of topics. Then the object property hasTopic could connect Conference and Topic individuals. In 'Ontology Development 101' Noy/McGuinness say that if concepts form a natural hierarchy, then we should represent them as classes. They also say Protege allows us to specify classes as Abstract, signifying they cannot have any direct instances. In older posts on this list here some people said there is no such thing as abstract classes in OWL, though.

So I could use a class Topic and make Databases a subclass of Topic. Relational_Databases would be a subclass of Databases and so on. But how do I link the conference individuals to their topics? When I try to create an individual of conference and edit the object property hasTopic, it only allows me to choose other individuals as Object for the triple. Should I create one individual for every subclass of Topic? That looks wrong to me. I read a class can be an instance of a class, too, could class Databases be an inidvidual of class Databases? How do I do this in Protege? And is it possible to do queries like the two mentioned above, if the topics are just classes and no individuals?

Cheers!
Brigitte





_______________________________________________ protege-owl mailing list [hidden email] https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03


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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Timothy Redmond

I made an ontology for this example but I forgot to attach it.  It is OWL 2 and will only load in Protege 4 but an OWL 1 version could be written.

-Timothy

On 03/22/2011 10:15 AM, Timothy Redmond wrote:

Hopefully you will get some other responses to this question - I am not the best expert for a modeling question of this sort.  But I think I know what I would do.

My first answer is "yes" ;).  That is to say, I think that this is a standard difficult question. 

For the Conference class, I feel that I know what the individuals should be.  An individual in the conference class will have a specified name, date and location.  In fact you might choose to use these fields as a key for the Conference class (in Protege 4 there is a hasKey section).

I agree with the notion that Topic should be a class with many subclasses.  A topic is a somewhat nebulous thing and I think it would be hard to say exactly what an individual in the topic class represents.  To say that a particular individual conference, say xyz_conference_2002, has a RelationalDatabaseTopic you can say

Individual: xyz_conference_2002

    Types: 
        hasTopic some RelationalDatabaseTopic,

This way you don't have to make an individual in the RelationalDatabaseTopic class and explain exactly what that individual represents.  In addition you can query for conferences that have a particular topic.  In Protege 4 you can use the DL query tab and ask for individuals in

Conference that hasTopic some RelationalDatabaseTopic

If you stick to an idiom you can even use sparql queries for this.  (SPARQL is poor with inference so you would need to stick to an idiom in any case).

I have seen attempts at meta-modeling and I think that good meta-modeling is difficult.  For this reason I tend to lean against using puns.  I sense that this will probably become a bigger and more complicated issue as you add more details.

In older posts on this list here some people said there is no such thing as abstract classes in OWL, though.

Modulo the open world assumption, classes that are disjoint unions of their subclasses are the closest thing to an abstract class.  This means that any individual in the disjoint union class must be a member of one of the sub classes.  The problem with this is that it is possible for you to know that an individual is in the disjoint union without knowing what subclass contains the individual.

-Timothy



On 03/22/2011 06:46 AM, Brigitte Müller wrote:
Hi,

I'm a student and newbie to the semantic web and I want to write a class Topic that represents a hierarchy of topics. I also have a class Conference, it has data properties like name, date, location. Class Conference has an object property hasTopic to connect conference individuals to multiple topics.

The purpose of the ontology would be to enable searching for individuals of Conference with queries like 'what conferences are there that have the topics Hardware and Databases' for example.  Or 'what conferences do have a topic that is related to Data_Mining'.

So the question is how to design the topic class. I could create a lot of individuals like Databases, Relational_Databases, OO_Databases, and add an object property isPartOf to Topic to create a hierarchy of topics. Then the object property hasTopic could connect Conference and Topic individuals. In 'Ontology Development 101' Noy/McGuinness say that if concepts form a natural hierarchy, then we should represent them as classes. They also say Protege allows us to specify classes as Abstract, signifying they cannot have any direct instances. In older posts on this list here some people said there is no such thing as abstract classes in OWL, though.

So I could use a class Topic and make Databases a subclass of Topic. Relational_Databases would be a subclass of Databases and so on. But how do I link the conference individuals to their topics? When I try to create an individual of conference and edit the object property hasTopic, it only allows me to choose other individuals as Object for the triple. Should I create one individual for every subclass of Topic? That looks wrong to me. I read a class can be an instance of a class, too, could class Databases be an inidvidual of class Databases? How do I do this in Protege? And is it possible to do queries like the two mentioned above, if the topics are just classes and no individuals?

Cheers!
Brigitte





_______________________________________________ protege-owl mailing list [hidden email] https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03

_______________________________________________ protege-owl mailing list [hidden email] https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03


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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03

Conference.owl (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Berkan Sesen
In reply to this post by Brigitte Müller

Re:  Message ID <[hidden email]>  by Timothy Tredmond

 

Hello,

 

As far as I understand, Brigitte’s problem is a very standard one and originates from choosing to represent conferences as individuals and topics as classes.  Since the domain entity is represented at the individual level and the range entity at the class level, she cannot fill in the range of ‘hasTopic’ object property for conference individuals. I am an engineer and I circumvent this problem by creating ‘reference individuals’, which I use to model the unique occurrences of abstract concepts (in this case, it would be topics). In other words, I would lean towards creating a ‘Database_Reference_Individual’ under the class ‘Database’.

 

Now, I am no expert in ontologies either. I am sure the design concept that I choose to call ‘reference individual’ has a proper name (blasphemy?) among the formal computer scientists and I would love to know it if someone would enlighten me on this issue.

 

Timothy, by adding the class expression “hasTopic some RelationalDatabaseTopic” to the type of the conference individual ‘xyz_conference_2002’, are we are indeed adding an implicit class assertion axiom to the OWL file?  Also, can you elaborate on what you mean by ‘using puns’?

 

Best regards,

Berkan


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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Timothy Redmond

I think that with this question, every choice has its advantages and drawbacks.  If it was trivial it wouldn't be a standard question.

On 03/23/2011 04:13 AM, Berkan Sesen wrote:

Re:  Message ID <[hidden email]>  by Timothy Tredmond

 

Hello,

 

As far as I understand, Brigitte’s problem is a very standard one and originates from choosing to represent conferences as individuals and topics as classes.  Since the domain entity is represented at the individual level and the range entity at the class level, she cannot fill in the range of ‘hasTopic’ object property for conference individuals. I am an engineer and I circumvent this problem by creating ‘reference individuals’, which I use to model the unique occurrences of abstract concepts (in this case, it would be topics). In other words, I would lean towards creating a ‘Database_Reference_Individual’ under the class ‘Database’.


I tend not to like this because it adds some semantics to the ontology that may not be desirable.  So for example, in the context of our initial example there might be an OO_Database_Topic class and an OO_Database_Reference_Topic.  Suppose one chooses to assert that a conference has an OO_Database_Topic by assigning the hasTopic value of OO_Database_Reference_Topic.   The consequence would be that any two conferences which have the OO_Database_Topic will share exactly the same topic.  This may not actually be the desirable case as it may be that on a more detailed examination the two conferences are dealing with two disjoint topic subareas of the OO_Database_Topic.  That said I think that this can be made to work.

 

Now, I am no expert in ontologies either. I am sure the design concept that I choose to call ‘reference individual’ has a proper name (blasphemy?) among the formal computer scientists and I would love to know it if someone would enlighten me on this issue.

 

Timothy, by adding the class expression “hasTopic some RelationalDatabaseTopic” to the type of the conference individual ‘xyz_conference_2002’, are we are indeed adding an implicit class assertion axiom to the OWL file? 


Yes but I feel I have missed the point of the question here.

Also, can you elaborate on what you mean by ‘using puns’?


Puns are the OWL 2 answer to meta-modeling.  People often want to make classes be members of other classes for example.  Suppose that we have an individual x which is a member of the class A which is in turn a member of the meta class B.   In OWL 2 we would handle the meta-modeling by creating an individual A which has the same name as the class A.  This is the pun.  Then the OWL 2 ontology would contain the assertion that x is a member of the class A and the individual A is a member of the class B.   The meta-class B contains individuals who are punned as classes.

I have seen some people work with meta-modeling and I think that it is hard to do well.  So for example, in the conference example, suppose that I say

my_conference hasTopic OO_Database_Topic

where this means that the my_conference individual has a hasTopic value of OO_Database_Topic where OO_Database_Topic is a class.  One might (or perhaps might not) think that the fact that

OO_Database_Topic SubClassOf Database_Topic

has some bearing here.  But actually with the meta-modeling approach these are two completely independent statements that are really talking about different things and cannot be used to form any inference together.   This is an example where with the meta-modeling approach it is unclear how things are supposed to be interpreted and what inferences are supposed to follow.  By taking a more owlish non-metamodeling approach I think that the intended meaning is made clearer.

So I would personally tend to prefer the reference individual approach over the meta-modeling approach as with the reference individuals it is at least very clear what is being said.

-Timothy





    

 

Best regards,

Berkan

_______________________________________________ protege-owl mailing list [hidden email] https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03


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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Brigitte Müller
In reply to this post by Brigitte Müller
Hi,

Thomas, thanks a lot for your detailed comment.

--- Thomas Russ <[hidden email]> schrieb am Di, 22.3.2011:
> 3.  Create a "prototypical" individual for each topic class.  [...]
  I think that this might be the most pragmatic choice for your situation, in that you will be able to exploit the hierarchy and the handling of assertions is straight-forward.  You would also get the classification results for conference types, allowing you to use the reasoners to maintain a hierarchy of conference types based on their topics.  It will also automatically classify individual conferences based on their topics.


I think I'll do it this way. I was afraid I might make a mistake by creating classes with only one "artificial" individual for each class. So I'm glad to hear that's not the case.
Currently I'm experimenting with Protege and the SDB Store from Jena. I guess in the end I'll create the topic ontology with Protege, load it into SDB. The conference information will be added from a Java program that collects data on the web. Since I don't know yet what kind of reasoning and queries are supported by Jena I'd rather not use something that's not well supported by reasoning tools or a complicated approach, since I'm not an experienced user.

Regards,
Brigitte



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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Brigitte Müller
In reply to this post by Brigitte Müller
--- Timothy Redmond <[hidden email]> wrote:
> For the Conference class, I feel that I know what the individuals
>    should be.  An individual in the conference class will have a
>    specified name, date and location.  In fact you might choose to use
>    these fields as a key for the Conference class (in Protege 4 there
>    is a hasKey section).

Where is the hasKey section? Maybe I'm blind, I couldn't find it. When I open your example file in Protege, there's an individual genid1, is it some auto generated id?

Thanks for your example ontology. When I compared your file with the one I'd written, I noticed I'd made a mistake in defining the object property hasTopic and could fix it.
 
My ontology is similar to yours, but I didn't use a collection for name, date and location. My individuals are owl:Thing and not owl:NamedIndividual, maybe I should change my version to OWL 2.
And of course, there's the difference that I created one individual for each topic subclass. For now I'll leave it like that, because I want to avoid OWL Full.
   
 
>If you stick to an idiom you can even use sparql queries for this. 
>    (SPARQL is poor with inference so you would need to stick to an
>    idiom in any case).

Yesterday I was trying to formulate SPARQL queries and use them with Jena SDB on the command line. Good to know that SPARQL is not good with inference, guess I'll have to look into the Jena inference support. 

-Brigitte




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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Berkan Sesen
In reply to this post by Brigitte Müller
Hello Timothy,

Thank you for your prompt reply. Just to conclude and clarify, here are two brief questions:

1) So, can we agree that the "Reference Individual" design approach is a valid one? Thomas Russ has suggested the exact same thing (to Brigitte) but with a different name, i.e. "creating a prototypical individual for each topic class". And I take that you also prefer this way over the 'meta-modelling' approach, which involves using puns.

2) Is there an established name for this design phenomenon? I am just asking because if there is one, I would like to stop calling it "reference individuals" and start using the appropriate jargon and use it as my key-word/phrase to 'google' and read more about it.

Cheers,
Berkan

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of [hidden email]
Sent: 23 March 2011 15:11
To: [hidden email]
Subject: protege-owl Digest, Vol 56, Issue 48

Send protege-owl mailing list submissions to
        [hidden email]

To subscribe or unsubscribe via the World Wide Web, visit
        https://mailman.stanford.edu/mailman/listinfo/protege-owl
or, via email, send a message with subject or body 'help' to
        [hidden email]

You can reach the person managing the list at
        [hidden email]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of protege-owl digest..."


Today's Topics:

   1. Executing SQWRL Example Add Rule (Vivek Anandan)
   2. Re: Ontology design - Classes or individuals (Timothy Redmond)
   3. Re: Ontology design - Classes or individuals (Brigitte M?ller)
   4. Re: Ontology design - Classes or individuals (Brigitte M?ller)
   5. Re: Executing SQWRL Example Add Rule (Martin O'Connor)


----------------------------------------------------------------------

Message: 1
Date: Wed, 23 Mar 2011 17:08:30 +0530
From: Vivek Anandan <[hidden email]>
To: [hidden email]
Subject: [protege-owl] Executing SQWRL Example Add Rule
Message-ID:
        <AANLkTikvLRORReoaafPGAk1=[hidden email]>
Content-Type: text/plain; charset="iso-8859-1"

Hi All,
I want to execute the Rules in the SQWRL Example available in protege 3.4.4
(Say Add Rule) from java program.
Can some one send a sample code of it.
Thanks in Advance
--
Regards,
Vivekanandan Ramachandran.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.stanford.edu/pipermail/protege-owl/attachments/20110323/14612332/attachment-0001.htm>

------------------------------

Message: 2
Date: Wed, 23 Mar 2011 06:39:25 -0700
From: Timothy Redmond <[hidden email]>
To: [hidden email]
Subject: Re: [protege-owl] Ontology design - Classes or individuals
Message-ID: <[hidden email]>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"


I think that with this question, every choice has its advantages and
drawbacks.  If it was trivial it wouldn't be a standard question.

On 03/23/2011 04:13 AM, Berkan Sesen wrote:

>
> Re:  Message ID<[hidden email]
> <mailto:[hidden email]>>  by Timothy Tredmond
>
> Hello,
>
> As far as I understand, Brigitte's problem is a very standard one and
> originates from choosing to represent conferences as individuals and
> topics as classes.  Since the domain entity is represented at the
> individual level and the range entity at the class level, she cannot
> fill in the range of 'hasTopic' object property for conference
> individuals. I am an engineer and I circumvent this problem by
> creating 'reference individuals', which I use to model the unique
> occurrences of abstract concepts (in this case, it would be topics).
> In other words, I would lean towards creating a
> 'Database_Reference_Individual' under the class 'Database'.
>

I tend not to like this because it adds some semantics to the ontology
that may not be desirable.  So for example, in the context of our
initial example there might be an OO_Database_Topic class and an
OO_Database_Reference_Topic.  Suppose one chooses to assert that a
conference has an OO_Database_Topic by assigning the hasTopic value of
OO_Database_Reference_Topic.   The consequence would be that any two
conferences which have the OO_Database_Topic will share exactly the same
topic.  This may not actually be the desirable case as it may be that on
a more detailed examination the two conferences are dealing with two
disjoint topic subareas of the OO_Database_Topic.  That said I think
that this can be made to work.

> Now, I am no expert in ontologies either. I am sure the design concept
> that I choose to call 'reference individual' has a proper name
> (blasphemy?) among the formal computer scientists and I would love to
> know it if someone would enlighten me on this issue.
>
> Timothy, by adding the class expression "hasTopic some
> RelationalDatabaseTopic" to the type of the conference individual
> 'xyz_conference_2002', are we are indeed adding an implicit class
> assertion axiom to the OWL file?
>

Yes but I feel I have missed the point of the question here.

> Also, can you elaborate on what you mean by 'using puns'?
>

Puns are the OWL 2 answer to meta-modeling.  People often want to make
classes be members of other classes for example.  Suppose that we have
an individual x which is a member of the class A which is in turn a
member of the meta class B.   In OWL 2 we would handle the meta-modeling
by creating an individual A which has the same name as the class A.  
This is the pun.  Then the OWL 2 ontology would contain the assertion
that x is a member of the class A and the individual A is a member of
the class B.   The meta-class B contains individuals who are punned as
classes.

I have seen some people work with meta-modeling and I think that it is
hard to do well.  So for example, in the conference example, suppose
that I say

    my_conference hasTopic OO_Database_Topic


where this means that the my_conference individual has a hasTopic value
of OO_Database_Topic where OO_Database_Topic is a class.  One might (or
perhaps might not) think that the fact that

    OO_Database_Topic SubClassOf Database_Topic


has some bearing here.  But actually with the meta-modeling approach
these are two completely independent statements that are really talking
about different things and cannot be used to form any inference
together.   This is an example where with the meta-modeling approach it
is unclear how things are supposed to be interpreted and what inferences
are supposed to follow.  By taking a more owlish non-metamodeling
approach I think that the intended meaning is made clearer.

So I would personally tend to prefer the reference individual approach
over the meta-modeling approach as with the reference individuals it is
at least very clear what is being said.

-Timothy




> Best regards,
>
> Berkan
>
>
> _______________________________________________
> protege-owl mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-owl
>
> Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.stanford.edu/pipermail/protege-owl/attachments/20110323/83324fb8/attachment-0001.htm>

------------------------------

Message: 3
Date: Wed, 23 Mar 2011 13:49:28 +0000 (GMT)
From: Brigitte M?ller <[hidden email]>
To: User support for the Protege-OWL editor
        <[hidden email]>
Subject: Re: [protege-owl] Ontology design - Classes or individuals
Message-ID: <[hidden email]>
Content-Type: text/plain; charset=iso-8859-1

Hi,

Thomas, thanks a lot for your detailed comment.

--- Thomas Russ <[hidden email]> schrieb am Di, 22.3.2011:
> 3.? Create a "prototypical" individual for each topic class.? [...]
? I think that this might be the most pragmatic choice for your situation, in that you will be able to exploit the hierarchy and the handling of assertions is straight-forward.? You would also get the classification results for conference types, allowing you to use the reasoners to maintain a hierarchy of conference types based on their topics.? It will also automatically classify individual conferences based on their topics.


I think I'll do it this way. I was afraid I might make a mistake by creating classes with only one "artificial" individual for each class. So I'm glad to hear that's not the case.
Currently I'm experimenting with Protege and the SDB Store from Jena. I guess in the end I'll create the topic ontology with Protege, load it into SDB. The conference information will be added from a Java program that collects data on the web. Since I don't know yet what kind of reasoning and queries are supported by Jena I'd rather not use something that's not well supported by reasoning tools or a complicated approach, since I'm not an experienced user.

Regards,
Brigitte





------------------------------

Message: 4
Date: Wed, 23 Mar 2011 14:29:55 +0000 (GMT)
From: Brigitte M?ller <[hidden email]>
To: User support for the Protege-OWL editor
        <[hidden email]>
Subject: Re: [protege-owl] Ontology design - Classes or individuals
Message-ID: <[hidden email]>
Content-Type: text/plain; charset=iso-8859-1

--- Timothy Redmond <[hidden email]> wrote:
> For the Conference class, I feel that I know what the individuals
>? ? should be.? An individual in the conference class will have a
>? ? specified name, date and location.? In fact you might choose to use
>? ? these fields as a key for the Conference class (in Protege 4 there
>? ? is a hasKey section).

Where is the hasKey section? Maybe I'm blind, I couldn't find it. When I open your example file in Protege, there's an individual genid1, is it some auto generated id?

Thanks for your example ontology. When I compared your file with the one I'd written, I noticed I'd made a mistake in defining the object property hasTopic and could fix it.
 
My ontology is similar to yours, but I didn't use a collection for name, date and location. My individuals are owl:Thing and not owl:NamedIndividual, maybe I should change my version to OWL 2.
And of course, there's the difference that I created one individual for each topic subclass. For now I'll leave it like that, because I want to avoid OWL Full.
? ?
 
>If you stick to an idiom you can even use sparql queries for this.?
>? ? (SPARQL is poor with inference so you would need to stick to an
>? ? idiom in any case).

Yesterday I was trying to formulate SPARQL queries and use them with Jena SDB on the command line. Good to know that SPARQL is not good with inference, guess I'll have to look into the Jena inference support.?

-Brigitte






------------------------------

Message: 5
Date: Wed, 23 Mar 2011 08:10:30 -0700
From: Martin O'Connor <[hidden email]>
To: [hidden email]
Subject: Re: [protege-owl] Executing SQWRL Example Add Rule
Message-ID: <[hidden email]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed


An API for executing SWRL rules can be found here:

http://protege.cim3.net/cgi-bin/wiki.pl?SWRLRuleEngineAPI

An API for executing SQWRL queries can be found here:

http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryAPI

Martin


On 3/23/2011 4:38 AM, Vivek Anandan wrote:

> Hi All,
> I want to execute the Rules in the SQWRL Example available in protege 3.4.4 (Say Add Rule) from java program.
> Can some one send a sample code of it.
> Thanks in Advance
> --
> Regards,
> Vivekanandan Ramachandran.
>
>
> _______________________________________________
> protege-owl mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-owl
>
> Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03



------------------------------

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


End of protege-owl Digest, Vol 56, Issue 48
*******************************************
_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Ontology design - Classes or individuals

Timothy Redmond
On 03/23/2011 08:43 AM, Berkan Sesen wrote:
> Hello Timothy,
>
> Thank you for your prompt reply. Just to conclude and clarify, here are two brief questions:
>
> 1) So, can we agree that the "Reference Individual" design approach is a valid one? Thomas Russ has suggested the exact same thing (to Brigitte) but with a different name, i.e. "creating a prototypical individual for each topic class". And I take that you also prefer this way over the 'meta-modelling' approach, which involves using puns.

I am writing this quickly but I think that there is a working group
document [1] about this very issue [2] .  I think the reference
individual approach is approach #2 and my favored approach is closer to
approach #4.  Given the authority of this document I would figure that
these are all valid approaches.

> 2) Is there an established name for this design phenomenon? I am just asking because if there is one, I would like to stop calling it "reference individuals" and start using the appropriate jargon and use it as my key-word/phrase to 'google' and read more about it.

I don't know - approach #2 and approach #4 is worse :).

-Timothy

[1]http://www.w3.org/2001/sw/BestPractices/
[2]http://www.w3.org/TR/swbp-classes-as-values/

> 2) Is there an established name for this design phenomenon? I am just asking because if there is one, I would like to stop calling it "reference individuals" and start using the appropriate jargon and use it as my key-word/phrase to 'google' and read more about it.
>
> Cheers,
> Berkan
>
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf Of [hidden email]
> Sent: 23 March 2011 15:11
> To: [hidden email]
> Subject: protege-owl Digest, Vol 56, Issue 48
>
> Send protege-owl mailing list submissions to
> [hidden email]
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://mailman.stanford.edu/mailman/listinfo/protege-owl
> or, via email, send a message with subject or body 'help' to
> [hidden email]
>
> You can reach the person managing the list at
> [hidden email]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of protege-owl digest..."
>
>
> Today's Topics:
>
>     1. Executing SQWRL Example Add Rule (Vivek Anandan)
>     2. Re: Ontology design - Classes or individuals (Timothy Redmond)
>     3. Re: Ontology design - Classes or individuals (Brigitte M?ller)
>     4. Re: Ontology design - Classes or individuals (Brigitte M?ller)
>     5. Re: Executing SQWRL Example Add Rule (Martin O'Connor)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 23 Mar 2011 17:08:30 +0530
> From: Vivek Anandan<[hidden email]>
> To: [hidden email]
> Subject: [protege-owl] Executing SQWRL Example Add Rule
> Message-ID:
> <AANLkTikvLRORReoaafPGAk1=[hidden email]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi All,
> I want to execute the Rules in the SQWRL Example available in protege 3.4.4
> (Say Add Rule) from java program.
> Can some one send a sample code of it.
> Thanks in Advance

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

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03