OWL/Protege relationship between classes (... apologies for repeating)

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

OWL/Protege relationship between classes (... apologies for repeating)

KyleOckerlund
A
<http://protege-project.136.n4.nabble.com/Defining-relationships-between-classes-td4671770.html>      
lot
<https://stackoverflow.com/questions/25540371/how-to-create-association-between-classes-in-protege>      
of
<http://protege-project.136.n4.nabble.com/Relationship-between-owl-Class-td4661253.html>      
ink
<https://stackoverflow.com/questions/11227786/ontology-owl-creating-connections-between-classes>    
has been spilt over this, but I'm still not sure I'm following the
"pretege-ic" way of handling this.

Say we have a taxonomy like this:
 
Thing > Object > House  
   |     > Person > Builder ~> Bob

Where everything (but bob) is a class. How would I encode "Builders build
houses", or "People liveIn houses", in the data? I want to believe that this
would be done with object properties, but those seem restricted to juggling
with individuals, while I want to draw connections between classes. Data
properties also seem somewhat individual-centeric. The other thread
mentioned using annotations, but... that just sounds weird. Annotations, for
actual model data?

If it matters, my application needs to have the actual verbs to work with,
as one use case has it dealing with ecosystems. Knowing what eats what, what
lives where, etc. is both important and not easy to express in a hierarchy.

How should I go about this? Thanks everyone for your time!



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: OWL/Protege relationship between classes (... apologies for repeating)

Lorenz Buehmann

Hi,


Comments inline

On 28.08.19 06:14, KyleOckerlund wrote:
A
<http://protege-project.136.n4.nabble.com/Defining-relationships-between-classes-td4671770.html>      
lot
<https://stackoverflow.com/questions/25540371/how-to-create-association-between-classes-in-protege>      
of
<http://protege-project.136.n4.nabble.com/Relationship-between-owl-Class-td4661253.html>      
ink
<https://stackoverflow.com/questions/11227786/ontology-owl-creating-connections-between-classes>    
has been spilt over this, but I'm still not sure I'm following the
"pretege-ic" way of handling this. 

Say we have a taxonomy like this: 
 
Thing > Object > House  
   |     > Person > Builder ~> Bob

Where everything (but bob) is a class. How would I encode "Builders build
houses", or "People liveIn houses", in the data? I want to believe that this
would be done with object properties, but those seem restricted to juggling
with individuals, while I want to draw connections between classes. Data
properties also seem somewhat individual-centeric. The other thread
mentioned using annotations, but... that just sounds weird. Annotations, for
actual model data? 

that is correct, object properties "connect" individuals - indeed, with OWL 2 punning, you can use the same IRI for both classes and individuals.

But, the common way to express those generic statements is to use subclass or equivalence axioms with complex class expressions on the right hand side.
For example,

"People liveIn houses"

can be expressed by (Manchester OWL syntax)

Class: Person 
   SubClassOf: liveIn some House

Sounds ok, right? But this axioms technically just means "every person lives in at least one house" - that's the point where we have to understand what open world in OWL means. And we have to define what we want to express as precise as possible (natural language is very ambigue). For example, if we also mean that they live only in houses (I doubt this is always the case, nor do people live in at least one house), then we could extend our previous axiom to something like this:

 
Class: Person 
   SubClassOf: (liveIn some House) and (liveIn only House)

Keep in mind, OWL axioms are not restrictions, but used for inference. And OWL follows the open world assumption while thee exist no unique names assumption - a lots of pitfalls.


Just my two cents, others like Michael for example can definitely give you better support and links to useful sources like tutorials etc.


If it matters, my application needs to have the actual verbs to work with,
as one use case has it dealing with ecosystems. Knowing what eats what, what
lives where, etc. is both important and not easy to express in a hierarchy. 
You should provide some more details here. Are you talking about NLP? How do you want to query the data later?

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: OWL/Protege relationship between classes (... apologies for repeating)

KyleOckerlund
To recap (using the other example to make sure I'm following), we make an
Object Property "builds", and set the range/domain accordingly. From there,
we set "Builder" to be a subclass of "builds some houses" by using the "+"
icon next to SubclassOf in the Protege entities menu. Makes sense, makes
sense...

As for my use case, it's actually procedural generation system (that may
very well get a NLP interface. It'd be useless, way slower than protege, but
it'd feel real cool). Essentially, I want to be able to import/input a small
amount of information, fill the holes with inference, and then later be able
to ask "I need an ecosystem. Scan the ontology, and find a food chain of
depth 3. For each creature, get 2 components we can turn into upgrades a-la
'more feathers'"; Overall pretty light weight, no lives-on-the-line kind of
stuff.

Open to ideas, if anyone has any!

(I know the etiquette box says to avoid small talk so I'm saving it for the
end, thank you so much for the pointers, this cleared up a ton.)
~Kyle



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: OWL/Protege relationship between classes (... apologies for repeating)

Matthew Horridge-2
Administrator
Hi Kyle,

> On Aug 28, 2019, at 00:26, KyleOckerlund <[hidden email]> wrote:
>
> To recap (using the other example to make sure I'm following), we make an
> Object Property "builds", and set the range/domain accordingly. From there,
> we set "Builder" to be a subclass of "builds some houses" by using the "+"
> icon next to SubclassOf in the Protege entities menu. Makes sense, makes
> sense…

Yes, precisely.

It is possible that you don’t need to set the domain/range – you could just leave these undefined (they are owl:Thing), unless you want to infer something about things that are built and the things that build them.

Cheers,

Matthew


> As for my use case, it's actually procedural generation system (that may
> very well get a NLP interface. It'd be useless, way slower than protege, but
> it'd feel real cool). Essentially, I want to be able to import/input a small
> amount of information, fill the holes with inference, and then later be able
> to ask "I need an ecosystem. Scan the ontology, and find a food chain of
> depth 3. For each creature, get 2 components we can turn into upgrades a-la
> 'more feathers'"; Overall pretty light weight, no lives-on-the-line kind of
> stuff.
>
> Open to ideas, if anyone has any!
>
> (I know the etiquette box says to avoid small talk so I'm saving it for the
> end, thank you so much for the pointers, this cleared up a ton.)
> ~Kyle


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