- From: Xu, Ningfeng <nfxu@yahoo.com>
- Date: Mon, 18 May 2009 19:00:34 -0700 (PDT)
- To: public-owl-dev@w3.org, Thomas Schneider <schneidt@cs.man.ac.uk>
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@cs.man.ac.uk> wrote: > From: Thomas Schneider <schneidt@cs.man.ac.uk> > Subject: Re: How to connect one individual to multiple classes > To: public-owl-dev@w3.org > Date: Monday, May 18, 2009, 4:38 AM > Hi Ningfeng, > > On 17 May 2009, at 21:46, nfxu@yahoo.com > 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@cs.man.ac.uk> > wrote: > > > >> From: Thomas Schneider <schneidt@cs.man.ac.uk> > >> Subject: Re: How to connect one individual to > multiple classes > >> To: public-owl-dev@w3.org > >> Date: Sunday, May 17, 2009, 4:44 PM > >> Hi Ningfeng, > >> > >> On 17 May 2009, at 06:53, nfxu@yahoo.com > >> 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@yahoo.com> > >> wrote: > >>> > >>>> From: Xu, Ningfeng <nfxu@yahoo.com> > >>>> Subject: Re: How to connect one individual > to > >> multiple classes > >>>> To: "Uli Sattler" <sattler@cs.man.ac.uk> > >>>> Cc: public-owl-dev@w3.org > >>>> 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@cs.man.ac.uk> > >>>> wrote: > >>>> > >>>>> From: Uli Sattler <sattler@cs.man.ac.uk> > >>>>> Subject: Re: How to connect one > individual to > >> multiple > >>>> classes > >>>>> To: nfxu@yahoo.com > >>>>> Date: Friday, May 15, 2009, 5:45 PM > >>>>> > >>>>> On 14 May 2009, at 21:12, nfxu@yahoo.com > >>>>> 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@cs.man.ac.uk> > >>>>> wrote: > >>>>>> > >>>>>>> From: Uli Sattler <sattler@cs.man.ac.uk> > >>>>>>> Subject: Re: How to connect > one > >> individual > >>>> to > >>>>> multiple classes > >>>>>>> To: "Xu, Ningfeng" <nfxu@yahoo.com> > >>>>>>> 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@cs.man.ac.uk> > >>>>>>> wrote: > >>>>>>>> > >>>>>>>>> From: Uli Sattler > <sattler@cs.man.ac.uk> > >>>>>>>>> Subject: Re: How to > connect > >> one > >>>> individual > >>>>> to > >>>>>>> multiple classes > >>>>>>>>> To: "Xu, Ningfeng" > <nfxu@yahoo.com> > >>>>>>>>> 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@cs.man.ac.uk > >> | > >> | 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@cs.man.ac.uk > | > | 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 > > > > > > > > > > >
Received on Tuesday, 19 May 2009 02:01:18 UTC