- From: <nfxu@yahoo.com>
- Date: Sat, 16 May 2009 21:53:28 -0700 (PDT)
- To: Uli Sattler <sattler@cs.man.ac.uk>
- Cc: public-owl-dev@w3.org
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@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 > > >>>>> > > >>>>> > > >>> > > >>> > > >>> > > >>> > > >> > > >> > > > > > > > > > > > > > > > > > > > > > > > >
Received on Sunday, 17 May 2009 04:54:08 UTC