How to connect one individual to multiple classes

View: New views
10 Messages — Rating Filter:   Alert me  

How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Recently I am trying to build an OWL model for touring/entertainment related businesses. I have categorized these businesses into one category hierarchy like the following:

Site(Root)
+---WaterPark
+---Resort
.......
+---AgriculturalField
    +---Orchard
+---CollectionExhibition
    +---ExhibitionHall
    +---Memorial
    +---Museum
+---SportsField
    +---Playground
    +---Stadium
.......

The goal is, given any category in the hierarchy, we can return all related businesses back. For example, given "Museum" as the category, we are supposed to return all museums; given "CollectionExhibition", all museums, memorials and exbitionHalls are returned.

One thing is one business might have more than one services to offer. Here is an example: a resort has hotels, bars and some other regular facilities, it also has one indoor water park because of its hot spring water resource.. So this resort should be categorized into 2 different categories: "Resort" and "WaterPark". Given either "Resort" or "WaterPark" is chosen as the category, this resort should be returned as a match.

The another one is that one business may fall into non-leaf categories, like "AgriculturalField" instead of "Orchard".

Technically I would prefer:

1 Businesses are individuals of an owl:Class. Categories could be antything, if it supports reasoning. This is different from the Protege Pizza sample, while pizza are classes.

2 When adding new businesses, we only need to add new business individual(maybe we need to add more categories), and connect the new individuals to the categories.

I have been trying different ways, but still no success.

Any help would be highly appreciated.

Ningfeng



      ___________________________________________________________
  好玩贺卡等你发,邮箱贺卡全新上线!
http://card.mail.cn.yahoo.com/



Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Uli, thanks for your reply.

Originally, carrying the Object Oriented Analysis spirit, and being new to semantic world, I started with:

1 Let the business be instance of an owl:Class Business;
2 The categories are classes, so it is easy to make a hierarchy and all siblings disjointed with each other;
3 Class Business has one object property, hasSite, which has the category as the value. In case of multiple categories, one business instance has multiple hasSite properties.

While, obviously, this ontology is OWL Full, since hasSite has owl:Class as its value.

I haven't tried to convert categories from owl:Class to instance so hasSite is good for OWL DL. But how much can reasoner get out from property value? For example:

business1 hasSite Orchard
business2 hasSite AgriculturalField

If we want to list all businesses which is under AgriculturalField, can business1 and business2 both be returned? I don't know...


Ningfeng


--- On Wed, 5/13/09, Uli Sattler <sattler@...> wrote:

> From: Uli Sattler <sattler@...>
> Subject: Re: How to connect one individual to multiple classes
> To: "Xu, Ningfeng" <nfxu@...>
> Date: Wednesday, May 13, 2009, 11:01 PM
> Hi Xu, I can't see where the problem
> is: you can say that an individual is a member of more than
> one class...
>
> Conceptually, you might want to *relate* them: instead of
> saying "this business *is a* restaurant and a water park,
> you might want to say that, among the things/services it
> *offers*, there is a restaurant and a water park.
>
>
> Cheers, Uli
>
> On 13 May 2009, at 13:09, Xu, Ningfeng wrote:
>
> > Hi,
> >
> > Recently I am trying to build an OWL model for
> touring/entertainment related businesses. I have categorized
> these businesses into one category hierarchy like the
> following:
> >
> > Site(Root)
> > +---WaterPark
> > +---Resort
> > .......
> > +---AgriculturalField
> >    +---Orchard
> > +---CollectionExhibition
> >    +---ExhibitionHall
> >    +---Memorial
> >    +---Museum
> > +---SportsField
> >    +---Playground
> >    +---Stadium
> > .......
> >
> > The goal is, given any category in the hierarchy, we
> can return all related businesses back. For example, given
> "Museum" as the category, we are supposed to return all
> museums; given "CollectionExhibition", all museums,
> memorials and exbitionHalls are returned.
> >
> > One thing is one business might have more than one
> services to offer. Here is an example: a resort has hotels,
> bars and some other regular facilities, it also has one
> indoor water park because of its hot spring water resource..
> So this resort should be categorized into 2 different
> categories: "Resort" and "WaterPark". Given either "Resort"
> or "WaterPark" is chosen as the category, this resort should
> be returned as a match.
> >
> > The another one is that one business may fall into
> non-leaf categories, like "AgriculturalField" instead of
> "Orchard".
> >
> > Technically I would prefer:
> >
> > 1 Businesses are individuals of an owl:Class.
> Categories could be antything, if it supports reasoning.
> This is different from the Protege Pizza sample, while pizza
> are classes.
> >
> > 2 When adding new businesses, we only need to add new
> business individual(maybe we need to add more categories),
> and connect the new individuals to the categories.
> >
> > I have been trying different ways, but still no
> success.
> >
> > Any help would be highly appreciated.
> >
> > Ningfeng
> >
> >





Re: How to connect one individual to multiple classes

by Pat Hayes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi. I'm not sure what exactly your problem is, as this seems to  
obviously be a class/subclass structure. And yes, an individual can be  
in more than one class, ands indeed a class can be a subclass of more  
than one class.

Can you be more precise about what exactly it is that is not working  
for you?

Pat Hayes


On May 13, 2009, at 7:09 AM, Xu, Ningfeng wrote:

> Hi,
>
> Recently I am trying to build an OWL model for touring/entertainment  
> related businesses. I have categorized these businesses into one  
> category hierarchy like the following:
>
> Site(Root)
> +---WaterPark
> +---Resort
> .......
> +---AgriculturalField
>    +---Orchard
> +---CollectionExhibition
>    +---ExhibitionHall
>    +---Memorial
>    +---Museum
> +---SportsField
>    +---Playground
>    +---Stadium
> .......
>
> The goal is, given any category in the hierarchy, we can return all  
> related businesses back. For example, given "Museum" as the  
> category, we are supposed to return all museums; given  
> "CollectionExhibition", all museums, memorials and exbitionHalls are  
> returned.
>
> One thing is one business might have more than one services to  
> offer. Here is an example: a resort has hotels, bars and some other  
> regular facilities, it also has one indoor water park because of its  
> hot spring water resource.. So this resort should be categorized  
> into 2 different categories: "Resort" and "WaterPark". Given either  
> "Resort" or "WaterPark" is chosen as the category, this resort  
> should be returned as a match.
>
> The another one is that one business may fall into non-leaf  
> categories, like "AgriculturalField" instead of "Orchard".
>
> Technically I would prefer:
>
> 1 Businesses are individuals of an owl:Class. Categories could be  
> antything, if it supports reasoning. This is different from the  
> Protege Pizza sample, while pizza are classes.
>
> 2 When adding new businesses, we only need to add new business  
> individual(maybe we need to add more categories), and connect the  
> new individuals to the categories.
>
> I have been trying different ways, but still no success.
>
> Any help would be highly appreciated.
>
> Ningfeng
>
>
>
>      ___________________________________________________________
>  好玩贺卡等你发,邮箱贺卡全新上线!
> http://card.mail.cn.yahoo.com/
>
>
>
>

------------------------------------------------------------
IHMC                                     (850)434 8903 or (650)494 3973
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile
phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes







Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


I haven't looked into OWL 2(Primer). So here I am with OWL 1.

Regarding "ClassAssertion((Business and (hasSite some Resort) and (hasSite some Waterpark)) yourBusiness)", how can I declare an individual business(waterParkResort)? I am trying to do this:

  <owl:Class rdf:about="#Business">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:someValuesFrom rdf:resource="#Site"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasSite"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    ...
  </owl:Class>

  <Business rdf:ID="waterParkResort">
    ...hasSite Waterpark...                 ==> how to declare this?
    ...hasSite Resort...                    ==> how to declare this?
  </Business>

I couldn't find appropriate OWL contructs to declare that waterParkResort has both Resort and Waterpark when declaring waterParkResort as an instance of class Business. I think this is my problem.

Thanks for your help.

Ningfeng


--- On Thu, 5/14/09, Uli Sattler <sattler@...> wrote:

> From: Uli Sattler <sattler@...>
> Subject: Re: How to connect one individual to multiple classes
> To: "Xu, Ningfeng" <nfxu@...>
> Date: Thursday, May 14, 2009, 3:00 AM
>
> On 13 May 2009, at 19:33, Xu, Ningfeng wrote:
>
> >
> > Uli, thanks for your reply.
> >
> > Originally, carrying the Object Oriented Analysis
> spirit, and being new to semantic world, I started with:
> >
> > 1 Let the business
>
> so, this is 'yourBusiness', I guess.
>
> > be instance of an owl:Class Business;
> > 2 The categories
>
> like restaurant, waterpark? Do they have a common
> superclass, say, "Attraction"?
>
> > are classes, so it is easy to make a hierarchy and all
> siblings disjointed with each other;
>
> ok
>
> >
> > 3 Class Business has one object property, hasSite,
> which has the category as the value.
>
> hm, how does this look like in OWL?
>
> SubClassOf(Business (hasSite some Attraction))
>
> or
>
> SubClassOf(Business (hasSite only Attraction))
>
>
> > In case of multiple categories, one business instance
> has multiple hasSite properties.
> >
>
> fine - as long as you don't declare hasSite to be
> functional and as long as you don't use atmost cardinality
> restriction on hasSite, this is possible.
>
> > While, obviously, this ontology is OWL Full, since
> hasSite has owl:Class as its value.
> >
>
> now you lost me...you can say that
>
> ClassAssertion((Business and (hasSite some Restaurant) and
> (hasSite some Waterpark) yourBusiness)
>
> without leaving OWL DL...
>
>
>
> > I haven't tried to convert categories from owl:Class
> to instance so hasSite is good for OWL DL. But how much can
> reasoner get out from property value? For example:
> >
> > business1 hasSite Orchard
> > business2 hasSite AgriculturalField
> >
> > If we want to list all businesses which is under
> AgriculturalField, can business1 and business2 both be
> returned? I don't know...
> >
>
> yes, it would, if you would rephrase it in the above style
> using 'some'...
>
> Did you have a look at the OWL primer (http://www.w3.org/2007/OWL/wiki/Primer)? Cheers, Uli
> >
> > Ningfeng
> >
> >
> > --- On Wed, 5/13/09, Uli Sattler <sattler@...>
> wrote:
> >
> >> From: Uli Sattler <sattler@...>
> >> Subject: Re: How to connect one individual to
> multiple classes
> >> To: "Xu, Ningfeng" <nfxu@...>
> >> Date: Wednesday, May 13, 2009, 11:01 PM
> >> Hi Xu, I can't see where the problem
> >> is: you can say that an individual is a member of
> more than
> >> one class...
> >>
> >> Conceptually, you might want to *relate* them:
> instead of
> >> saying "this business *is a* restaurant and a
> water park,
> >> you might want to say that, among the
> things/services it
> >> *offers*, there is a restaurant and a water park.
> >>
> >>
> >> Cheers, Uli
> >>
> >> On 13 May 2009, at 13:09, Xu, Ningfeng wrote:
> >>
> >>> Hi,
> >>>
> >>> Recently I am trying to build an OWL model
> for
> >> touring/entertainment related businesses. I have
> categorized
> >> these businesses into one category hierarchy like
> the
> >> following:
> >>>
> >>> Site(Root)
> >>> +---WaterPark
> >>> +---Resort
> >>> .......
> >>> +---AgriculturalField
> >>>     +---Orchard
> >>> +---CollectionExhibition
> >>>     +---ExhibitionHall
> >>>     +---Memorial
> >>>     +---Museum
> >>> +---SportsField
> >>>     +---Playground
> >>>     +---Stadium
> >>> .......
> >>>
> >>> The goal is, given any category in the
> hierarchy, we
> >> can return all related businesses back. For
> example, given
> >> "Museum" as the category, we are supposed to
> return all
> >> museums; given "CollectionExhibition", all
> museums,
> >> memorials and exbitionHalls are returned.
> >>>
> >>> One thing is one business might have more than
> one
> >> services to offer. Here is an example: a resort
> has hotels,
> >> bars and some other regular facilities, it also
> has one
> >> indoor water park because of its hot spring water
> resource..
> >> So this resort should be categorized into 2
> different
> >> categories: "Resort" and "WaterPark". Given either
> "Resort"
> >> or "WaterPark" is chosen as the category, this
> resort should
> >> be returned as a match.
> >>>
> >>> The another one is that one business may fall
> into
> >> non-leaf categories, like "AgriculturalField"
> instead of
> >> "Orchard".
> >>>
> >>> Technically I would prefer:
> >>>
> >>> 1 Businesses are individuals of an owl:Class.
> >> Categories could be antything, if it supports
> reasoning.
> >> This is different from the Protege Pizza sample,
> while pizza
> >> are classes.
> >>>
> >>> 2 When adding new businesses, we only need to
> add new
> >> business individual(maybe we need to add more
> categories),
> >> and connect the new individuals to the
> categories.
> >>>
> >>> I have been trying different ways, but still
> no
> >> success.
> >>>
> >>> Any help would be highly appreciated.
> >>>
> >>> Ningfeng
> >>>
> >>>
> >
> >
> >
> >
>
>






Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Ok, I will read the OWL 2 Primer, will see what I can get.

Currently I am using Protege 3(thus OWL 1).

Thanks a lot.

Ningfeng


--- On Fri, 5/15/09, Uli Sattler <sattler@...> wrote:

> From: Uli Sattler <sattler@...>
> Subject: Re: How to connect one individual to multiple classes
> To: nfxu@...
> Date: Friday, May 15, 2009, 5:45 PM
>
> On 14 May 2009, at 21:12, nfxu@...
> wrote:
>
> >
> > I haven't looked into OWL 2(Primer). So here I am with
> OWL 1.
> >
>
> ...don't bother whether it's "2" or "1" just read through
> the primer: 
> it should clarify a lot of things. Also, what editor do you
> use? I'd 
> recommend Protege 4.
>
> Cheers, Uli
>
> > Regarding "ClassAssertion((Business and (hasSite some
> Resort) and 
> > (hasSite some Waterpark)) yourBusiness)", how can I
> declare an 
> > individual business(waterParkResort)? I am trying to
> do this:
> >
> >   <owl:Class
> rdf:about="#Business">
> >     <rdfs:subClassOf>
> >   
>    <owl:Restriction>
> >     
>    <owl:someValuesFrom
> rdf:resource="#Site"/>
> >     
>    <owl:onProperty>
> >       
>    <owl:ObjectProperty
> rdf:ID="hasSite"/>
> >     
>    </owl:onProperty>
> >   
>    </owl:Restriction>
> >     </rdfs:subClassOf>
> >     ...
> >   </owl:Class>
> >
> >   <Business
> rdf:ID="waterParkResort">
> >     ...hasSite Waterpark... 
>            
>    ==> how to declare this?
> >     ...hasSite Resort... 
>                
>   ==> how to declare this?
> >   </Business>
> >
> > I couldn't find appropriate OWL contructs to declare
> that 
> > waterParkResort has both Resort and Waterpark when
> declaring 
> > waterParkResort as an instance of class Business. I
> think this is my 
> > problem.
> >
> > Thanks for your help.
> >
> > Ningfeng
> >
> >
> > --- On Thu, 5/14/09, Uli Sattler <sattler@...>
> wrote:
> >
> >> From: Uli Sattler <sattler@...>
> >> Subject: Re: How to connect one individual to
> multiple classes
> >> To: "Xu, Ningfeng" <nfxu@...>
> >> Date: Thursday, May 14, 2009, 3:00 AM
> >>
> >> On 13 May 2009, at 19:33, Xu, Ningfeng wrote:
> >>
> >>>
> >>> Uli, thanks for your reply.
> >>>
> >>> Originally, carrying the Object Oriented
> Analysis
> >> spirit, and being new to semantic world, I started
> with:
> >>>
> >>> 1 Let the business
> >>
> >> so, this is 'yourBusiness', I guess.
> >>
> >>> be instance of an owl:Class Business;
> >>> 2 The categories
> >>
> >> like restaurant, waterpark? Do they have a common
> >> superclass, say, "Attraction"?
> >>
> >>> are classes, so it is easy to make a hierarchy
> and all
> >> siblings disjointed with each other;
> >>
> >> ok
> >>
> >>>
> >>> 3 Class Business has one object property,
> hasSite,
> >> which has the category as the value.
> >>
> >> hm, how does this look like in OWL?
> >>
> >> SubClassOf(Business (hasSite some Attraction))
> >>
> >> or
> >>
> >> SubClassOf(Business (hasSite only Attraction))
> >>
> >>
> >>> In case of multiple categories, one business
> instance
> >> has multiple hasSite properties.
> >>>
> >>
> >> fine - as long as you don't declare hasSite to be
> >> functional and as long as you don't use atmost
> cardinality
> >> restriction on hasSite, this is possible.
> >>
> >>> While, obviously, this ontology is OWL Full,
> since
> >> hasSite has owl:Class as its value.
> >>>
> >>
> >> now you lost me...you can say that
> >>
> >> ClassAssertion((Business and (hasSite some
> Restaurant) and
> >> (hasSite some Waterpark) yourBusiness)
> >>
> >> without leaving OWL DL...
> >>
> >>
> >>
> >>> I haven't tried to convert categories from
> owl:Class
> >> to instance so hasSite is good for OWL DL. But how
> much can
> >> reasoner get out from property value? For
> example:
> >>>
> >>> business1 hasSite Orchard
> >>> business2 hasSite AgriculturalField
> >>>
> >>> If we want to list all businesses which is
> under
> >> AgriculturalField, can business1 and business2
> both be
> >> returned? I don't know...
> >>>
> >>
> >> yes, it would, if you would rephrase it in the
> above style
> >> using 'some'...
> >>
> >> Did you have a look at the OWL primer (http://www.w3.org/2007/OWL/wiki/Primer)?
> >>  Cheers, Uli
> >>>
> >>> Ningfeng
> >>>
> >>>
> >>> --- On Wed, 5/13/09, Uli Sattler <sattler@...>
> >> wrote:
> >>>
> >>>> From: Uli Sattler <sattler@...>
> >>>> Subject: Re: How to connect one individual
> to
> >> multiple classes
> >>>> To: "Xu, Ningfeng" <nfxu@...>
> >>>> Date: Wednesday, May 13, 2009, 11:01 PM
> >>>> Hi Xu, I can't see where the problem
> >>>> is: you can say that an individual is a
> member of
> >> more than
> >>>> one class...
> >>>>
> >>>> Conceptually, you might want to *relate*
> them:
> >> instead of
> >>>> saying "this business *is a* restaurant
> and a
> >> water park,
> >>>> you might want to say that, among the
> >> things/services it
> >>>> *offers*, there is a restaurant and a
> water park.
> >>>>
> >>>>
> >>>> Cheers, Uli
> >>>>
> >>>> On 13 May 2009, at 13:09, Xu, Ningfeng
> wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> Recently I am trying to build an OWL
> model
> >> for
> >>>> touring/entertainment related businesses.
> I have
> >> categorized
> >>>> these businesses into one category
> hierarchy like
> >> the
> >>>> following:
> >>>>>
> >>>>> Site(Root)
> >>>>> +---WaterPark
> >>>>> +---Resort
> >>>>> .......
> >>>>> +---AgriculturalField
> >>>>>      +---Orchard
> >>>>> +---CollectionExhibition
> >>>>>     
> +---ExhibitionHall
> >>>>>      +---Memorial
> >>>>>      +---Museum
> >>>>> +---SportsField
> >>>>>      +---Playground
> >>>>>      +---Stadium
> >>>>> .......
> >>>>>
> >>>>> The goal is, given any category in
> the
> >> hierarchy, we
> >>>> can return all related businesses back.
> For
> >> example, given
> >>>> "Museum" as the category, we are supposed
> to
> >> return all
> >>>> museums; given "CollectionExhibition",
> all
> >> museums,
> >>>> memorials and exbitionHalls are returned.
> >>>>>
> >>>>> One thing is one business might have
> more than
> >> one
> >>>> services to offer. Here is an example: a
> resort
> >> has hotels,
> >>>> bars and some other regular facilities, it
> also
> >> has one
> >>>> indoor water park because of its hot
> spring water
> >> resource..
> >>>> So this resort should be categorized into
> 2
> >> different
> >>>> categories: "Resort" and "WaterPark".
> Given either
> >> "Resort"
> >>>> or "WaterPark" is chosen as the category,
> this
> >> resort should
> >>>> be returned as a match.
> >>>>>
> >>>>> The another one is that one business
> may fall
> >> into
> >>>> non-leaf categories, like
> "AgriculturalField"
> >> instead of
> >>>> "Orchard".
> >>>>>
> >>>>> Technically I would prefer:
> >>>>>
> >>>>> 1 Businesses are individuals of an
> owl:Class.
> >>>> Categories could be antything, if it
> supports
> >> reasoning.
> >>>> This is different from the Protege Pizza
> sample,
> >> while pizza
> >>>> are classes.
> >>>>>
> >>>>> 2 When adding new businesses, we only
> need to
> >> add new
> >>>> business individual(maybe we need to add
> more
> >> categories),
> >>>> and connect the new individuals to the
> >> categories.
> >>>>>
> >>>>> I have been trying different ways, but
> still
> >> no
> >>>> success.
> >>>>>
> >>>>> Any help would be highly appreciated.
> >>>>>
> >>>>> Ningfeng
> >>>>>
> >>>>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
> >
> >
> >
>
>





Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


I have read through the OWL 2 Primer, however, didn't get much out of it. But I did make some progress.

Frist of all, I tried using rdf:type to let my business multi-classified, so the business FlowerBayResort can be Business, Resort, WaterPark and Playground simultaneously. And this satisfies my needs. But I doubt this is a good design practice. Here is how it works in Protege 4:

  1 Load the OWL document in Appendix 1 into Protege 4; At this time the reasoner is off.

  2 Under tab Classes, in the "Asserted class hierarchy", click classes Thing/Site/SportsField, there is no members listed under any of them. But FlowerBayResort is the member of Business/Resort/WaterPark/Playground.

  3 Now click menu Reasoner then "Pellet 1.5" to enable the reasoner.

  4 Under tab Classes, in the "Asserted class hierarchy", click classes Thing/Site/SportsField, now the FlowerBayResort is listed as a member under any of them. Same in "Inferred class hierarchy".

Back to my work on "ClassAssertion((Business and (hasSite some Resort) and (hasSite some WaterPark)) myBusiness)", the closest I can get is the OWL document in Appendix 2. I have declared the Business as a subclass of <hasSite some Site>, but when I was connecting the FlowerBayResort to Resort/WaterPark/Playground via object property hasSite, I couldn't make it, since in the UI(Object property assertions) only instances are listed as available options for hasSite, classes Resort/WaterPark are not available at all. So I am still stuck here.

Anything wrong please correct me. Thanks for your help.

============================================================================
Appendix 1 Start: OWL document using rdf:type
============================================================================
<?xml version="1.0"?>


<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#" >
]>


<rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <owl:Ontology rdf:about=""/>
   


    <!--
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business -->

    <owl:Class rdf:about="#Business"/>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground -->

    <owl:Class rdf:about="#Playground">
        <rdfs:subClassOf rdf:resource="#SportsField"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort -->

    <owl:Class rdf:about="#Resort">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site -->

    <owl:Class rdf:about="#Site"/>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField -->

    <owl:Class rdf:about="#SportsField">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium -->

    <owl:Class rdf:about="#Stadium">
        <rdfs:subClassOf rdf:resource="#SportsField"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark -->

    <owl:Class rdf:about="#WaterPark">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!--
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Individuals
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort -->

    <Resort rdf:about="#FlowerBayResort">
        <rdf:type rdf:resource="#Business"/>
        <rdf:type rdf:resource="#Playground"/>
        <rdf:type rdf:resource="#WaterPark"/>
    </Resort>
</rdf:RDF>



<!-- Generated by the OWL API (version 2.2.1.1101) http://owlapi.sourceforge.net -->


============================================================================
Appendix 1 End
============================================================================



============================================================================
Appendix 2 Start: OWL document using existential quantification
============================================================================
<?xml version="1.0"?>


<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#" >
]>


<rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <owl:Ontology rdf:about=""/>
   


    <!--
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Object Properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#hasSite -->

    <owl:ObjectProperty rdf:about="#hasSite"/>
   


    <!--
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business -->

    <owl:Class rdf:about="#Business">
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#hasSite"/>
                <owl:someValuesFrom rdf:resource="#Site"/>
            </owl:Restriction>
        </rdfs:subClassOf>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground -->

    <owl:Class rdf:about="#Playground">
        <rdfs:subClassOf rdf:resource="#SportsField"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort -->

    <owl:Class rdf:about="#Resort">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site -->

    <owl:Class rdf:about="#Site"/>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField -->

    <owl:Class rdf:about="#SportsField">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium -->

    <owl:Class rdf:about="#Stadium">
        <rdfs:subClassOf rdf:resource="#SportsField"/>
    </owl:Class>
   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark -->

    <owl:Class rdf:about="#WaterPark">
        <rdfs:subClassOf rdf:resource="#Site"/>
    </owl:Class>
   


    <!--
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Individuals
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

   


    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort -->

    <Business rdf:about="#FlowerBayResort"/>
</rdf:RDF>



<!-- Generated by the OWL API (version 2.2.1.1101) http://owlapi.sourceforge.net -->


============================================================================
Appendix 2 End
============================================================================



--- On Fri, 5/15/09, Xu, Ningfeng <nfxu@...> wrote:

> From: Xu, Ningfeng <nfxu@...>
> Subject: Re: How to connect one individual to multiple classes
> To: "Uli Sattler" <sattler@...>
> Cc: public-owl-dev@...
> Date: Friday, May 15, 2009, 5:56 PM
>
> Ok, I will read the OWL 2 Primer, will see what I can get.
>
> Currently I am using Protege 3(thus OWL 1).
>
> Thanks a lot.
>
> Ningfeng
>
>
> --- On Fri, 5/15/09, Uli Sattler <sattler@...>
> wrote:
>
> > From: Uli Sattler <sattler@...>
> > Subject: Re: How to connect one individual to multiple
> classes
> > To: nfxu@...
> > Date: Friday, May 15, 2009, 5:45 PM
> >
> > On 14 May 2009, at 21:12, nfxu@...
> > wrote:
> >
> > >
> > > I haven't looked into OWL 2(Primer). So here I am
> with
> > OWL 1.
> > >
> >
> > ...don't bother whether it's "2" or "1" just read
> through
> > the primer: 
> > it should clarify a lot of things. Also, what editor
> do you
> > use? I'd 
> > recommend Protege 4.
> >
> > Cheers, Uli
> >
> > > Regarding "ClassAssertion((Business and (hasSite
> some
> > Resort) and 
> > > (hasSite some Waterpark)) yourBusiness)", how can
> I
> > declare an 
> > > individual business(waterParkResort)? I am trying
> to
> > do this:
> > >
> > >   <owl:Class
> > rdf:about="#Business">
> > >     <rdfs:subClassOf>
> > >   
> >    <owl:Restriction>
> > >     
> >    <owl:someValuesFrom
> > rdf:resource="#Site"/>
> > >     
> >    <owl:onProperty>
> > >       
> >    <owl:ObjectProperty
> > rdf:ID="hasSite"/>
> > >     
> >    </owl:onProperty>
> > >   
> >    </owl:Restriction>
> > >     </rdfs:subClassOf>
> > >     ...
> > >   </owl:Class>
> > >
> > >   <Business
> > rdf:ID="waterParkResort">
> > >     ...hasSite Waterpark... 
> >            
> >    ==> how to declare this?
> > >     ...hasSite Resort... 
> >                
> >   ==> how to declare this?
> > >   </Business>
> > >
> > > I couldn't find appropriate OWL contructs to
> declare
> > that 
> > > waterParkResort has both Resort and Waterpark
> when
> > declaring 
> > > waterParkResort as an instance of class Business.
> I
> > think this is my 
> > > problem.
> > >
> > > Thanks for your help.
> > >
> > > Ningfeng
> > >
> > >
> > > --- On Thu, 5/14/09, Uli Sattler <sattler@...>
> > wrote:
> > >
> > >> From: Uli Sattler <sattler@...>
> > >> Subject: Re: How to connect one individual
> to
> > multiple classes
> > >> To: "Xu, Ningfeng" <nfxu@...>
> > >> Date: Thursday, May 14, 2009, 3:00 AM
> > >>
> > >> On 13 May 2009, at 19:33, Xu, Ningfeng
> wrote:
> > >>
> > >>>
> > >>> Uli, thanks for your reply.
> > >>>
> > >>> Originally, carrying the Object Oriented
> > Analysis
> > >> spirit, and being new to semantic world, I
> started
> > with:
> > >>>
> > >>> 1 Let the business
> > >>
> > >> so, this is 'yourBusiness', I guess.
> > >>
> > >>> be instance of an owl:Class Business;
> > >>> 2 The categories
> > >>
> > >> like restaurant, waterpark? Do they have a
> common
> > >> superclass, say, "Attraction"?
> > >>
> > >>> are classes, so it is easy to make a
> hierarchy
> > and all
> > >> siblings disjointed with each other;
> > >>
> > >> ok
> > >>
> > >>>
> > >>> 3 Class Business has one object
> property,
> > hasSite,
> > >> which has the category as the value.
> > >>
> > >> hm, how does this look like in OWL?
> > >>
> > >> SubClassOf(Business (hasSite some
> Attraction))
> > >>
> > >> or
> > >>
> > >> SubClassOf(Business (hasSite only
> Attraction))
> > >>
> > >>
> > >>> In case of multiple categories, one
> business
> > instance
> > >> has multiple hasSite properties.
> > >>>
> > >>
> > >> fine - as long as you don't declare hasSite
> to be
> > >> functional and as long as you don't use
> atmost
> > cardinality
> > >> restriction on hasSite, this is possible.
> > >>
> > >>> While, obviously, this ontology is OWL
> Full,
> > since
> > >> hasSite has owl:Class as its value.
> > >>>
> > >>
> > >> now you lost me...you can say that
> > >>
> > >> ClassAssertion((Business and (hasSite some
> > Restaurant) and
> > >> (hasSite some Waterpark) yourBusiness)
> > >>
> > >> without leaving OWL DL...
> > >>
> > >>
> > >>
> > >>> I haven't tried to convert categories
> from
> > owl:Class
> > >> to instance so hasSite is good for OWL DL.
> But how
> > much can
> > >> reasoner get out from property value? For
> > example:
> > >>>
> > >>> business1 hasSite Orchard
> > >>> business2 hasSite AgriculturalField
> > >>>
> > >>> If we want to list all businesses which
> is
> > under
> > >> AgriculturalField, can business1 and
> business2
> > both be
> > >> returned? I don't know...
> > >>>
> > >>
> > >> yes, it would, if you would rephrase it in
> the
> > above style
> > >> using 'some'...
> > >>
> > >> Did you have a look at the OWL primer (http://www.w3.org/2007/OWL/wiki/Primer)?
> > >>  Cheers, Uli
> > >>>
> > >>> Ningfeng
> > >>>
> > >>>
> > >>> --- On Wed, 5/13/09, Uli Sattler <sattler@...>
> > >> wrote:
> > >>>
> > >>>> From: Uli Sattler <sattler@...>
> > >>>> Subject: Re: How to connect one
> individual
> > to
> > >> multiple classes
> > >>>> To: "Xu, Ningfeng" <nfxu@...>
> > >>>> Date: Wednesday, May 13, 2009, 11:01
> PM
> > >>>> Hi Xu, I can't see where the problem
> > >>>> is: you can say that an individual is
> a
> > member of
> > >> more than
> > >>>> one class...
> > >>>>
> > >>>> Conceptually, you might want to
> *relate*
> > them:
> > >> instead of
> > >>>> saying "this business *is a*
> restaurant
> > and a
> > >> water park,
> > >>>> you might want to say that, among
> the
> > >> things/services it
> > >>>> *offers*, there is a restaurant and
> a
> > water park.
> > >>>>
> > >>>>
> > >>>> Cheers, Uli
> > >>>>
> > >>>> On 13 May 2009, at 13:09, Xu,
> Ningfeng
> > wrote:
> > >>>>
> > >>>>> Hi,
> > >>>>>
> > >>>>> Recently I am trying to build an
> OWL
> > model
> > >> for
> > >>>> touring/entertainment related
> businesses.
> > I have
> > >> categorized
> > >>>> these businesses into one category
> > hierarchy like
> > >> the
> > >>>> following:
> > >>>>>
> > >>>>> Site(Root)
> > >>>>> +---WaterPark
> > >>>>> +---Resort
> > >>>>> .......
> > >>>>> +---AgriculturalField
> > >>>>>      +---Orchard
> > >>>>> +---CollectionExhibition
> > >>>>>     
> > +---ExhibitionHall
> > >>>>>      +---Memorial
> > >>>>>      +---Museum
> > >>>>> +---SportsField
> > >>>>>      +---Playground
> > >>>>>      +---Stadium
> > >>>>> .......
> > >>>>>
> > >>>>> The goal is, given any category
> in
> > the
> > >> hierarchy, we
> > >>>> can return all related businesses
> back.
> > For
> > >> example, given
> > >>>> "Museum" as the category, we are
> supposed
> > to
> > >> return all
> > >>>> museums; given
> "CollectionExhibition",
> > all
> > >> museums,
> > >>>> memorials and exbitionHalls are
> returned.
> > >>>>>
> > >>>>> One thing is one business might
> have
> > more than
> > >> one
> > >>>> services to offer. Here is an
> example: a
> > resort
> > >> has hotels,
> > >>>> bars and some other regular
> facilities, it
> > also
> > >> has one
> > >>>> indoor water park because of its hot
> > spring water
> > >> resource..
> > >>>> So this resort should be categorized
> into
> > 2
> > >> different
> > >>>> categories: "Resort" and
> "WaterPark".
> > Given either
> > >> "Resort"
> > >>>> or "WaterPark" is chosen as the
> category,
> > this
> > >> resort should
> > >>>> be returned as a match.
> > >>>>>
> > >>>>> The another one is that one
> business
> > may fall
> > >> into
> > >>>> non-leaf categories, like
> > "AgriculturalField"
> > >> instead of
> > >>>> "Orchard".
> > >>>>>
> > >>>>> Technically I would prefer:
> > >>>>>
> > >>>>> 1 Businesses are individuals of
> an
> > owl:Class.
> > >>>> Categories could be antything, if it
> > supports
> > >> reasoning.
> > >>>> This is different from the Protege
> Pizza
> > sample,
> > >> while pizza
> > >>>> are classes.
> > >>>>>
> > >>>>> 2 When adding new businesses, we
> only
> > need to
> > >> add new
> > >>>> business individual(maybe we need to
> add
> > more
> > >> categories),
> > >>>> and connect the new individuals to
> the
> > >> categories.
> > >>>>>
> > >>>>> I have been trying different
> ways, but
> > still
> > >> no
> > >>>> success.
> > >>>>>
> > >>>>> Any help would be highly
> appreciated.
> > >>>>>
> > >>>>> Ningfeng
> > >>>>>
> > >>>>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>
> > >>
> > >
> > >
> > >
> > >
> > >
> >
> >
>
>
>
>
>






Re: How to connect one individual to multiple classes

by Thomas Schneider-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Ningfeng,

On 17 May 2009, at 06:53, nfxu@... wrote:

>
> I have read through the OWL 2 Primer, however, didn't get much out  
> of it. But I did make some progress.
>
> Frist of all, I tried using rdf:type to let my business multi-
> classified, so the business FlowerBayResort can be Business, Resort,  
> WaterPark and Playground simultaneously. And this satisfies my  
> needs. But I doubt this is a good design practice. Here is how it  
> works in Protege 4:
>
>  1 Load the OWL document in Appendix 1 into Protege 4; At this time  
> the reasoner is off.
>
>  2 Under tab Classes, in the "Asserted class hierarchy", click  
> classes Thing/Site/SportsField, there is no members listed under any  
> of them. But FlowerBayResort is the member of Business/Resort/
> WaterPark/Playground.
>
>  3 Now click menu Reasoner then "Pellet 1.5" to enable the reasoner.
>
>  4 Under tab Classes, in the "Asserted class hierarchy", click  
> classes Thing/Site/SportsField, now the FlowerBayResort is listed as  
> a member under any of them. Same in "Inferred class hierarchy".

First, the "Members" entry in the "Class Description" pane of Protégé  
4 is independent of the asserted and inferred class hierarchy. If you  
click on a class in either hierarchy, the class description pane gives  
you all asserted and inferred axioms. Asserted axioms are statements  
that are made explicitly in your ontology, and inferred axioms are  
statements the reasoner has concluded. Please note the difference in  
their presentation: asserted axioms have a grey background and a solid  
border; inferred axioms have a greenish(?) background and a dashed  
border.

The reason why FlowerBayResort is a member of almost all classes in  
your ontology is the following: it is an asserted member of  
Playground, which is a subclass of all classes except Stadium and  
WaterPark. Since it is also asserted to be a member of WaterPark, the  
only class it can't be inferred to be a member of is Stadium. Note  
that for this reason, the membership of FlowerBayResort for Business  
and Resort already follows from the class hierarchy and the other to  
membership assertions, and doesn't need to be asserted explicitly.

> Back to my work on "ClassAssertion((Business and (hasSite some  
> Resort) and (hasSite some WaterPark)) myBusiness)", the closest I  
> can get is the OWL document in Appendix 2. I have declared the  
> Business as a subclass of <hasSite some Site>, but when I was  
> connecting the FlowerBayResort to Resort/WaterPark/Playground via  
> object property hasSite, I couldn't make it, since in the UI(Object  
> property assertions) only instances are listed as available options  
> for hasSite, classes Resort/WaterPark are not available at all. So I  
> am still stuck here.

I'm not sure why you want to declare Business as a subclass of  
"hasSite some Site" because this is not what your class assertion  
axiom says.(?)

Cheers

Thomas

>
>
> Anything wrong please correct me. Thanks for your help.
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> Appendix 1 Start: OWL document using rdf:type
> =
> =
> =
> =
> =
> =
> ======================================================================
> <?xml version="1.0"?>
>
>
> <!DOCTYPE rdf:RDF [
>    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
>    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
>    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
>    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl# 
> " >
> ]>
>
>
> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
>     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
>     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
>     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
>     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl# 
> "
>     xmlns:owl="http://www.w3.org/2002/07/owl#"
>     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
>    <owl:Ontology rdf:about=""/>
>
>
>
>    <!--
>    ///////////////////////////////////////////////////////////////////////////////////////
>    //
>    // Classes
>    //
>    ///////////////////////////////////////////////////////////////////////////////////////
>     -->
>
>
>
>
>    <!-- http://www.owl-ontologies.com/ 
> Ontology1237653461.owl#Business -->
>
>    <owl:Class rdf:about="#Business"/>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground 
>  -->
>
>    <owl:Class rdf:about="#Playground">
>        <rdfs:subClassOf rdf:resource="#SportsField"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort 
> -->
>
>    <owl:Class rdf:about="#Resort">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site -->
>
>    <owl:Class rdf:about="#Site"/>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField 
>  -->
>
>    <owl:Class rdf:about="#SportsField">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium 
> -->
>
>    <owl:Class rdf:about="#Stadium">
>        <rdfs:subClassOf rdf:resource="#SportsField"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/ 
> Ontology1237653461.owl#WaterPark -->
>
>    <owl:Class rdf:about="#WaterPark">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!--
>    ///////////////////////////////////////////////////////////////////////////////////////
>    //
>    // Individuals
>    //
>    ///////////////////////////////////////////////////////////////////////////////////////
>     -->
>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort 
>  -->
>
>    <Resort rdf:about="#FlowerBayResort">
>        <rdf:type rdf:resource="#Business"/>
>        <rdf:type rdf:resource="#Playground"/>
>        <rdf:type rdf:resource="#WaterPark"/>
>    </Resort>
> </rdf:RDF>
>
>
>
> <!-- Generated by the OWL API (version 2.2.1.1101) http://owlapi.sourceforge.net 
>  -->
>
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> Appendix 1 End
> =
> =
> =
> =
> =
> =
> ======================================================================
>
>
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> Appendix 2 Start: OWL document using existential quantification
> =
> =
> =
> =
> =
> =
> ======================================================================
> <?xml version="1.0"?>
>
>
> <!DOCTYPE rdf:RDF [
>    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
>    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
>    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
>    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl# 
> " >
> ]>
>
>
> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
>     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
>     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
>     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
>     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl# 
> "
>     xmlns:owl="http://www.w3.org/2002/07/owl#"
>     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
>    <owl:Ontology rdf:about=""/>
>
>
>
>    <!--
>    ///////////////////////////////////////////////////////////////////////////////////////
>    //
>    // Object Properties
>    //
>    ///////////////////////////////////////////////////////////////////////////////////////
>     -->
>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#hasSite 
> -->
>
>    <owl:ObjectProperty rdf:about="#hasSite"/>
>
>
>
>    <!--
>    ///////////////////////////////////////////////////////////////////////////////////////
>    //
>    // Classes
>    //
>    ///////////////////////////////////////////////////////////////////////////////////////
>     -->
>
>
>
>
>    <!-- http://www.owl-ontologies.com/ 
> Ontology1237653461.owl#Business -->
>
>    <owl:Class rdf:about="#Business">
>        <rdfs:subClassOf>
>            <owl:Restriction>
>                <owl:onProperty rdf:resource="#hasSite"/>
>                <owl:someValuesFrom rdf:resource="#Site"/>
>            </owl:Restriction>
>        </rdfs:subClassOf>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground 
>  -->
>
>    <owl:Class rdf:about="#Playground">
>        <rdfs:subClassOf rdf:resource="#SportsField"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort 
> -->
>
>    <owl:Class rdf:about="#Resort">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site -->
>
>    <owl:Class rdf:about="#Site"/>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField 
>  -->
>
>    <owl:Class rdf:about="#SportsField">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium 
> -->
>
>    <owl:Class rdf:about="#Stadium">
>        <rdfs:subClassOf rdf:resource="#SportsField"/>
>    </owl:Class>
>
>
>
>    <!-- http://www.owl-ontologies.com/ 
> Ontology1237653461.owl#WaterPark -->
>
>    <owl:Class rdf:about="#WaterPark">
>        <rdfs:subClassOf rdf:resource="#Site"/>
>    </owl:Class>
>
>
>
>    <!--
>    ///////////////////////////////////////////////////////////////////////////////////////
>    //
>    // Individuals
>    //
>    ///////////////////////////////////////////////////////////////////////////////////////
>     -->
>
>
>
>
>    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort 
>  -->
>
>    <Business rdf:about="#FlowerBayResort"/>
> </rdf:RDF>
>
>
>
> <!-- Generated by the OWL API (version 2.2.1.1101) http://owlapi.sourceforge.net 
>  -->
>
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> Appendix 2 End
> =
> =
> =
> =
> =
> =
> ======================================================================
>
>
>
> --- On Fri, 5/15/09, Xu, Ningfeng <nfxu@...> wrote:
>
>> From: Xu, Ningfeng <nfxu@...>
>> Subject: Re: How to connect one individual to multiple classes
>> To: "Uli Sattler" <sattler@...>
>> Cc: public-owl-dev@...
>> Date: Friday, May 15, 2009, 5:56 PM
>>
>> Ok, I will read the OWL 2 Primer, will see what I can get.
>>
>> Currently I am using Protege 3(thus OWL 1).
>>
>> Thanks a lot.
>>
>> Ningfeng
>>
>>
>> --- On Fri, 5/15/09, Uli Sattler <sattler@...>
>> wrote:
>>
>>> From: Uli Sattler <sattler@...>
>>> Subject: Re: How to connect one individual to multiple
>> classes
>>> To: nfxu@...
>>> Date: Friday, May 15, 2009, 5:45 PM
>>>
>>> On 14 May 2009, at 21:12, nfxu@...
>>> wrote:
>>>
>>>>
>>>> I haven't looked into OWL 2(Primer). So here I am
>> with
>>> OWL 1.
>>>>
>>>
>>> ...don't bother whether it's "2" or "1" just read
>> through
>>> the primer:
>>> it should clarify a lot of things. Also, what editor
>> do you
>>> use? I'd
>>> recommend Protege 4.
>>>
>>> Cheers, Uli
>>>
>>>> Regarding "ClassAssertion((Business and (hasSite
>> some
>>> Resort) and
>>>> (hasSite some Waterpark)) yourBusiness)", how can
>> I
>>> declare an
>>>> individual business(waterParkResort)? I am trying
>> to
>>> do this:
>>>>
>>>>    <owl:Class
>>> rdf:about="#Business">
>>>>      <rdfs:subClassOf>
>>>>
>>>    <owl:Restriction>
>>>>
>>>    <owl:someValuesFrom
>>> rdf:resource="#Site"/>
>>>>
>>>    <owl:onProperty>
>>>>
>>>    <owl:ObjectProperty
>>> rdf:ID="hasSite"/>
>>>>
>>>    </owl:onProperty>
>>>>
>>>    </owl:Restriction>
>>>>      </rdfs:subClassOf>
>>>>      ...
>>>>    </owl:Class>
>>>>
>>>>    <Business
>>> rdf:ID="waterParkResort">
>>>>      ...hasSite Waterpark...
>>>
>>>    ==> how to declare this?
>>>>      ...hasSite Resort...
>>>
>>>   ==> how to declare this?
>>>>    </Business>
>>>>
>>>> I couldn't find appropriate OWL contructs to
>> declare
>>> that
>>>> waterParkResort has both Resort and Waterpark
>> when
>>> declaring
>>>> waterParkResort as an instance of class Business.
>> I
>>> think this is my
>>>> problem.
>>>>
>>>> Thanks for your help.
>>>>
>>>> Ningfeng
>>>>
>>>>
>>>> --- On Thu, 5/14/09, Uli Sattler <sattler@...>
>>> wrote:
>>>>
>>>>> From: Uli Sattler <sattler@...>
>>>>> Subject: Re: How to connect one individual
>> to
>>> multiple classes
>>>>> To: "Xu, Ningfeng" <nfxu@...>
>>>>> Date: Thursday, May 14, 2009, 3:00 AM
>>>>>
>>>>> On 13 May 2009, at 19:33, Xu, Ningfeng
>> wrote:
>>>>>
>>>>>>
>>>>>> Uli, thanks for your reply.
>>>>>>
>>>>>> Originally, carrying the Object Oriented
>>> Analysis
>>>>> spirit, and being new to semantic world, I
>> started
>>> with:
>>>>>>
>>>>>> 1 Let the business
>>>>>
>>>>> so, this is 'yourBusiness', I guess.
>>>>>
>>>>>> be instance of an owl:Class Business;
>>>>>> 2 The categories
>>>>>
>>>>> like restaurant, waterpark? Do they have a
>> common
>>>>> superclass, say, "Attraction"?
>>>>>
>>>>>> are classes, so it is easy to make a
>> hierarchy
>>> and all
>>>>> siblings disjointed with each other;
>>>>>
>>>>> ok
>>>>>
>>>>>>
>>>>>> 3 Class Business has one object
>> property,
>>> hasSite,
>>>>> which has the category as the value.
>>>>>
>>>>> hm, how does this look like in OWL?
>>>>>
>>>>> SubClassOf(Business (hasSite some
>> Attraction))
>>>>>
>>>>> or
>>>>>
>>>>> SubClassOf(Business (hasSite only
>> Attraction))
>>>>>
>>>>>
>>>>>> In case of multiple categories, one
>> business
>>> instance
>>>>> has multiple hasSite properties.
>>>>>>
>>>>>
>>>>> fine - as long as you don't declare hasSite
>> to be
>>>>> functional and as long as you don't use
>> atmost
>>> cardinality
>>>>> restriction on hasSite, this is possible.
>>>>>
>>>>>> While, obviously, this ontology is OWL
>> Full,
>>> since
>>>>> hasSite has owl:Class as its value.
>>>>>>
>>>>>
>>>>> now you lost me...you can say that
>>>>>
>>>>> ClassAssertion((Business and (hasSite some
>>> Restaurant) and
>>>>> (hasSite some Waterpark) yourBusiness)
>>>>>
>>>>> without leaving OWL DL...
>>>>>
>>>>>
>>>>>
>>>>>> I haven't tried to convert categories
>> from
>>> owl:Class
>>>>> to instance so hasSite is good for OWL DL.
>> But how
>>> much can
>>>>> reasoner get out from property value? For
>>> example:
>>>>>>
>>>>>> business1 hasSite Orchard
>>>>>> business2 hasSite AgriculturalField
>>>>>>
>>>>>> If we want to list all businesses which
>> is
>>> under
>>>>> AgriculturalField, can business1 and
>> business2
>>> both be
>>>>> returned? I don't know...
>>>>>>
>>>>>
>>>>> yes, it would, if you would rephrase it in
>> the
>>> above style
>>>>> using 'some'...
>>>>>
>>>>> Did you have a look at the OWL primer (http://www.w3.org/2007/OWL/wiki/Primer)?
>>>>>   Cheers, Uli
>>>>>>
>>>>>> Ningfeng
>>>>>>
>>>>>>
>>>>>> --- On Wed, 5/13/09, Uli Sattler <sattler@...>
>>>>> wrote:
>>>>>>
>>>>>>> From: Uli Sattler <sattler@...>
>>>>>>> Subject: Re: How to connect one
>> individual
>>> to
>>>>> multiple classes
>>>>>>> To: "Xu, Ningfeng" <nfxu@...>
>>>>>>> Date: Wednesday, May 13, 2009, 11:01
>> PM
>>>>>>> Hi Xu, I can't see where the problem
>>>>>>> is: you can say that an individual is
>> a
>>> member of
>>>>> more than
>>>>>>> one class...
>>>>>>>
>>>>>>> Conceptually, you might want to
>> *relate*
>>> them:
>>>>> instead of
>>>>>>> saying "this business *is a*
>> restaurant
>>> and a
>>>>> water park,
>>>>>>> you might want to say that, among
>> the
>>>>> things/services it
>>>>>>> *offers*, there is a restaurant and
>> a
>>> water park.
>>>>>>>
>>>>>>>
>>>>>>> Cheers, Uli
>>>>>>>
>>>>>>> On 13 May 2009, at 13:09, Xu,
>> Ningfeng
>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Recently I am trying to build an
>> OWL
>>> model
>>>>> for
>>>>>>> touring/entertainment related
>> businesses.
>>> I have
>>>>> categorized
>>>>>>> these businesses into one category
>>> hierarchy like
>>>>> the
>>>>>>> following:
>>>>>>>>
>>>>>>>> Site(Root)
>>>>>>>> +---WaterPark
>>>>>>>> +---Resort
>>>>>>>> .......
>>>>>>>> +---AgriculturalField
>>>>>>>>       +---Orchard
>>>>>>>> +---CollectionExhibition
>>>>>>>>
>>> +---ExhibitionHall
>>>>>>>>       +---Memorial
>>>>>>>>       +---Museum
>>>>>>>> +---SportsField
>>>>>>>>       +---Playground
>>>>>>>>       +---Stadium
>>>>>>>> .......
>>>>>>>>
>>>>>>>> The goal is, given any category
>> in
>>> the
>>>>> hierarchy, we
>>>>>>> can return all related businesses
>> back.
>>> For
>>>>> example, given
>>>>>>> "Museum" as the category, we are
>> supposed
>>> to
>>>>> return all
>>>>>>> museums; given
>> "CollectionExhibition",
>>> all
>>>>> museums,
>>>>>>> memorials and exbitionHalls are
>> returned.
>>>>>>>>
>>>>>>>> One thing is one business might
>> have
>>> more than
>>>>> one
>>>>>>> services to offer. Here is an
>> example: a
>>> resort
>>>>> has hotels,
>>>>>>> bars and some other regular
>> facilities, it
>>> also
>>>>> has one
>>>>>>> indoor water park because of its hot
>>> spring water
>>>>> resource..
>>>>>>> So this resort should be categorized
>> into
>>> 2
>>>>> different
>>>>>>> categories: "Resort" and
>> "WaterPark".
>>> Given either
>>>>> "Resort"
>>>>>>> or "WaterPark" is chosen as the
>> category,
>>> this
>>>>> resort should
>>>>>>> be returned as a match.
>>>>>>>>
>>>>>>>> The another one is that one
>> business
>>> may fall
>>>>> into
>>>>>>> non-leaf categories, like
>>> "AgriculturalField"
>>>>> instead of
>>>>>>> "Orchard".
>>>>>>>>
>>>>>>>> Technically I would prefer:
>>>>>>>>
>>>>>>>> 1 Businesses are individuals of
>> an
>>> owl:Class.
>>>>>>> Categories could be antything, if it
>>> supports
>>>>> reasoning.
>>>>>>> This is different from the Protege
>> Pizza
>>> sample,
>>>>> while pizza
>>>>>>> are classes.
>>>>>>>>
>>>>>>>> 2 When adding new businesses, we
>> only
>>> need to
>>>>> add new
>>>>>>> business individual(maybe we need to
>> add
>>> more
>>>>> categories),
>>>>>>> and connect the new individuals to
>> the
>>>>> categories.
>>>>>>>>
>>>>>>>> I have been trying different
>> ways, but
>>> still
>>>>> no
>>>>>>> success.
>>>>>>>>
>>>>>>>> Any help would be highly
>> appreciated.
>>>>>>>>
>>>>>>>> Ningfeng
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>>
>>
>
>
>
>
>

+----------------------------------------------------------------------+
|  Dr Thomas Schneider                         schneider@...  |
|  School of Computer Science       http://www.cs.man.ac.uk/~schneidt  |
|  Kilburn Building, Room 2.114                 phone +44 161 2756136  |
|  University of Manchester                                            |
|  Oxford Road                                             _///_       |
|  Manchester M13 9PL                                      (o~o)       |
+-----------------------------------------------------oOOO--(_)--OOOo--+

Lampung (n.)
  The daze which follows turning on the light in the middle of the  
night.

                   Douglas Adams, John Lloyd: The Deeper Meaning of Liff











Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Thomas, thanks for your detailed explanation for the difference between Asserted and Inferred axioms.

Let me clarify my initial(and still is) purpose and motivation for my project. I suppose I should have done this in the very beginning. Or I just didn't do it well.

I have thousands of local businesses, basically for touring/education/entertainment/recreation/vacation, like theater, amusement park, museum, art gallery, forest park, skiing resort, night club, ball room, among many others.

Online directory of such businesses basically provides 2 approaches for users to access them: 1, all businesses are categorized, each one is related with a specific category(or to say, under this category), and the categories form a hierarchy; 2, keyword search in business information. We will focus on the category approach.

When users click one category in the hierarchy, we expect businesses directly under this category and businesses under this category's sub-categories are returned to user. For example, the following is the category hierarchy, we use the site(place to conduct business) as criteria:

Site(this is the root category)
+---WaterPark
+---Resort
.......
+---AgriculturalField
    +---Orchard
+---CollectionExhibition
    +---ExhibitionHall
    +---Memorial
    +---Museum
+---SportsField
    +---Playground
    +---Stadium
.......

For example, click on "Museum", all businesses related with Museum category are returned, that is, all museums are returned. Given "CollectionExhibition", all museums, memorials and exbition halls are returned.

There are 2 things I need to mention:

  1. A business may fall into non-leaf categories, like "AgriculturalField".

  2. A business can be with more than one category. A business might have more than one service to offer. Here is an example: a resort has hotels, bars and some other regular facilities, it also has one indoor water park because of its hot spring water resource.. So this resort should be under 2 different categories at the same time: "Resort" and "WaterPark". Click on either "Resort" or "WaterPark", this resort should be returned as a match.

The multi-categories of one business is where the OWL comes into play.

The rdf:type solution works, which has following XML style for some business(instance):

    <Business rdf:about="#FlowerBayResort">
        <rdf:type rdf:resource="#Resort"/>
        <rdf:type rdf:resource="#Playground"/>
        <rdf:type rdf:resource="#WaterPark"/>
    </Business>

Is this a good OWL design or not? I can't tell at this time.

Probably the following looks better, but I don't know to implement it:

    <Business rdf:about="#FlowerBayResort">
        ...hasSite ( "#Resort" and "#Playground" and "#WaterPark" )...
    </Business>

    The definition of Business and hasSite:

    <owl:Class rdf:about="#Business">
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#hasSite"/>
                <owl:someValuesFrom rdf:resource="#Site"/>
            </owl:Restriction>
        </rdfs:subClassOf>
    </owl:Class>

I am looking for a good solution for this multi-category issue.

Ningfeng



--- On Sun, 5/17/09, Thomas Schneider <schneidt@...> wrote:

> From: Thomas Schneider <schneidt@...>
> Subject: Re: How to connect one individual to multiple classes
> To: public-owl-dev@...
> Date: Sunday, May 17, 2009, 4:44 PM
> Hi Ningfeng,
>
> On 17 May 2009, at 06:53, nfxu@...
> wrote:
>
> >
> > I have read through the OWL 2 Primer, however, didn't
> get much out of it. But I did make some progress.
> >
> > Frist of all, I tried using rdf:type to let my
> business multi-classified, so the business FlowerBayResort
> can be Business, Resort, WaterPark and Playground
> simultaneously. And this satisfies my needs. But I doubt
> this is a good design practice. Here is how it works in
> Protege 4:
> >
> >  1 Load the OWL document in Appendix 1 into
> Protege 4; At this time the reasoner is off.
> >
> >  2 Under tab Classes, in the "Asserted class
> hierarchy", click classes Thing/Site/SportsField, there is
> no members listed under any of them. But FlowerBayResort is
> the member of Business/Resort/WaterPark/Playground.
> >
> >  3 Now click menu Reasoner then "Pellet 1.5" to
> enable the reasoner.
> >
> >  4 Under tab Classes, in the "Asserted class
> hierarchy", click classes Thing/Site/SportsField, now the
> FlowerBayResort is listed as a member under any of them.
> Same in "Inferred class hierarchy".
>
> First, the "Members" entry in the "Class Description" pane
> of Protégé 4 is independent of the asserted and inferred
> class hierarchy. If you click on a class in either
> hierarchy, the class description pane gives you all asserted
> and inferred axioms. Asserted axioms are statements that are
> made explicitly in your ontology, and inferred axioms are
> statements the reasoner has concluded. Please note the
> difference in their presentation: asserted axioms have a
> grey background and a solid border; inferred axioms have a
> greenish(?) background and a dashed border.
>
> The reason why FlowerBayResort is a member of almost all
> classes in your ontology is the following: it is an asserted
> member of Playground, which is a subclass of all classes
> except Stadium and WaterPark. Since it is also asserted to
> be a member of WaterPark, the only class it can't be
> inferred to be a member of is Stadium. Note that for this
> reason, the membership of FlowerBayResort for Business and
> Resort already follows from the class hierarchy and the
> other to membership assertions, and doesn't need to be
> asserted explicitly.
>
> > Back to my work on "ClassAssertion((Business and
> (hasSite some Resort) and (hasSite some WaterPark))
> myBusiness)", the closest I can get is the OWL document in
> Appendix 2. I have declared the Business as a subclass of
> <hasSite some Site>, but when I was connecting the
> FlowerBayResort to Resort/WaterPark/Playground via object
> property hasSite, I couldn't make it, since in the UI(Object
> property assertions) only instances are listed as available
> options for hasSite, classes Resort/WaterPark are not
> available at all. So I am still stuck here.
>
> I'm not sure why you want to declare Business as a subclass
> of "hasSite some Site" because this is not what your class
> assertion axiom says.(?)
>
> Cheers
>
> Thomas
>
> >
> >
> > Anything wrong please correct me. Thanks for your
> help.
> >
> >
> ============================================================================
> > Appendix 1 Start: OWL document using rdf:type
> >
> ============================================================================
> > <?xml version="1.0"?>
> >
> >
> > <!DOCTYPE rdf:RDF [
> >    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
> >    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
> >    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
> >    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
> >    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
> >    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> >    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >
> > ]>
> >
> >
> > <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
> >     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
> >     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
> >     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
> >     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >     xmlns:owl="http://www.w3.org/2002/07/owl#"
> >     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
> >     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
> >    <owl:Ontology rdf:about=""/>
> >
> >
> >
> >    <!--
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >    //
> >    // Classes
> >    //
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >     -->
> >
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
> -->
> >
> >    <owl:Class rdf:about="#Business"/>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
> -->
> >
> >    <owl:Class
> rdf:about="#Playground">
> >        <rdfs:subClassOf
> rdf:resource="#SportsField"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
> -->
> >
> >    <owl:Class rdf:about="#Resort">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
> -->
> >
> >    <owl:Class rdf:about="#Site"/>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
> -->
> >
> >    <owl:Class
> rdf:about="#SportsField">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium
> -->
> >
> >    <owl:Class rdf:about="#Stadium">
> >        <rdfs:subClassOf
> rdf:resource="#SportsField"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
> -->
> >
> >    <owl:Class rdf:about="#WaterPark">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!--
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >    //
> >    // Individuals
> >    //
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >     -->
> >
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
> -->
> >
> >    <Resort
> rdf:about="#FlowerBayResort">
> >        <rdf:type
> rdf:resource="#Business"/>
> >        <rdf:type
> rdf:resource="#Playground"/>
> >        <rdf:type
> rdf:resource="#WaterPark"/>
> >    </Resort>
> > </rdf:RDF>
> >
> >
> >
> > <!-- Generated by the OWL API (version 2.2.1.1101)
> http://owlapi.sourceforge.net -->
> >
> >
> >
> ============================================================================
> > Appendix 1 End
> >
> ============================================================================
> >
> >
> >
> >
> ============================================================================
> > Appendix 2 Start: OWL document using existential
> quantification
> >
> ============================================================================
> > <?xml version="1.0"?>
> >
> >
> > <!DOCTYPE rdf:RDF [
> >    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
> >    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
> >    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
> >    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
> >    <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
> >    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> >    <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >
> > ]>
> >
> >
> > <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >     xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
> >     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
> >     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
> >     xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
> >     xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >     xmlns:owl="http://www.w3.org/2002/07/owl#"
> >     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
> >     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
> >    <owl:Ontology rdf:about=""/>
> >
> >
> >
> >    <!--
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >    //
> >    // Object Properties
> >    //
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >     -->
> >
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#hasSite
> -->
> >
> >    <owl:ObjectProperty
> rdf:about="#hasSite"/>
> >
> >
> >
> >    <!--
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >    //
> >    // Classes
> >    //
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >     -->
> >
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
> -->
> >
> >    <owl:Class rdf:about="#Business">
> >        <rdfs:subClassOf>
> >           
> <owl:Restriction>
> >               
> <owl:onProperty rdf:resource="#hasSite"/>
> >               
> <owl:someValuesFrom rdf:resource="#Site"/>
> >           
> </owl:Restriction>
> >        </rdfs:subClassOf>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
> -->
> >
> >    <owl:Class
> rdf:about="#Playground">
> >        <rdfs:subClassOf
> rdf:resource="#SportsField"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
> -->
> >
> >    <owl:Class rdf:about="#Resort">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
> -->
> >
> >    <owl:Class rdf:about="#Site"/>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
> -->
> >
> >    <owl:Class
> rdf:about="#SportsField">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium
> -->
> >
> >    <owl:Class rdf:about="#Stadium">
> >        <rdfs:subClassOf
> rdf:resource="#SportsField"/>
> >    </owl:Class>
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
> -->
> >
> >    <owl:Class rdf:about="#WaterPark">
> >        <rdfs:subClassOf
> rdf:resource="#Site"/>
> >    </owl:Class>
> >
> >
> >
> >    <!--
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >    //
> >    // Individuals
> >    //
> >   
> ///////////////////////////////////////////////////////////////////////////////////////
> >     -->
> >
> >
> >
> >
> >    <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
> -->
> >
> >    <Business
> rdf:about="#FlowerBayResort"/>
> > </rdf:RDF>
> >
> >
> >
> > <!-- Generated by the OWL API (version 2.2.1.1101)
> http://owlapi.sourceforge.net -->
> >
> >
> >
> ============================================================================
> > Appendix 2 End
> >
> ============================================================================
> >
> >
> >
> > --- On Fri, 5/15/09, Xu, Ningfeng <nfxu@...>
> wrote:
> >
> >> From: Xu, Ningfeng <nfxu@...>
> >> Subject: Re: How to connect one individual to
> multiple classes
> >> To: "Uli Sattler" <sattler@...>
> >> Cc: public-owl-dev@...
> >> Date: Friday, May 15, 2009, 5:56 PM
> >>
> >> Ok, I will read the OWL 2 Primer, will see what I
> can get.
> >>
> >> Currently I am using Protege 3(thus OWL 1).
> >>
> >> Thanks a lot.
> >>
> >> Ningfeng
> >>
> >>
> >> --- On Fri, 5/15/09, Uli Sattler <sattler@...>
> >> wrote:
> >>
> >>> From: Uli Sattler <sattler@...>
> >>> Subject: Re: How to connect one individual to
> multiple
> >> classes
> >>> To: nfxu@...
> >>> Date: Friday, May 15, 2009, 5:45 PM
> >>>
> >>> On 14 May 2009, at 21:12, nfxu@...
> >>> wrote:
> >>>
> >>>>
> >>>> I haven't looked into OWL 2(Primer). So
> here I am
> >> with
> >>> OWL 1.
> >>>>
> >>>
> >>> ...don't bother whether it's "2" or "1" just
> read
> >> through
> >>> the primer:
> >>> it should clarify a lot of things. Also, what
> editor
> >> do you
> >>> use? I'd
> >>> recommend Protege 4.
> >>>
> >>> Cheers, Uli
> >>>
> >>>> Regarding "ClassAssertion((Business and
> (hasSite
> >> some
> >>> Resort) and
> >>>> (hasSite some Waterpark)) yourBusiness)",
> how can
> >> I
> >>> declare an
> >>>> individual business(waterParkResort)? I am
> trying
> >> to
> >>> do this:
> >>>>
> >>>>    <owl:Class
> >>> rdf:about="#Business">
> >>>>     
> <rdfs:subClassOf>
> >>>>
> >>>    <owl:Restriction>
> >>>>
> >>>    <owl:someValuesFrom
> >>> rdf:resource="#Site"/>
> >>>>
> >>>    <owl:onProperty>
> >>>>
> >>>    <owl:ObjectProperty
> >>> rdf:ID="hasSite"/>
> >>>>
> >>>    </owl:onProperty>
> >>>>
> >>>    </owl:Restriction>
> >>>>     
> </rdfs:subClassOf>
> >>>>      ...
> >>>>    </owl:Class>
> >>>>
> >>>>    <Business
> >>> rdf:ID="waterParkResort">
> >>>>      ...hasSite
> Waterpark...
> >>>
> >>>    ==> how to declare this?
> >>>>      ...hasSite Resort...
> >>>
> >>>   ==> how to declare this?
> >>>>    </Business>
> >>>>
> >>>> I couldn't find appropriate OWL contructs
> to
> >> declare
> >>> that
> >>>> waterParkResort has both Resort and
> Waterpark
> >> when
> >>> declaring
> >>>> waterParkResort as an instance of class
> Business.
> >> I
> >>> think this is my
> >>>> problem.
> >>>>
> >>>> Thanks for your help.
> >>>>
> >>>> Ningfeng
> >>>>
> >>>>
> >>>> --- On Thu, 5/14/09, Uli Sattler <sattler@...>
> >>> wrote:
> >>>>
> >>>>> From: Uli Sattler <sattler@...>
> >>>>> Subject: Re: How to connect one
> individual
> >> to
> >>> multiple classes
> >>>>> To: "Xu, Ningfeng" <nfxu@...>
> >>>>> Date: Thursday, May 14, 2009, 3:00 AM
> >>>>>
> >>>>> On 13 May 2009, at 19:33, Xu,
> Ningfeng
> >> wrote:
> >>>>>
> >>>>>>
> >>>>>> Uli, thanks for your reply.
> >>>>>>
> >>>>>> Originally, carrying the Object
> Oriented
> >>> Analysis
> >>>>> spirit, and being new to semantic
> world, I
> >> started
> >>> with:
> >>>>>>
> >>>>>> 1 Let the business
> >>>>>
> >>>>> so, this is 'yourBusiness', I guess.
> >>>>>
> >>>>>> be instance of an owl:Class
> Business;
> >>>>>> 2 The categories
> >>>>>
> >>>>> like restaurant, waterpark? Do they
> have a
> >> common
> >>>>> superclass, say, "Attraction"?
> >>>>>
> >>>>>> are classes, so it is easy to make
> a
> >> hierarchy
> >>> and all
> >>>>> siblings disjointed with each other;
> >>>>>
> >>>>> ok
> >>>>>
> >>>>>>
> >>>>>> 3 Class Business has one object
> >> property,
> >>> hasSite,
> >>>>> which has the category as the value.
> >>>>>
> >>>>> hm, how does this look like in OWL?
> >>>>>
> >>>>> SubClassOf(Business (hasSite some
> >> Attraction))
> >>>>>
> >>>>> or
> >>>>>
> >>>>> SubClassOf(Business (hasSite only
> >> Attraction))
> >>>>>
> >>>>>
> >>>>>> In case of multiple categories,
> one
> >> business
> >>> instance
> >>>>> has multiple hasSite properties.
> >>>>>>
> >>>>>
> >>>>> fine - as long as you don't declare
> hasSite
> >> to be
> >>>>> functional and as long as you don't
> use
> >> atmost
> >>> cardinality
> >>>>> restriction on hasSite, this is
> possible.
> >>>>>
> >>>>>> While, obviously, this ontology is
> OWL
> >> Full,
> >>> since
> >>>>> hasSite has owl:Class as its value.
> >>>>>>
> >>>>>
> >>>>> now you lost me...you can say that
> >>>>>
> >>>>> ClassAssertion((Business and (hasSite
> some
> >>> Restaurant) and
> >>>>> (hasSite some Waterpark)
> yourBusiness)
> >>>>>
> >>>>> without leaving OWL DL...
> >>>>>
> >>>>>
> >>>>>
> >>>>>> I haven't tried to convert
> categories
> >> from
> >>> owl:Class
> >>>>> to instance so hasSite is good for OWL
> DL.
> >> But how
> >>> much can
> >>>>> reasoner get out from property value?
> For
> >>> example:
> >>>>>>
> >>>>>> business1 hasSite Orchard
> >>>>>> business2 hasSite
> AgriculturalField
> >>>>>>
> >>>>>> If we want to list all businesses
> which
> >> is
> >>> under
> >>>>> AgriculturalField, can business1 and
> >> business2
> >>> both be
> >>>>> returned? I don't know...
> >>>>>>
> >>>>>
> >>>>> yes, it would, if you would rephrase
> it in
> >> the
> >>> above style
> >>>>> using 'some'...
> >>>>>
> >>>>> Did you have a look at the OWL primer
> (http://www.w3.org/2007/OWL/wiki/Primer)?
> >>>>>   Cheers, Uli
> >>>>>>
> >>>>>> Ningfeng
> >>>>>>
> >>>>>>
> >>>>>> --- On Wed, 5/13/09, Uli Sattler
> <sattler@...>
> >>>>> wrote:
> >>>>>>
> >>>>>>> From: Uli Sattler <sattler@...>
> >>>>>>> Subject: Re: How to connect
> one
> >> individual
> >>> to
> >>>>> multiple classes
> >>>>>>> To: "Xu, Ningfeng" <nfxu@...>
> >>>>>>> Date: Wednesday, May 13, 2009,
> 11:01
> >> PM
> >>>>>>> Hi Xu, I can't see where the
> problem
> >>>>>>> is: you can say that an
> individual is
> >> a
> >>> member of
> >>>>> more than
> >>>>>>> one class...
> >>>>>>>
> >>>>>>> Conceptually, you might want
> to
> >> *relate*
> >>> them:
> >>>>> instead of
> >>>>>>> saying "this business *is a*
> >> restaurant
> >>> and a
> >>>>> water park,
> >>>>>>> you might want to say that,
> among
> >> the
> >>>>> things/services it
> >>>>>>> *offers*, there is a
> restaurant and
> >> a
> >>> water park.
> >>>>>>>
> >>>>>>>
> >>>>>>> Cheers, Uli
> >>>>>>>
> >>>>>>> On 13 May 2009, at 13:09, Xu,
> >> Ningfeng
> >>> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> Recently I am trying to
> build an
> >> OWL
> >>> model
> >>>>> for
> >>>>>>> touring/entertainment related
> >> businesses.
> >>> I have
> >>>>> categorized
> >>>>>>> these businesses into one
> category
> >>> hierarchy like
> >>>>> the
> >>>>>>> following:
> >>>>>>>>
> >>>>>>>> Site(Root)
> >>>>>>>> +---WaterPark
> >>>>>>>> +---Resort
> >>>>>>>> .......
> >>>>>>>> +---AgriculturalField
> >>>>>>>>   
>    +---Orchard
> >>>>>>>> +---CollectionExhibition
> >>>>>>>>
> >>> +---ExhibitionHall
> >>>>>>>>   
>    +---Memorial
> >>>>>>>>   
>    +---Museum
> >>>>>>>> +---SportsField
> >>>>>>>>   
>    +---Playground
> >>>>>>>>   
>    +---Stadium
> >>>>>>>> .......
> >>>>>>>>
> >>>>>>>> The goal is, given any
> category
> >> in
> >>> the
> >>>>> hierarchy, we
> >>>>>>> can return all related
> businesses
> >> back.
> >>> For
> >>>>> example, given
> >>>>>>> "Museum" as the category, we
> are
> >> supposed
> >>> to
> >>>>> return all
> >>>>>>> museums; given
> >> "CollectionExhibition",
> >>> all
> >>>>> museums,
> >>>>>>> memorials and exbitionHalls
> are
> >> returned.
> >>>>>>>>
> >>>>>>>> One thing is one business
> might
> >> have
> >>> more than
> >>>>> one
> >>>>>>> services to offer. Here is an
> >> example: a
> >>> resort
> >>>>> has hotels,
> >>>>>>> bars and some other regular
> >> facilities, it
> >>> also
> >>>>> has one
> >>>>>>> indoor water park because of
> its hot
> >>> spring water
> >>>>> resource..
> >>>>>>> So this resort should be
> categorized
> >> into
> >>> 2
> >>>>> different
> >>>>>>> categories: "Resort" and
> >> "WaterPark".
> >>> Given either
> >>>>> "Resort"
> >>>>>>> or "WaterPark" is chosen as
> the
> >> category,
> >>> this
> >>>>> resort should
> >>>>>>> be returned as a match.
> >>>>>>>>
> >>>>>>>> The another one is that
> one
> >> business
> >>> may fall
> >>>>> into
> >>>>>>> non-leaf categories, like
> >>> "AgriculturalField"
> >>>>> instead of
> >>>>>>> "Orchard".
> >>>>>>>>
> >>>>>>>> Technically I would
> prefer:
> >>>>>>>>
> >>>>>>>> 1 Businesses are
> individuals of
> >> an
> >>> owl:Class.
> >>>>>>> Categories could be antything,
> if it
> >>> supports
> >>>>> reasoning.
> >>>>>>> This is different from the
> Protege
> >> Pizza
> >>> sample,
> >>>>> while pizza
> >>>>>>> are classes.
> >>>>>>>>
> >>>>>>>> 2 When adding new
> businesses, we
> >> only
> >>> need to
> >>>>> add new
> >>>>>>> business individual(maybe we
> need to
> >> add
> >>> more
> >>>>> categories),
> >>>>>>> and connect the new
> individuals to
> >> the
> >>>>> categories.
> >>>>>>>>
> >>>>>>>> I have been trying
> different
> >> ways, but
> >>> still
> >>>>> no
> >>>>>>> success.
> >>>>>>>>
> >>>>>>>> Any help would be highly
> >> appreciated.
> >>>>>>>>
> >>>>>>>> Ningfeng
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> >
>
> +----------------------------------------------------------------------+
> |  Dr Thomas Schneider       
>              
>    schneider@... 
> |
> |  School of Computer Science   
>    http://www.cs.man.ac.uk/~schneidt  |
> |  Kilburn Building, Room 2.114     
>            phone +44 161
> 2756136  |
> |  University of Manchester       
>                
>                
>     |
> |  Oxford Road         
>                
>                
>    _///_       |
> |  Manchester M13 9PL       
>                
>               (o~o) 
>      |
> +-----------------------------------------------------oOOO--(_)--OOOo--+
>
> Lampung (n.)
>  The daze which follows turning on the light in the middle
> of the night.
>
>                
>   Douglas Adams, John Lloyd: The Deeper Meaning of
> Liff
>
>
>
>
>
>
>
>
>
>
>






Re: How to connect one individual to multiple classes

by Thomas Schneider-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Ningfeng,

On 17 May 2009, at 21:46, nfxu@... wrote:

>
> Hi Thomas, thanks for your detailed explanation for the difference  
> between Asserted and Inferred axioms.
>
> Let me clarify my initial(and still is) purpose and motivation for  
> my project. I suppose I should have done this in the very beginning.  
> Or I just didn't do it well.
>
> I have thousands of local businesses, basically for touring/
> education/entertainment/recreation/vacation, like theater, amusement  
> park, museum, art gallery, forest park, skiing resort, night club,  
> ball room, among many others.
>
> Online directory of such businesses basically provides 2 approaches  
> for users to access them: 1, all businesses are categorized, each  
> one is related with a specific category(or to say, under this  
> category), and the categories form a hierarchy; 2, keyword search in  
> business information. We will focus on the category approach.
>
> When users click one category in the hierarchy, we expect businesses  
> directly under this category and businesses under this category's  
> sub-categories are returned to user. For example, the following is  
> the category hierarchy, we use the site(place to conduct business)  
> as criteria:
>
> Site(this is the root category)
> +---WaterPark
> +---Resort
> .......
> +---AgriculturalField
>    +---Orchard
> +---CollectionExhibition
>    +---ExhibitionHall
>    +---Memorial
>    +---Museum
> +---SportsField
>    +---Playground
>    +---Stadium
> .......
>
> For example, click on "Museum", all businesses related with Museum  
> category are returned, that is, all museums are returned. Given  
> "CollectionExhibition", all museums, memorials and exbition halls  
> are returned.
>
> There are 2 things I need to mention:
>
>  1. A business may fall into non-leaf categories, like  
> "AgriculturalField".
>
>  2. A business can be with more than one category. A business might  
> have more than one service to offer. Here is an example: a resort  
> has hotels, bars and some other regular facilities, it also has one  
> indoor water park because of its hot spring water resource.. So this  
> resort should be under 2 different categories at the same time:  
> "Resort" and "WaterPark". Click on either "Resort" or "WaterPark",  
> this resort should be returned as a match.
>
> The multi-categories of one business is where the OWL comes into play.
>
> The rdf:type solution works, which has following XML style for some  
> business(instance):
>
>    <Business rdf:about="#FlowerBayResort">
>        <rdf:type rdf:resource="#Resort"/>
>        <rdf:type rdf:resource="#Playground"/>
>        <rdf:type rdf:resource="#WaterPark"/>
>    </Business>
>
> Is this a good OWL design or not? I can't tell at this time.

from my point of view (as a logician with, well, not much experience  
in building ontologies), I don't have any objections to your  
suggestions so far.

> Probably the following looks better, but I don't know to implement it:
>
>    <Business rdf:about="#FlowerBayResort">
>        ...hasSite ( "#Resort" and "#Playground" and "#WaterPark" )...
>    </Business>

I don't know off the top of my head how to express this conjunction in  
RDF, but I understand it's not trivial. Since you mentioned that  
you're using Protégé, why not create the assertion there and save the  
ontology in RDF/XML format? All you need to do is, for the individual  
FlowerBayResort, add a new entry under "Types" using the "Class  
expression editor" to type Resort and Playground and WaterPark. After  
invoking the reasoner you will have three more entries under "Types"  
that contain each of the three classes mentioned.

Creating all sorts of axioms in Protégé is intuitive and easy once  
you've found out how, and it's all described in the easy-to-understand  
Protégé OWL tutorial: http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/

HTH

Thomas

>
>
>    The definition of Business and hasSite:
>
>    <owl:Class rdf:about="#Business">
>        <rdfs:subClassOf>
>            <owl:Restriction>
>                <owl:onProperty rdf:resource="#hasSite"/>
>                <owl:someValuesFrom rdf:resource="#Site"/>
>            </owl:Restriction>
>        </rdfs:subClassOf>
>    </owl:Class>
>
> I am looking for a good solution for this multi-category issue.
>
> Ningfeng
>
>
>
> --- On Sun, 5/17/09, Thomas Schneider <schneidt@...> wrote:
>
>> From: Thomas Schneider <schneidt@...>
>> Subject: Re: How to connect one individual to multiple classes
>> To: public-owl-dev@...
>> Date: Sunday, May 17, 2009, 4:44 PM
>> Hi Ningfeng,
>>
>> On 17 May 2009, at 06:53, nfxu@...
>> wrote:
>>
>>>
>>> I have read through the OWL 2 Primer, however, didn't
>> get much out of it. But I did make some progress.
>>>
>>> Frist of all, I tried using rdf:type to let my
>> business multi-classified, so the business FlowerBayResort
>> can be Business, Resort, WaterPark and Playground
>> simultaneously. And this satisfies my needs. But I doubt
>> this is a good design practice. Here is how it works in
>> Protege 4:
>>>
>>>   1 Load the OWL document in Appendix 1 into
>> Protege 4; At this time the reasoner is off.
>>>
>>>   2 Under tab Classes, in the "Asserted class
>> hierarchy", click classes Thing/Site/SportsField, there is
>> no members listed under any of them. But FlowerBayResort is
>> the member of Business/Resort/WaterPark/Playground.
>>>
>>>   3 Now click menu Reasoner then "Pellet 1.5" to
>> enable the reasoner.
>>>
>>>   4 Under tab Classes, in the "Asserted class
>> hierarchy", click classes Thing/Site/SportsField, now the
>> FlowerBayResort is listed as a member under any of them.
>> Same in "Inferred class hierarchy".
>>
>> First, the "Members" entry in the "Class Description" pane
>> of Protégé 4 is independent of the asserted and inferred
>> class hierarchy. If you click on a class in either
>> hierarchy, the class description pane gives you all asserted
>> and inferred axioms. Asserted axioms are statements that are
>> made explicitly in your ontology, and inferred axioms are
>> statements the reasoner has concluded. Please note the
>> difference in their presentation: asserted axioms have a
>> grey background and a solid border; inferred axioms have a
>> greenish(?) background and a dashed border.
>>
>> The reason why FlowerBayResort is a member of almost all
>> classes in your ontology is the following: it is an asserted
>> member of Playground, which is a subclass of all classes
>> except Stadium and WaterPark. Since it is also asserted to
>> be a member of WaterPark, the only class it can't be
>> inferred to be a member of is Stadium. Note that for this
>> reason, the membership of FlowerBayResort for Business and
>> Resort already follows from the class hierarchy and the
>> other to membership assertions, and doesn't need to be
>> asserted explicitly.
>>
>>> Back to my work on "ClassAssertion((Business and
>> (hasSite some Resort) and (hasSite some WaterPark))
>> myBusiness)", the closest I can get is the OWL document in
>> Appendix 2. I have declared the Business as a subclass of
>> <hasSite some Site>, but when I was connecting the
>> FlowerBayResort to Resort/WaterPark/Playground via object
>> property hasSite, I couldn't make it, since in the UI(Object
>> property assertions) only instances are listed as available
>> options for hasSite, classes Resort/WaterPark are not
>> available at all. So I am still stuck here.
>>
>> I'm not sure why you want to declare Business as a subclass
>> of "hasSite some Site" because this is not what your class
>> assertion axiom says.(?)
>>
>> Cheers
>>
>> Thomas
>>
>>>
>>>
>>> Anything wrong please correct me. Thanks for your
>> help.
>>>
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> Appendix 1 Start: OWL document using rdf:type
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> <?xml version="1.0"?>
>>>
>>>
>>> <!DOCTYPE rdf:RDF [
>>>     <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>>>     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>>>     <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
>>>     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>>>     <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
>>>     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
>>>     <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>
>>> ]>
>>>
>>>
>>> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>      xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
>>>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>>>      xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
>>>      xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
>>>      xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>      xmlns:owl="http://www.w3.org/2002/07/owl#"
>>>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>>>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
>>>     <owl:Ontology rdf:about=""/>
>>>
>>>
>>>
>>>     <!--
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>     //
>>>     // Classes
>>>     //
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>      -->
>>>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
>> -->
>>>
>>>     <owl:Class rdf:about="#Business"/>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
>> -->
>>>
>>>     <owl:Class
>> rdf:about="#Playground">
>>>         <rdfs:subClassOf
>> rdf:resource="#SportsField"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
>> -->
>>>
>>>     <owl:Class rdf:about="#Resort">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
>> -->
>>>
>>>     <owl:Class rdf:about="#Site"/>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
>> -->
>>>
>>>     <owl:Class
>> rdf:about="#SportsField">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/ 
>>> Ontology1237653461.owl#Stadium
>> -->
>>>
>>>     <owl:Class rdf:about="#Stadium">
>>>         <rdfs:subClassOf
>> rdf:resource="#SportsField"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
>> -->
>>>
>>>     <owl:Class rdf:about="#WaterPark">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!--
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>     //
>>>     // Individuals
>>>     //
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>      -->
>>>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
>> -->
>>>
>>>     <Resort
>> rdf:about="#FlowerBayResort">
>>>         <rdf:type
>> rdf:resource="#Business"/>
>>>         <rdf:type
>> rdf:resource="#Playground"/>
>>>         <rdf:type
>> rdf:resource="#WaterPark"/>
>>>     </Resort>
>>> </rdf:RDF>
>>>
>>>
>>>
>>> <!-- Generated by the OWL API (version 2.2.1.1101)
>> http://owlapi.sourceforge.net -->
>>>
>>>
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> Appendix 1 End
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>>
>>>
>>>
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> Appendix 2 Start: OWL document using existential
>> quantification
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> <?xml version="1.0"?>
>>>
>>>
>>> <!DOCTYPE rdf:RDF [
>>>     <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>>>     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>>>     <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
>>>     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>>>     <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
>>>     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
>>>     <!ENTITY Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>
>>> ]>
>>>
>>>
>>> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>      xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
>>>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>>>      xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
>>>      xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
>>>      xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl# 
>>> "
>>>      xmlns:owl="http://www.w3.org/2002/07/owl#"
>>>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>>>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
>>>     <owl:Ontology rdf:about=""/>
>>>
>>>
>>>
>>>     <!--
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>     //
>>>     // Object Properties
>>>     //
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>      -->
>>>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/ 
>>> Ontology1237653461.owl#hasSite
>> -->
>>>
>>>     <owl:ObjectProperty
>> rdf:about="#hasSite"/>
>>>
>>>
>>>
>>>     <!--
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>     //
>>>     // Classes
>>>     //
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>      -->
>>>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
>> -->
>>>
>>>     <owl:Class rdf:about="#Business">
>>>         <rdfs:subClassOf>
>>>
>> <owl:Restriction>
>>>
>> <owl:onProperty rdf:resource="#hasSite"/>
>>>
>> <owl:someValuesFrom rdf:resource="#Site"/>
>>>
>> </owl:Restriction>
>>>         </rdfs:subClassOf>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
>> -->
>>>
>>>     <owl:Class
>> rdf:about="#Playground">
>>>         <rdfs:subClassOf
>> rdf:resource="#SportsField"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
>> -->
>>>
>>>     <owl:Class rdf:about="#Resort">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
>> -->
>>>
>>>     <owl:Class rdf:about="#Site"/>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
>> -->
>>>
>>>     <owl:Class
>> rdf:about="#SportsField">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/ 
>>> Ontology1237653461.owl#Stadium
>> -->
>>>
>>>     <owl:Class rdf:about="#Stadium">
>>>         <rdfs:subClassOf
>> rdf:resource="#SportsField"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
>> -->
>>>
>>>     <owl:Class rdf:about="#WaterPark">
>>>         <rdfs:subClassOf
>> rdf:resource="#Site"/>
>>>     </owl:Class>
>>>
>>>
>>>
>>>     <!--
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>     //
>>>     // Individuals
>>>     //
>>>
>> ///////////////////////////////////////////////////////////////////////////////////////
>>>      -->
>>>
>>>
>>>
>>>
>>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
>> -->
>>>
>>>     <Business
>> rdf:about="#FlowerBayResort"/>
>>> </rdf:RDF>
>>>
>>>
>>>
>>> <!-- Generated by the OWL API (version 2.2.1.1101)
>> http://owlapi.sourceforge.net -->
>>>
>>>
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>> Appendix 2 End
>>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>>>
>>>
>>>
>>> --- On Fri, 5/15/09, Xu, Ningfeng <nfxu@...>
>> wrote:
>>>
>>>> From: Xu, Ningfeng <nfxu@...>
>>>> Subject: Re: How to connect one individual to
>> multiple classes
>>>> To: "Uli Sattler" <sattler@...>
>>>> Cc: public-owl-dev@...
>>>> Date: Friday, May 15, 2009, 5:56 PM
>>>>
>>>> Ok, I will read the OWL 2 Primer, will see what I
>> can get.
>>>>
>>>> Currently I am using Protege 3(thus OWL 1).
>>>>
>>>> Thanks a lot.
>>>>
>>>> Ningfeng
>>>>
>>>>
>>>> --- On Fri, 5/15/09, Uli Sattler <sattler@...>
>>>> wrote:
>>>>
>>>>> From: Uli Sattler <sattler@...>
>>>>> Subject: Re: How to connect one individual to
>> multiple
>>>> classes
>>>>> To: nfxu@...
>>>>> Date: Friday, May 15, 2009, 5:45 PM
>>>>>
>>>>> On 14 May 2009, at 21:12, nfxu@...
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> I haven't looked into OWL 2(Primer). So
>> here I am
>>>> with
>>>>> OWL 1.
>>>>>>
>>>>>
>>>>> ...don't bother whether it's "2" or "1" just
>> read
>>>> through
>>>>> the primer:
>>>>> it should clarify a lot of things. Also, what
>> editor
>>>> do you
>>>>> use? I'd
>>>>> recommend Protege 4.
>>>>>
>>>>> Cheers, Uli
>>>>>
>>>>>> Regarding "ClassAssertion((Business and
>> (hasSite
>>>> some
>>>>> Resort) and
>>>>>> (hasSite some Waterpark)) yourBusiness)",
>> how can
>>>> I
>>>>> declare an
>>>>>> individual business(waterParkResort)? I am
>> trying
>>>> to
>>>>> do this:
>>>>>>
>>>>>>     <owl:Class
>>>>> rdf:about="#Business">
>>>>>>
>> <rdfs:subClassOf>
>>>>>>
>>>>>     <owl:Restriction>
>>>>>>
>>>>>     <owl:someValuesFrom
>>>>> rdf:resource="#Site"/>
>>>>>>
>>>>>     <owl:onProperty>
>>>>>>
>>>>>     <owl:ObjectProperty
>>>>> rdf:ID="hasSite"/>
>>>>>>
>>>>>     </owl:onProperty>
>>>>>>
>>>>>     </owl:Restriction>
>>>>>>
>> </rdfs:subClassOf>
>>>>>>       ...
>>>>>>     </owl:Class>
>>>>>>
>>>>>>     <Business
>>>>> rdf:ID="waterParkResort">
>>>>>>       ...hasSite
>> Waterpark...
>>>>>
>>>>>     ==> how to declare this?
>>>>>>       ...hasSite Resort...
>>>>>
>>>>>    ==> how to declare this?
>>>>>>     </Business>
>>>>>>
>>>>>> I couldn't find appropriate OWL contructs
>> to
>>>> declare
>>>>> that
>>>>>> waterParkResort has both Resort and
>> Waterpark
>>>> when
>>>>> declaring
>>>>>> waterParkResort as an instance of class
>> Business.
>>>> I
>>>>> think this is my
>>>>>> problem.
>>>>>>
>>>>>> Thanks for your help.
>>>>>>
>>>>>> Ningfeng
>>>>>>
>>>>>>
>>>>>> --- On Thu, 5/14/09, Uli Sattler <sattler@...>
>>>>> wrote:
>>>>>>
>>>>>>> From: Uli Sattler <sattler@...>
>>>>>>> Subject: Re: How to connect one
>> individual
>>>> to
>>>>> multiple classes
>>>>>>> To: "Xu, Ningfeng" <nfxu@...>
>>>>>>> Date: Thursday, May 14, 2009, 3:00 AM
>>>>>>>
>>>>>>> On 13 May 2009, at 19:33, Xu,
>> Ningfeng
>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Uli, thanks for your reply.
>>>>>>>>
>>>>>>>> Originally, carrying the Object
>> Oriented
>>>>> Analysis
>>>>>>> spirit, and being new to semantic
>> world, I
>>>> started
>>>>> with:
>>>>>>>>
>>>>>>>> 1 Let the business
>>>>>>>
>>>>>>> so, this is 'yourBusiness', I guess.
>>>>>>>
>>>>>>>> be instance of an owl:Class
>> Business;
>>>>>>>> 2 The categories
>>>>>>>
>>>>>>> like restaurant, waterpark? Do they
>> have a
>>>> common
>>>>>>> superclass, say, "Attraction"?
>>>>>>>
>>>>>>>> are classes, so it is easy to make
>> a
>>>> hierarchy
>>>>> and all
>>>>>>> siblings disjointed with each other;
>>>>>>>
>>>>>>> ok
>>>>>>>
>>>>>>>>
>>>>>>>> 3 Class Business has one object
>>>> property,
>>>>> hasSite,
>>>>>>> which has the category as the value.
>>>>>>>
>>>>>>> hm, how does this look like in OWL?
>>>>>>>
>>>>>>> SubClassOf(Business (hasSite some
>>>> Attraction))
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> SubClassOf(Business (hasSite only
>>>> Attraction))
>>>>>>>
>>>>>>>
>>>>>>>> In case of multiple categories,
>> one
>>>> business
>>>>> instance
>>>>>>> has multiple hasSite properties.
>>>>>>>>
>>>>>>>
>>>>>>> fine - as long as you don't declare
>> hasSite
>>>> to be
>>>>>>> functional and as long as you don't
>> use
>>>> atmost
>>>>> cardinality
>>>>>>> restriction on hasSite, this is
>> possible.
>>>>>>>
>>>>>>>> While, obviously, this ontology is
>> OWL
>>>> Full,
>>>>> since
>>>>>>> hasSite has owl:Class as its value.
>>>>>>>>
>>>>>>>
>>>>>>> now you lost me...you can say that
>>>>>>>
>>>>>>> ClassAssertion((Business and (hasSite
>> some
>>>>> Restaurant) and
>>>>>>> (hasSite some Waterpark)
>> yourBusiness)
>>>>>>>
>>>>>>> without leaving OWL DL...
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> I haven't tried to convert
>> categories
>>>> from
>>>>> owl:Class
>>>>>>> to instance so hasSite is good for OWL
>> DL.
>>>> But how
>>>>> much can
>>>>>>> reasoner get out from property value?
>> For
>>>>> example:
>>>>>>>>
>>>>>>>> business1 hasSite Orchard
>>>>>>>> business2 hasSite
>> AgriculturalField
>>>>>>>>
>>>>>>>> If we want to list all businesses
>> which
>>>> is
>>>>> under
>>>>>>> AgriculturalField, can business1 and
>>>> business2
>>>>> both be
>>>>>>> returned? I don't know...
>>>>>>>>
>>>>>>>
>>>>>>> yes, it would, if you would rephrase
>> it in
>>>> the
>>>>> above style
>>>>>>> using 'some'...
>>>>>>>
>>>>>>> Did you have a look at the OWL primer
>> (http://www.w3.org/2007/OWL/wiki/Primer)?
>>>>>>>    Cheers, Uli
>>>>>>>>
>>>>>>>> Ningfeng
>>>>>>>>
>>>>>>>>
>>>>>>>> --- On Wed, 5/13/09, Uli Sattler
>> <sattler@...>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> From: Uli Sattler <sattler@...>
>>>>>>>>> Subject: Re: How to connect
>> one
>>>> individual
>>>>> to
>>>>>>> multiple classes
>>>>>>>>> To: "Xu, Ningfeng" <nfxu@...>
>>>>>>>>> Date: Wednesday, May 13, 2009,
>> 11:01
>>>> PM
>>>>>>>>> Hi Xu, I can't see where the
>> problem
>>>>>>>>> is: you can say that an
>> individual is
>>>> a
>>>>> member of
>>>>>>> more than
>>>>>>>>> one class...
>>>>>>>>>
>>>>>>>>> Conceptually, you might want
>> to
>>>> *relate*
>>>>> them:
>>>>>>> instead of
>>>>>>>>> saying "this business *is a*
>>>> restaurant
>>>>> and a
>>>>>>> water park,
>>>>>>>>> you might want to say that,
>> among
>>>> the
>>>>>>> things/services it
>>>>>>>>> *offers*, there is a
>> restaurant and
>>>> a
>>>>> water park.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Cheers, Uli
>>>>>>>>>
>>>>>>>>> On 13 May 2009, at 13:09, Xu,
>>>> Ningfeng
>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Recently I am trying to
>> build an
>>>> OWL
>>>>> model
>>>>>>> for
>>>>>>>>> touring/entertainment related
>>>> businesses.
>>>>> I have
>>>>>>> categorized
>>>>>>>>> these businesses into one
>> category
>>>>> hierarchy like
>>>>>>> the
>>>>>>>>> following:
>>>>>>>>>>
>>>>>>>>>> Site(Root)
>>>>>>>>>> +---WaterPark
>>>>>>>>>> +---Resort
>>>>>>>>>> .......
>>>>>>>>>> +---AgriculturalField
>>>>>>>>>>
>>    +---Orchard
>>>>>>>>>> +---CollectionExhibition
>>>>>>>>>>
>>>>> +---ExhibitionHall
>>>>>>>>>>
>>    +---Memorial
>>>>>>>>>>
>>    +---Museum
>>>>>>>>>> +---SportsField
>>>>>>>>>>
>>    +---Playground
>>>>>>>>>>
>>    +---Stadium
>>>>>>>>>> .......
>>>>>>>>>>
>>>>>>>>>> The goal is, given any
>> category
>>>> in
>>>>> the
>>>>>>> hierarchy, we
>>>>>>>>> can return all related
>> businesses
>>>> back.
>>>>> For
>>>>>>> example, given
>>>>>>>>> "Museum" as the category, we
>> are
>>>> supposed
>>>>> to
>>>>>>> return all
>>>>>>>>> museums; given
>>>> "CollectionExhibition",
>>>>> all
>>>>>>> museums,
>>>>>>>>> memorials and exbitionHalls
>> are
>>>> returned.
>>>>>>>>>>
>>>>>>>>>> One thing is one business
>> might
>>>> have
>>>>> more than
>>>>>>> one
>>>>>>>>> services to offer. Here is an
>>>> example: a
>>>>> resort
>>>>>>> has hotels,
>>>>>>>>> bars and some other regular
>>>> facilities, it
>>>>> also
>>>>>>> has one
>>>>>>>>> indoor water park because of
>> its hot
>>>>> spring water
>>>>>>> resource..
>>>>>>>>> So this resort should be
>> categorized
>>>> into
>>>>> 2
>>>>>>> different
>>>>>>>>> categories: "Resort" and
>>>> "WaterPark".
>>>>> Given either
>>>>>>> "Resort"
>>>>>>>>> or "WaterPark" is chosen as
>> the
>>>> category,
>>>>> this
>>>>>>> resort should
>>>>>>>>> be returned as a match.
>>>>>>>>>>
>>>>>>>>>> The another one is that
>> one
>>>> business
>>>>> may fall
>>>>>>> into
>>>>>>>>> non-leaf categories, like
>>>>> "AgriculturalField"
>>>>>>> instead of
>>>>>>>>> "Orchard".
>>>>>>>>>>
>>>>>>>>>> Technically I would
>> prefer:
>>>>>>>>>>
>>>>>>>>>> 1 Businesses are
>> individuals of
>>>> an
>>>>> owl:Class.
>>>>>>>>> Categories could be antything,
>> if it
>>>>> supports
>>>>>>> reasoning.
>>>>>>>>> This is different from the
>> Protege
>>>> Pizza
>>>>> sample,
>>>>>>> while pizza
>>>>>>>>> are classes.
>>>>>>>>>>
>>>>>>>>>> 2 When adding new
>> businesses, we
>>>> only
>>>>> need to
>>>>>>> add new
>>>>>>>>> business individual(maybe we
>> need to
>>>> add
>>>>> more
>>>>>>> categories),
>>>>>>>>> and connect the new
>> individuals to
>>>> the
>>>>>>> categories.
>>>>>>>>>>
>>>>>>>>>> I have been trying
>> different
>>>> ways, but
>>>>> still
>>>>>>> no
>>>>>>>>> success.
>>>>>>>>>>
>>>>>>>>>> Any help would be highly
>>>> appreciated.
>>>>>>>>>>
>>>>>>>>>> Ningfeng
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>>
>>
>> +
>> ----------------------------------------------------------------------+
>> |  Dr Thomas Schneider
>>
>>    schneider@...
>> |
>> |  School of Computer Science
>>    http://www.cs.man.ac.uk/~schneidt  |
>> |  Kilburn Building, Room 2.114
>>            phone +44 161
>> 2756136  |
>> |  University of Manchester
>>
>>
>>     |
>> |  Oxford Road
>>
>>
>>    _///_       |
>> |  Manchester M13 9PL
>>
>>               (o~o)
>>      |
>> +-----------------------------------------------------oOOO--(_)--
>> OOOo--+
>>
>> Lampung (n.)
>>   The daze which follows turning on the light in the middle
>> of the night.
>>
>>
>>   Douglas Adams, John Lloyd: The Deeper Meaning of
>> Liff
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
>
>

+----------------------------------------------------------------------+
|  Dr Thomas Schneider                         schneider@...  |
|  School of Computer Science       http://www.cs.man.ac.uk/~schneidt  |
|  Kilburn Building, Room 2.114                 phone +44 161 2756136  |
|  University of Manchester                                            |
|  Oxford Road                                             _///_       |
|  Manchester M13 9PL                                      (o~o)       |
+-----------------------------------------------------oOOO--(_)--OOOo--+

Lampung (n.)
  The daze which follows turning on the light in the middle of the  
night.

                   Douglas Adams, John Lloyd: The Deeper Meaning of Liff











Parent Message unknown Re: How to connect one individual to multiple classes

by Xu, Ningfeng :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Thomas, I followed your suggestion, here is what I got(It works!):

    <Business rdf:about="#FlowerBayResort">
        <rdf:type>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Playground"/>
                    <rdf:Description rdf:about="#Resort"/>
                    <rdf:Description rdf:about="#WaterPark"/>
                </owl:intersectionOf>
            </owl:Class>
        </rdf:type>
    </Business>

Syntactically this looks like:

    <Business rdf:about="#FlowerBayResort">
        ...<rdf:type> ...#Resort and #WaterPark and #Playground...
    </Business>

which is very close to my expectation.

I think it is time to close this discussion. I do think the expected solution serves as a general design pattern for many classification problems, however if people desires a semantic web solution. "rdf:type" is not a usual property because it is neither an object property nor a datatype property: it connects an instance with a class. I wonder why OWL doesn't have a more general property to fulfill this need, if I can ask.

Thanks.

Ningfeng


--- On Mon, 5/18/09, Thomas Schneider <schneidt@...> wrote:

> From: Thomas Schneider <schneidt@...>
> Subject: Re: How to connect one individual to multiple classes
> To: public-owl-dev@...
> Date: Monday, May 18, 2009, 4:38 AM
> Hi Ningfeng,
>
> On 17 May 2009, at 21:46, nfxu@...
> wrote:
>
> >
> > Hi Thomas, thanks for your detailed explanation for
> the difference between Asserted and Inferred axioms.
> >
> > Let me clarify my initial(and still is) purpose and
> motivation for my project. I suppose I should have done this
> in the very beginning. Or I just didn't do it well.
> >
> > I have thousands of local businesses, basically for
> touring/education/entertainment/recreation/vacation, like
> theater, amusement park, museum, art gallery, forest park,
> skiing resort, night club, ball room, among many others.
> >
> > Online directory of such businesses basically provides
> 2 approaches for users to access them: 1, all businesses are
> categorized, each one is related with a specific category(or
> to say, under this category), and the categories form a
> hierarchy; 2, keyword search in business information. We
> will focus on the category approach.
> >
> > When users click one category in the hierarchy, we
> expect businesses directly under this category and
> businesses under this category's sub-categories are returned
> to user. For example, the following is the category
> hierarchy, we use the site(place to conduct business) as
> criteria:
> >
> > Site(this is the root category)
> > +---WaterPark
> > +---Resort
> > .......
> > +---AgriculturalField
> >    +---Orchard
> > +---CollectionExhibition
> >    +---ExhibitionHall
> >    +---Memorial
> >    +---Museum
> > +---SportsField
> >    +---Playground
> >    +---Stadium
> > .......
> >
> > For example, click on "Museum", all businesses related
> with Museum category are returned, that is, all museums are
> returned. Given "CollectionExhibition", all museums,
> memorials and exbition halls are returned.
> >
> > There are 2 things I need to mention:
> >
> >  1. A business may fall into non-leaf categories,
> like "AgriculturalField".
> >
> >  2. A business can be with more than one
> category. A business might have more than one service to
> offer. Here is an example: a resort has hotels, bars and
> some other regular facilities, it also has one indoor water
> park because of its hot spring water resource.. So this
> resort should be under 2 different categories at the same
> time: "Resort" and "WaterPark". Click on either "Resort" or
> "WaterPark", this resort should be returned as a match.
> >
> > The multi-categories of one business is where the OWL
> comes into play.
> >
> > The rdf:type solution works, which has following XML
> style for some business(instance):
> >
> >    <Business
> rdf:about="#FlowerBayResort">
> >        <rdf:type
> rdf:resource="#Resort"/>
> >        <rdf:type
> rdf:resource="#Playground"/>
> >        <rdf:type
> rdf:resource="#WaterPark"/>
> >    </Business>
> >
> > Is this a good OWL design or not? I can't tell at this
> time.
>
> from my point of view (as a logician with, well, not much
> experience in building ontologies), I don't have any
> objections to your suggestions so far.
>
> > Probably the following looks better, but I don't know
> to implement it:
> >
> >    <Business
> rdf:about="#FlowerBayResort">
> >        ...hasSite ( "#Resort" and
> "#Playground" and "#WaterPark" )...
> >    </Business>
>
> I don't know off the top of my head how to express this
> conjunction in RDF, but I understand it's not trivial. Since
> you mentioned that you're using Protégé, why not create
> the assertion there and save the ontology in RDF/XML format?
> All you need to do is, for the individual FlowerBayResort,
> add a new entry under "Types" using the "Class expression
> editor" to type Resort and Playground and WaterPark. After
> invoking the reasoner you will have three more entries under
> "Types" that contain each of the three classes mentioned.
>
> Creating all sorts of axioms in Protégé is intuitive and
> easy once you've found out how, and it's all described in
> the easy-to-understand Protégé OWL tutorial: http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/
>
> HTH
>
> Thomas
>
> >
> >
> >    The definition of Business and hasSite:
> >
> >    <owl:Class rdf:about="#Business">
> >        <rdfs:subClassOf>
> >           
> <owl:Restriction>
> >               
> <owl:onProperty rdf:resource="#hasSite"/>
> >               
> <owl:someValuesFrom rdf:resource="#Site"/>
> >           
> </owl:Restriction>
> >        </rdfs:subClassOf>
> >    </owl:Class>
> >
> > I am looking for a good solution for this
> multi-category issue.
> >
> > Ningfeng
> >
> >
> >
> > --- On Sun, 5/17/09, Thomas Schneider <schneidt@...>
> wrote:
> >
> >> From: Thomas Schneider <schneidt@...>
> >> Subject: Re: How to connect one individual to
> multiple classes
> >> To: public-owl-dev@...
> >> Date: Sunday, May 17, 2009, 4:44 PM
> >> Hi Ningfeng,
> >>
> >> On 17 May 2009, at 06:53, nfxu@...
> >> wrote:
> >>
> >>>
> >>> I have read through the OWL 2 Primer, however,
> didn't
> >> get much out of it. But I did make some progress.
> >>>
> >>> Frist of all, I tried using rdf:type to let
> my
> >> business multi-classified, so the business
> FlowerBayResort
> >> can be Business, Resort, WaterPark and Playground
> >> simultaneously. And this satisfies my needs. But I
> doubt
> >> this is a good design practice. Here is how it
> works in
> >> Protege 4:
> >>>
> >>>   1 Load the OWL document in
> Appendix 1 into
> >> Protege 4; At this time the reasoner is off.
> >>>
> >>>   2 Under tab Classes, in the
> "Asserted class
> >> hierarchy", click classes Thing/Site/SportsField,
> there is
> >> no members listed under any of them. But
> FlowerBayResort is
> >> the member of
> Business/Resort/WaterPark/Playground.
> >>>
> >>>   3 Now click menu Reasoner
> then "Pellet 1.5" to
> >> enable the reasoner.
> >>>
> >>>   4 Under tab Classes, in the
> "Asserted class
> >> hierarchy", click classes Thing/Site/SportsField,
> now the
> >> FlowerBayResort is listed as a member under any of
> them.
> >> Same in "Inferred class hierarchy".
> >>
> >> First, the "Members" entry in the "Class
> Description" pane
> >> of Protégé 4 is independent of the asserted and
> inferred
> >> class hierarchy. If you click on a class in
> either
> >> hierarchy, the class description pane gives you
> all asserted
> >> and inferred axioms. Asserted axioms are
> statements that are
> >> made explicitly in your ontology, and inferred
> axioms are
> >> statements the reasoner has concluded. Please note
> the
> >> difference in their presentation: asserted axioms
> have a
> >> grey background and a solid border; inferred
> axioms have a
> >> greenish(?) background and a dashed border.
> >>
> >> The reason why FlowerBayResort is a member of
> almost all
> >> classes in your ontology is the following: it is
> an asserted
> >> member of Playground, which is a subclass of all
> classes
> >> except Stadium and WaterPark. Since it is also
> asserted to
> >> be a member of WaterPark, the only class it can't
> be
> >> inferred to be a member of is Stadium. Note that
> for this
> >> reason, the membership of FlowerBayResort for
> Business and
> >> Resort already follows from the class hierarchy
> and the
> >> other to membership assertions, and doesn't need
> to be
> >> asserted explicitly.
> >>
> >>> Back to my work on "ClassAssertion((Business
> and
> >> (hasSite some Resort) and (hasSite some
> WaterPark))
> >> myBusiness)", the closest I can get is the OWL
> document in
> >> Appendix 2. I have declared the Business as a
> subclass of
> >> <hasSite some Site>, but when I was
> connecting the
> >> FlowerBayResort to Resort/WaterPark/Playground via
> object
> >> property hasSite, I couldn't make it, since in the
> UI(Object
> >> property assertions) only instances are listed as
> available
> >> options for hasSite, classes Resort/WaterPark are
> not
> >> available at all. So I am still stuck here.
> >>
> >> I'm not sure why you want to declare Business as a
> subclass
> >> of "hasSite some Site" because this is not what
> your class
> >> assertion axiom says.(?)
> >>
> >> Cheers
> >>
> >> Thomas
> >>
> >>>
> >>>
> >>> Anything wrong please correct me. Thanks for
> your
> >> help.
> >>>
> >>>
> >>
> ============================================================================
> >>> Appendix 1 Start: OWL document using rdf:type
> >>>
> >>
> ============================================================================
> >>> <?xml version="1.0"?>
> >>>
> >>>
> >>> <!DOCTYPE rdf:RDF [
> >>>     <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
> >>>     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
> >>>     <!ENTITY owl2xml
> "http://www.w3.org/2006/12/owl2-xml#" >
> >>>     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
> >>>     <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
> >>>     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> >>>     <!ENTITY
> Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>
> >>> ]>
> >>>
> >>>
> >>> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>      xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
> >>>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
> >>>      xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
> >>>      xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
> >>>     
> xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>      xmlns:owl="http://www.w3.org/2002/07/owl#"
> >>>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
> >>>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
> >>>     <owl:Ontology
> rdf:about=""/>
> >>>
> >>>
> >>>
> >>>     <!--
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>     //
> >>>     // Classes
> >>>     //
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>      -->
> >>>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Business"/>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
> >> -->
> >>>
> >>>     <owl:Class
> >> rdf:about="#Playground">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#SportsField"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Resort">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Site"/>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
> >> -->
> >>>
> >>>     <owl:Class
> >> rdf:about="#SportsField">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Stadium">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#SportsField"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#WaterPark">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!--
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>     //
> >>>     // Individuals
> >>>     //
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>      -->
> >>>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
> >> -->
> >>>
> >>>     <Resort
> >> rdf:about="#FlowerBayResort">
> >>>     
>    <rdf:type
> >> rdf:resource="#Business"/>
> >>>     
>    <rdf:type
> >> rdf:resource="#Playground"/>
> >>>     
>    <rdf:type
> >> rdf:resource="#WaterPark"/>
> >>>     </Resort>
> >>> </rdf:RDF>
> >>>
> >>>
> >>>
> >>> <!-- Generated by the OWL API (version
> 2.2.1.1101)
> >> http://owlapi.sourceforge.net -->
> >>>
> >>>
> >>>
> >>
> ============================================================================
> >>> Appendix 1 End
> >>>
> >>
> ============================================================================
> >>>
> >>>
> >>>
> >>>
> >>
> ============================================================================
> >>> Appendix 2 Start: OWL document using
> existential
> >> quantification
> >>>
> >>
> ============================================================================
> >>> <?xml version="1.0"?>
> >>>
> >>>
> >>> <!DOCTYPE rdf:RDF [
> >>>     <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
> >>>     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
> >>>     <!ENTITY owl2xml
> "http://www.w3.org/2006/12/owl2-xml#" >
> >>>     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
> >>>     <!ENTITY p1 "http://www.owl-ontologies.com/assert.owl#" >
> >>>     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> >>>     <!ENTITY
> Ontology1237653461 "http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>
> >>> ]>
> >>>
> >>>
> >>> <rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>      xml:base="http://www.owl-ontologies.com/Ontology1237653461.owl"
> >>>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
> >>>      xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
> >>>      xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
> >>>     
> xmlns:Ontology1237653461="http://www.owl-ontologies.com/Ontology1237653461.owl#"
> >>>      xmlns:owl="http://www.w3.org/2002/07/owl#"
> >>>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
> >>>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
> >>>     <owl:Ontology
> rdf:about=""/>
> >>>
> >>>
> >>>
> >>>     <!--
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>     //
> >>>     // Object Properties
> >>>     //
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>      -->
> >>>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#hasSite
> >> -->
> >>>
> >>> 
>    <owl:ObjectProperty
> >> rdf:about="#hasSite"/>
> >>>
> >>>
> >>>
> >>>     <!--
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>     //
> >>>     // Classes
> >>>     //
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>      -->
> >>>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Business
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Business">
> >>>     
>    <rdfs:subClassOf>
> >>>
> >> <owl:Restriction>
> >>>
> >> <owl:onProperty rdf:resource="#hasSite"/>
> >>>
> >> <owl:someValuesFrom rdf:resource="#Site"/>
> >>>
> >> </owl:Restriction>
> >>>     
>    </rdfs:subClassOf>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Playground
> >> -->
> >>>
> >>>     <owl:Class
> >> rdf:about="#Playground">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#SportsField"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Resort
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Resort">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Site
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Site"/>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#SportsField
> >> -->
> >>>
> >>>     <owl:Class
> >> rdf:about="#SportsField">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#Stadium
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#Stadium">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#SportsField"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#WaterPark
> >> -->
> >>>
> >>>     <owl:Class
> rdf:about="#WaterPark">
> >>>     
>    <rdfs:subClassOf
> >> rdf:resource="#Site"/>
> >>>     </owl:Class>
> >>>
> >>>
> >>>
> >>>     <!--
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>     //
> >>>     // Individuals
> >>>     //
> >>>
> >>
> ///////////////////////////////////////////////////////////////////////////////////////
> >>>      -->
> >>>
> >>>
> >>>
> >>>
> >>>     <!-- http://www.owl-ontologies.com/Ontology1237653461.owl#FlowerBayResort
> >> -->
> >>>
> >>>     <Business
> >> rdf:about="#FlowerBayResort"/>
> >>> </rdf:RDF>
> >>>
> >>>
> >>>
> >>> <!-- Generated by the OWL API (version
> 2.2.1.1101)
> >> http://owlapi.sourceforge.net -->
> >>>
> >>>
> >>>
> >>
> ============================================================================
> >>> Appendix 2 End
> >>>
> >>
> ============================================================================
> >>>
> >>>
> >>>
> >>> --- On Fri, 5/15/09, Xu, Ningfeng <nfxu@...>
> >> wrote:
> >>>
> >>>> From: Xu, Ningfeng <nfxu@...>
> >>>> Subject: Re: How to connect one individual
> to
> >> multiple classes
> >>>> To: "Uli Sattler" <sattler@...>
> >>>> Cc: public-owl-dev@...
> >>>> Date: Friday, May 15, 2009, 5:56 PM
> >>>>
> >>>> Ok, I will read the OWL 2 Primer, will see
> what I
> >> can get.
> >>>>
> >>>> Currently I am using Protege 3(thus OWL
> 1).
> >>>>
> >>>> Thanks a lot.
> >>>>
> >>>> Ningfeng
> >>>>
> >>>>
> >>>> --- On Fri, 5/15/09, Uli Sattler <sattler@...>
> >>>> wrote:
> >>>>
> >>>>> From: Uli Sattler <sattler@...>
> >>>>> Subject: Re: How to connect one
> individual to
> >> multiple
> >>>> classes
> >>>>> To: nfxu@...
> >>>>> Date: Friday, May 15, 2009, 5:45 PM
> >>>>>
> >>>>> On 14 May 2009, at 21:12, nfxu@...
> >>>>> wrote:
> >>>>>
> >>>>>>
> >>>>>> I haven't looked into OWL
> 2(Primer). So
> >> here I am
> >>>> with
> >>>>> OWL 1.
> >>>>>>
> >>>>>
> >>>>> ...don't bother whether it's "2" or
> "1" just
> >> read
> >>>> through
> >>>>> the primer:
> >>>>> it should clarify a lot of things.
> Also, what
> >> editor
> >>>> do you
> >>>>> use? I'd
> >>>>> recommend Protege 4.
> >>>>>
> >>>>> Cheers, Uli
> >>>>>
> >>>>>> Regarding
> "ClassAssertion((Business and
> >> (hasSite
> >>>> some
> >>>>> Resort) and
> >>>>>> (hasSite some Waterpark))
> yourBusiness)",
> >> how can
> >>>> I
> >>>>> declare an
> >>>>>> individual
> business(waterParkResort)? I am
> >> trying
> >>>> to
> >>>>> do this:
> >>>>>>
> >>>>>> 
>    <owl:Class
> >>>>> rdf:about="#Business">
> >>>>>>
> >> <rdfs:subClassOf>
> >>>>>>
> >>>>> 
>    <owl:Restriction>
> >>>>>>
> >>>>> 
>    <owl:someValuesFrom
> >>>>> rdf:resource="#Site"/>
> >>>>>>
> >>>>> 
>    <owl:onProperty>
> >>>>>>
> >>>>> 
>    <owl:ObjectProperty
> >>>>> rdf:ID="hasSite"/>
> >>>>>>
> >>>>> 
>    </owl:onProperty>
> >>>>>>
> >>>>> 
>    </owl:Restriction>
> >>>>>>
> >> </rdfs:subClassOf>
> >>>>>>   
>    ...
> >>>>>> 
>    </owl:Class>
> >>>>>>
> >>>>>> 
>    <Business
> >>>>> rdf:ID="waterParkResort">
> >>>>>>   
>    ...hasSite
> >> Waterpark...
> >>>>>
> >>>>>     ==> how to
> declare this?
> >>>>>>   
>    ...hasSite Resort...
> >>>>>
> >>>>>    ==> how to declare
> this?
> >>>>>> 
>    </Business>
> >>>>>>
> >>>>>> I couldn't find appropriate OWL
> contructs
> >> to
> >>>> declare
> >>>>> that
> >>>>>> waterParkResort has both Resort
> and
> >> Waterpark
> >>>> when
> >>>>> declaring
> >>>>>> waterParkResort as an instance of
> class
> >> Business.
> >>>> I
> >>>>> think this is my
> >>>>>> problem.
> >>>>>>
> >>>>>> Thanks for your help.
> >>>>>>
> >>>>>> Ningfeng
> >>>>>>
> >>>>>>
> >>>>>> --- On Thu, 5/14/09, Uli Sattler
> <sattler@...>
> >>>>> wrote:
> >>>>>>
> >>>>>>> From: Uli Sattler <sattler@...>
> >>>>>>> Subject: Re: How to connect
> one
> >> individual
> >>>> to
> >>>>> multiple classes
> >>>>>>> To: "Xu, Ningfeng" <nfxu@...>
> >>>>>>> Date: Thursday, May 14, 2009,
> 3:00 AM
> >>>>>>>
> >>>>>>> On 13 May 2009, at 19:33, Xu,
> >> Ningfeng
> >>>> wrote:
> >>>>>>>
> >>>>>>>>
> >>>>>>>> Uli, thanks for your
> reply.
> >>>>>>>>
> >>>>>>>> Originally, carrying the
> Object
> >> Oriented
> >>>>> Analysis
> >>>>>>> spirit, and being new to
> semantic
> >> world, I
> >>>> started
> >>>>> with:
> >>>>>>>>
> >>>>>>>> 1 Let the business
> >>>>>>>
> >>>>>>> so, this is 'yourBusiness', I
> guess.
> >>>>>>>
> >>>>>>>> be instance of an
> owl:Class
> >> Business;
> >>>>>>>> 2 The categories
> >>>>>>>
> >>>>>>> like restaurant, waterpark? Do
> they
> >> have a
> >>>> common
> >>>>>>> superclass, say,
> "Attraction"?
> >>>>>>>
> >>>>>>>> are classes, so it is easy
> to make
> >> a
> >>>> hierarchy
> >>>>> and all
> >>>>>>> siblings disjointed with each
> other;
> >>>>>>>
> >>>>>>> ok
> >>>>>>>
> >>>>>>>>
> >>>>>>>> 3 Class Business has one
> object
> >>>> property,
> >>>>> hasSite,
> >>>>>>> which has the category as the
> value.
> >>>>>>>
> >>>>>>> hm, how does this look like in
> OWL?
> >>>>>>>
> >>>>>>> SubClassOf(Business (hasSite
> some
> >>>> Attraction))
> >>>>>>>
> >>>>>>> or
> >>>>>>>
> >>>>>>> SubClassOf(Business (hasSite
> only
> >>>> Attraction))
> >>>>>>>
> >>>>>>>
> >>>>>>>> In case of multiple
> categories,
> >> one
> >>>> business
> >>>>> instance
> >>>>>>> has multiple hasSite
> properties.
> >>>>>>>>
> >>>>>>>
> >>>>>>> fine - as long as you don't
> declare
> >> hasSite
> >>>> to be
> >>>>>>> functional and as long as you
> don't
> >> use
> >>>> atmost
> >>>>> cardinality
> >>>>>>> restriction on hasSite, this
> is
> >> possible.
> >>>>>>>
> >>>>>>>> While, obviously, this
> ontology is
> >> OWL
> >>>> Full,
> >>>>> since
> >>>>>>> hasSite has owl:Class as its
> value.
> >>>>>>>>
> >>>>>>>
> >>>>>>> now you lost me...you can say
> that
> >>>>>>>
> >>>>>>> ClassAssertion((Business and
> (hasSite
> >> some
> >>>>> Restaurant) and
> >>>>>>> (hasSite some Waterpark)
> >> yourBusiness)
> >>>>>>>
> >>>>>>> without leaving OWL DL...
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> I haven't tried to
> convert
> >> categories
> >>>> from
> >>>>> owl:Class
> >>>>>>> to instance so hasSite is good
> for OWL
> >> DL.
> >>>> But how
> >>>>> much can
> >>>>>>> reasoner get out from property
> value?
> >> For
> >>>>> example:
> >>>>>>>>
> >>>>>>>> business1 hasSite Orchard
> >>>>>>>> business2 hasSite
> >> AgriculturalField
> >>>>>>>>
> >>>>>>>> If we want to list all
> businesses
> >> which
> >>>> is
> >>>>> under
> >>>>>>> AgriculturalField, can
> business1 and
> >>>> business2
> >>>>> both be
> >>>>>>> returned? I don't know...
> >>>>>>>>
> >>>>>>>
> >>>>>>> yes, it would, if you would
> rephrase
> >> it in
> >>>> the
> >>>>> above style
> >>>>>>> using 'some'...
> >>>>>>>
> >>>>>>> Did you have a look at the OWL
> primer
> >> (http://www.w3.org/2007/OWL/wiki/Primer)?
> >>>>>>>    Cheers, Uli
> >>>>>>>>
> >>>>>>>> Ningfeng
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --- On Wed, 5/13/09, Uli
> Sattler
> >> <sattler@...>
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> From: Uli Sattler
> <sattler@...>
> >>>>>>>>> Subject: Re: How to
> connect
> >> one
> >>>> individual
> >>>>> to
> >>>>>>> multiple classes
> >>>>>>>>> To: "Xu, Ningfeng"
> <nfxu@...>
> >>>>>>>>> Date: Wednesday, May
> 13, 2009,
> >> 11:01
> >>>> PM
> >>>>>>>>> Hi Xu, I can't see
> where the
> >> problem
> >>>>>>>>> is: you can say that
> an
> >> individual is
> >>>> a
> >>>>> member of
> >>>>>>> more than
> >>>>>>>>> one class...
> >>>>>>>>>
> >>>>>>>>> Conceptually, you
> might want
> >> to
> >>>> *relate*
> >>>>> them:
> >>>>>>> instead of
> >>>>>>>>> saying "this business
> *is a*
> >>>> restaurant
> >>>>> and a
> >>>>>>> water park,
> >>>>>>>>> you might want to say
> that,
> >> among
> >>>> the
> >>>>>>> things/services it
> >>>>>>>>> *offers*, there is a
> >> restaurant and
> >>>> a
> >>>>> water park.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Cheers, Uli
> >>>>>>>>>
> >>>>>>>>> On 13 May 2009, at
> 13:09, Xu,
> >>>> Ningfeng
> >>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> Recently I am
> trying to
> >> build an
> >>>> OWL
> >>>>> model
> >>>>>>> for
> >>>>>>>>> touring/entertainment
> related
> >>>> businesses.
> >>>>> I have
> >>>>>>> categorized
> >>>>>>>>> these businesses into
> one
> >> category
> >>>>> hierarchy like
> >>>>>>> the
> >>>>>>>>> following:
> >>>>>>>>>>
> >>>>>>>>>> Site(Root)
> >>>>>>>>>> +---WaterPark
> >>>>>>>>>> +---Resort
> >>>>>>>>>> .......
> >>>>>>>>>>
> +---AgriculturalField
> >>>>>>>>>>
> >>    +---Orchard
> >>>>>>>>>>
> +---CollectionExhibition
> >>>>>>>>>>
> >>>>> +---ExhibitionHall
> >>>>>>>>>>
> >>    +---Memorial
> >>>>>>>>>>
> >>    +---Museum
> >>>>>>>>>> +---SportsField
> >>>>>>>>>>
> >>    +---Playground
> >>>>>>>>>>
> >>    +---Stadium
> >>>>>>>>>> .......
> >>>>>>>>>>
> >>>>>>>>>> The goal is, given
> any
> >> category
> >>>> in
> >>>>> the
> >>>>>>> hierarchy, we
> >>>>>>>>> can return all
> related
> >> businesses
> >>>> back.
> >>>>> For
> >>>>>>> example, given
> >>>>>>>>> "Museum" as the
> category, we
> >> are
> >>>> supposed
> >>>>> to
> >>>>>>> return all
> >>>>>>>>> museums; given
> >>>> "CollectionExhibition",
> >>>>> all
> >>>>>>> museums,
> >>>>>>>>> memorials and
> exbitionHalls
> >> are
> >>>> returned.
> >>>>>>>>>>
> >>>>>>>>>> One thing is one
> business
> >> might
> >>>> have
> >>>>> more than
> >>>>>>> one
> >>>>>>>>> services to offer.
> Here is an
> >>>> example: a
> >>>>> resort
> >>>>>>> has hotels,
> >>>>>>>>> bars and some other
> regular
> >>>> facilities, it
> >>>>> also
> >>>>>>> has one
> >>>>>>>>> indoor water park
> because of
> >> its hot
> >>>>> spring water
> >>>>>>> resource..
> >>>>>>>>> So this resort should
> be
> >> categorized
> >>>> into
> >>>>> 2
> >>>>>>> different
> >>>>>>>>> categories: "Resort"
> and
> >>>> "WaterPark".
> >>>>> Given either
> >>>>>>> "Resort"
> >>>>>>>>> or "WaterPark" is
> chosen as
> >> the
> >>>> category,
> >>>>> this
> >>>>>>> resort should
> >>>>>>>>> be returned as a
> match.
> >>>>>>>>>>
> >>>>>>>>>> The another one is
> that
> >> one
> >>>> business
> >>>>> may fall
> >>>>>>> into
> >>>>>>>>> non-leaf categories,
> like
> >>>>> "AgriculturalField"
> >>>>>>> instead of
> >>>>>>>>> "Orchard".
> >>>>>>>>>>
> >>>>>>>>>> Technically I
> would
> >> prefer:
> >>>>>>>>>>
> >>>>>>>>>> 1 Businesses are
> >> individuals of
> >>>> an
> >>>>> owl:Class.
> >>>>>>>>> Categories could be
> antything,
> >> if it
> >>>>> supports
> >>>>>>> reasoning.
> >>>>>>>>> This is different from
> the
> >> Protege
> >>>> Pizza
> >>>>> sample,
> >>>>>>> while pizza
> >>>>>>>>> are classes.
> >>>>>>>>>>
> >>>>>>>>>> 2 When adding new
> >> businesses, we
> >>>> only
> >>>>> need to
> >>>>>>> add new
> >>>>>>>>> business
> individual(maybe we
> >> need to
> >>>> add
> >>>>> more
> >>>>>>> categories),
> >>>>>>>>> and connect the new
> >> individuals to
> >>>> the
> >>>>>>> categories.
> >>>>>>>>>>
> >>>>>>>>>> I have been
> trying
> >> different
> >>>> ways, but
> >>>>> still
> >>>>>>> no
> >>>>>>>>> success.
> >>>>>>>>>>
> >>>>>>>>>> Any help would be
> highly
> >>>> appreciated.
> >>>>>>>>>>
> >>>>>>>>>> Ningfeng
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> +----------------------------------------------------------------------+
> >> |  Dr Thomas Schneider
> >>
> >>    schneider@...
> >> |
> >> |  School of Computer Science
> >>    http://www.cs.man.ac.uk/~schneidt  |
> >> |  Kilburn Building, Room 2.114
> >>            phone +44
> 161
> >> 2756136  |
> >> |  University of Manchester
> >>
> >>
> >>     |
> >> |  Oxford Road
> >>
> >>
> >>    _///_   
>    |
> >> |  Manchester M13 9PL
> >>
> >>           
>    (o~o)
> >>      |
> >>
> +-----------------------------------------------------oOOO--(_)--OOOo--+
> >>
> >> Lampung (n.)
> >>   The daze which follows turning on
> the light in the middle
> >> of the night.
> >>
> >>
> >>   Douglas Adams, John Lloyd: The
> Deeper Meaning of
> >> Liff
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> >
>
> +----------------------------------------------------------------------+
> |  Dr Thomas Schneider       
>              
>    schneider@... 
> |
> |  School of Computer Science   
>    http://www.cs.man.ac.uk/~schneidt  |
> |  Kilburn Building, Room 2.114     
>            phone +44 161
> 2756136  |
> |  University of Manchester       
>                
>                
>     |
> |  Oxford Road         
>                
>                
>    _///_       |
> |  Manchester M13 9PL       
>                
>               (o~o) 
>      |
> +-----------------------------------------------------oOOO--(_)--OOOo--+
>
> Lampung (n.)
>  The daze which follows turning on the light in the middle
> of the night.
>
>                
>   Douglas Adams, John Lloyd: The Deeper Meaning of
> Liff
>
>
>
>
>
>
>
>
>
>
>