- 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