Defining a generic "hasProperty" property ? RE: [Ontology] UCDs vs ontologies?

Bernard Vatant bernard.vatant at mondeca.com
Thu Jun 2 10:12:07 PDT 2005


Bonjour Sebastien

> When trying to build small ontologies, I found (and still do find)
> extremely stupid to be "forced" to define one slot dedicated to each class
> to indicate "hasSomething".
> In your example, Contact / hasContact , How / hasHow, What / hasWhat, ...
> I found this (and this is the case in every example I could find) awful.

What is really awful is the lack of vocabulary :)
Actually all the point of Object Properties is to make distinct the Class which is the
Property Range (e.g. Contact) from the Property itself (e.g. hasContact). Maybe there it's
the definition of the "hasContact" Range which has to be revisited. Should be perhaps
"Organization", or "Actor", or "Person" ... whatever, in any case a Class of which
definition is independent of the fact that it is the Range of "hasContact". IOW, a sound
ontology should always try and make distinct for any entity the so-called "rigid" or
"essential" properties, and the ones inherited from its relations with other entities
(otherwise called roles). If a class is created "ad hoc" just as the range of some
property, it generally means that something sucks in the model ...

> I wish we could define something where we don't have to be omniscients
> when building the ontology, but where the ability to make reasonning would
> not be lost. Something like:
>   - Having a class named Property
>   - Having classes Contact, How, What, ... being subclasses of Property
> (these classes might have many superclasses)

Hmmm ... "le degre zero de la semantique" ?? :))
In any case, I won't name this Class "Property". Since, if I catch well your point, just
*anything* can be instance of this class, well, there is a built-in class for that in OWL.
It's owl:Thing

>  - Having a unique slot "hasProperty" with a value being a Class, with the
> allowed class "Property" (thus also allowing Property's subclasses)

I'm not sure what you mean by "with a value being a Class". The "Property" class below is
a regular owl:Class, right, not a meta-class? Or is it?

>   That way, instead of having to define zillions of slots (i.e. at least one
> per new subclass of Property) and writing:
>
> MyConcept hasContact Contact
> MyConcept hasHow How
> MyConcept hasWhat What
> ... and as many as there are different possible properties
>
> we could simply write things like:
>
> MyConcept hasProperty Property  (with multiple cardinality, this would cover
> all the above: no need to predefine all possible cases)
>   and if we need to be more precise (restrict allowed properties):
>
> MyConcept hasProperty (Class with superclass Contact or How or What)

I wonder if you are not mixing up two levels of representation. When you write

"MyConcept  hasProperty  foo"

Do you mean that "foo" is a specific value of hasProperty or is it its Range?

IOW, do you mean the above as a strict RDF triple (in this case Property is actually a
meta-class, of which foo is an instance). And BTW your ontology is no more DL.

... or do you mean rather the declaration of a Restriction
For any instance of "MyConcept" , "hasProperty" values are instances of "foo"

<owl:Class rdf:about="MyConcept">
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="http://www.ivoa.net/ontology#hasProperty"/>
      <owl:allValuesFrom rdf:about="#Foo"/>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

> Anyone experienced could tell if my own view is really really wrong?

This is engineering, right - unless you claim to catch "The True Ontology of the Real
World" - but hopefully there are not too many such true believers left among astronomers -
so there is nothing "right" or "wrong", only stuff that works, and stuff that don't ...

In that case, I'm afraid this approach is really too lazy, and think about performance of
queries on VERY LARGE DATA BASES. You got one in Strasbourg, I've heard (I'm even in
there, go figure! http://cdsweb.u-strasbg.fr/ftp/cats/afoev/observer). What kind of
queries will you write using "hasProperty", and how many answers will you have to process
to find out all instances of "Contact" for any "VOEvent" about "SN 2005cf". Remember if
you use a generic property, you will have to filter answers by their class - but the query
will find them first, right?

> Or incompatible with the way description logics and reasonners work? I hope
> this could make our lives easier when we stop playing with toy-ontologies
> and go into the big ones.

Sure. So you don't have to be lazy on modeling and look at the queries it will support ...

Bernard

**********************************************************************************

Bernard Vatant
Senior Consultant
Knowledge Engineering
bernard.vatant at mondeca.com

"Making Sense of Content" :  http://www.mondeca.com
"Everything is a Subject" :  http://universimmedia.blogspot.com

**********************************************************************************




More information about the semantics mailing list