[tdwg-tag] Cardinality - not in Tonto shared ontology

Roger Hyam roger at tdwg.org
Thu Aug 10 11:45:11 CEST 2006

Hi Everyone,

As mentioned in a previous thread I said I would build a justification 
for not having cardinality in the Tonto shared ontology.

In order to do this I will differentiate between:

    * Semantics: Shared meaning
    * Application Logic: Statements necessary to do useful things with
      data within a particular context.

Clearly there are semantics in Application Logic. There is meaning in 
almost anything that isn't purely random but I believe the distinction 
is important and will be come clear as we go along.

Cardinality = "The number of instances of entity B that can (or must) be 
associated with each instance of entity A."

Notation I'll use is:

    * 0 = none allowed
    * 1 = one and only one
    * n...n' = somewhere between n and n' allowed (inclusive). e.g.
      0...1 or 1..2 or 1...* (where * is infinite)

Take an example: The Person class has the property hasMother that allows 
instances of Person to have a link to another Person as their mother. 
The principle of motherhood is a very strong semantic and easy to agree on.

Now lets introduce cardinality.

Everyone has a mother so the cardinality of hasMother should be 1 - correct?

If this is so then systems will say that person objects that don't have 
a hasMother link to another person are invalid and should be rejected. 
It is therefore impossible to communicate between systems using the 
Person class if you don't know who everyones mother is - you can't even 
use it to ask who their mother is so we have a catch 22. That mother 
resolver service will have to create it's own semantics. It also rules 
out use of the Person class in applications that don't care about 
motherhood - the local pizza delivery shop should not have to have a 
reference to your mother in order to sell you pizza!

So the cardinality of hasMother should be 0...1 - correct?

We are now saying that a Person can have 0 or 1 mothers. This isn't 
semantically correct. Everyone has to have at least 1 mother don't they! 
It is only instances of the Person *class *that have 0...1 mothers. This 
is Application Logic not semantics. We are confusing the meaning of the 
hasMother link with what we want to do with software artifacts.

What about an upper bound on this cardinality? Does everyone really have 
1 mother? Well if you are adopted you have a birth mother and an 
adoptive mother. If you have been fostered as well you may have a birth, 
foster and adoptive mothers. Thanks to IVF you could have separate 
genetic and birth mothers. So the upper bound of 1 is a little 
application specific. It doesn't fit if you are running a social 
services department or IVF clinic but the notion of hasMother does work. 
You could always communicate with other systems in terms of this person 
hasMother and simply not express the different mothers roles. In fact 
the other systems probably wouldn't understand them.

So my conclusion from this is that cardinality of properties of objects 
is application specific and not a matter of shared semantics. Do away 
with cardinality and we can capture a great deal of useful semantics and 
communicate using them.

Practically is you are running an IVF clinic or orphanage you will have 
to extend the shared semantic ontology for your particular purposes. 
Most technologies allow you to do this.

I'd be interested in your thoughts on this.

All the best,

(As we are doing motherhood in this example I promise to try and get 
Apple Pie into another example)


 Roger Hyam
 Technical Architect
 Taxonomic Databases Working Group
 roger at tdwg.org
 +44 1578 722782

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.tdwg.org/pipermail/tdwg-tag/attachments/20060810/a3d764d2/attachment.html 

More information about the tdwg-tag mailing list