cardinality of properties

17 views
Skip to first unread message

Todd Detwiler

unread,
Jan 28, 2014, 2:17:25 PM1/28/14
to fma-ow...@googlegroups.com
Hey folks, just looking for a bit of OWL expertise. In frames, there is
the notion of the cardinality of a slot, irrespective of where it is used.

In OWL, some characteristics of a property are specified for the
property in general (i.e. domain, range, data type, symmetric,
transitive, ...). But some of these characteristics can be refined to be
more specific at a particular class level, by subclassing restrictions.
Similarly, in frames there are characterstics of a slot in general and
refinements at a class level. In frames, cardinality min and max can be
expressed in general. So, for example, if I had a slot called
pentatholon_events_completed, it might make sense to set the min
cardinality to 0 and the max to 5. However, in OWL I only know how to
assert cardinality at the class level, by subclassing restrictions such as:

[ex:pentatholon_events_completed owl:minCardinality 0]
[ex:pentatholon_events_completed owl:maxCardinality 5]

If this were a reusable property, I'd have to recreate the above
restrictions every time I used them (or name them and make them a named
part of the ontology). Am I missing something. Is there a property
cardinality axiom, in the same way you'd declare that a property is
symmetric, or declare its domain?

Thanks,
Todd

Chris Mungall

unread,
Jan 29, 2014, 11:26:04 AM1/29/14
to fma-ow...@googlegroups.com
Hi Todd,

I don't speak Frames, and don't understand this syntax:

[ex:pentatholon_events_complet
ed owl:minCardinality 0]
[ex:pentatholon_events_completed owl:maxCardinality 5]

Stating mincardinality of 0 is equivalent to saying nothing.

If you want to say that nothing has completed more than 5 pentanthlon events, then say:

Thing SubClassOf pentatholon_events_completed max 5

But presumably this property already has a domain, so it's cleaner to assert this from the domain class. E.g.

Person SubClassOf pentatholon_events_completed max 5

Your object property is a little suspect and suggests a mismatch. Why not have a class Pentathlon and say

Person SubClassOf events_completed max 5 PentathlonEvent


What exactly is the problem here?






--

--- You received this message because you are subscribed to the Google Groups "fma-owl-2009" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fma-owl-2009+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Todd Detwiler

unread,
Jan 29, 2014, 1:10:04 PM1/29/14
to fma-ow...@googlegroups.com
Hey Chris,
Thanks for the follow-up. Please see my responses and clarifications below.
Cheers,
Todd


On 1/29/14, 8:26 AM, Chris Mungall wrote:
Hi Todd,

I don't speak Frames, and don't understand this syntax:

[ex:pentatholon_events_completed owl:minCardinality 0]
[ex:pentatholon_events_completed owl:maxCardinality 5]

They were intended to be shorthand for class expressions, the latter shorthand for:
<owl:Restriction>
  <owl:onProperty rdf:resource="...#pentathlon_events_completed" />
  <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">5</owl:maxCardinality>
</owl:Restriction>


Stating mincardinality of 0 is equivalent to saying nothing.

It may be trivially true, but that does not make it invalid. Consider it there for completeness. My fictitious "Olympics" property was pentathlon_events_competed, which I chose because the name suggests a property with specific cardinality (in this case between 0 and 5).

If you want to say that nothing has completed more than 5 pentanthlon events, then say:

Thing SubClassOf pentathlon_events_completed max 5

But presumably this property already has a domain, so it's cleaner to assert this from the domain class. E.g.

Person SubClassOf pentathlon_events_completed max 5

The latter is what I am trying to avoid. Suppose that this were a more reusable property with a bunch of places where it is used. I would need to recreate the Restriction at each. The former would work, but I was wondering if there was something that could just be asserted about the property. Take for analogy the range of a property. At the level of a property, independent of where it is used, I can assert a domain:

fma:regional_part rdfs:domain fma:Anatomical_entity

but I can refine this at the level of a particular class

fma:Organ rdfs:subClassOf (fma:regional_part all fma:Organ_part)

Now, perhaps I could have used a class in the first expression (much as you used owl:Thing in the pentathlon example):

owl:Thing rdfs:subClassOf (fma:regional_part all fma:Anatomical_entity)

but there was a way of asserting it as a characteristic of a property independent of class involved.

So, the nature of my question was whether or not such a construct exists for min and max cardinality. Extrapolating upon an email exchange that I had with Christine Golbreich, I'm wondering if the following is valid, and if it says what I want. Can you confirm that the following says the same thing as owl:Thing rdfs:subClassOf (fma:cell_shape owl:maxCardinality '3')?:

   <owl:ObjectProperty rdf:about="http://si.uw.edu/ont/fma.owl#cell_shape">
        <rdfs:domain>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://si.uw.edu/ont/fma.owl#cell_shape"/>
                <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">3</owl:maxCardinality>
            </owl:Restriction>
        </rdfs:domain>
    </owl:ObjectProperty>



Your object property is a little suspect and suggests a mismatch. Why not have a class Pentathlon and say

Person SubClassOf events_completed max 5 PentathlonEvent

I am not choosing the classes and properties involved exactly, see below.




What exactly is the problem here?

This isn't a single problem, meaning that this isn't about a single property or class. Rather I am trying to come up with a general pattern by which knowledge in frames is converted into OWL. You mentioned that you don't speak frames, but, in a nutshell, the characteristics (facets) of a property (slot) are present in two different places. Those that are part of the slot independent of where it is used, and more specific facets at the level of a specific class. I am trying to sort out how to convert some of the former, specifically min and max cardinality.

Thanks again for taking time to read through and offer feedback.
-Todd




On Tue, Jan 28, 2014 at 11:17 AM, Todd Detwiler <detw...@gmail.com> wrote:
Hey folks, just looking for a bit of OWL expertise. In frames, there is the notion of the cardinality of a slot, irrespective of where it is used.

In OWL, some characteristics of a property are specified for the property in general (i.e. domain, range, data type, symmetric, transitive, ...). But some of these characteristics can be refined to be more specific at a particular class level, by subclassing restrictions. Similarly, in frames there are characterstics of a slot in general and refinements at a class level. In frames, cardinality min and max can be expressed in general. So, for example, if I had a slot called pentatholon_events_completed, it might make sense to set the min cardinality to 0 and the max to 5. However, in OWL I only know how to assert cardinality at the class level, by subclassing restrictions such as:

[ex:pentatholon_events_completed owl:minCardinality 0]
[ex:pentatholon_events_completed owl:maxCardinality 5]

If this were a reusable property, I'd have to recreate the above restrictions every time I used them (or name them and make them a named part of the ontology). Am I missing something. Is there a property cardinality axiom, in the same way you'd declare that a property is symmetric, or declare its domain?

Thanks,
Todd


--

--- You received this message because you are subscribed to the Google Groups "fma-owl-2009" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fma-owl-2009...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.
--
 
---
You received this message because you are subscribed to the Google Groups "fma-owl-2009" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fma-owl-2009...@googlegroups.com.

Chris Mungall

unread,
Jan 29, 2014, 4:13:10 PM1/29/14
to fma-ow...@googlegroups.com
On Wed, Jan 29, 2014 at 10:10 AM, Todd Detwiler <detw...@gmail.com> wrote:
On 1/29/14, 8:26 AM, Chris Mungall wrote:
Hi Todd,

I don't speak Frames, and don't understand this syntax:

[ex:pentatholon_events_completed owl:minCardinality 0]
[ex:pentatholon_events_completed owl:maxCardinality 5]

They were intended to be shorthand for class expressions, the latter shorthand for:
<owl:Restriction>
  <owl:onProperty rdf:resource="...#pentathlon_events_completed" />
  <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">5</owl:maxCardinality>
</owl:Restriction>


Stating mincardinality of 0 is equivalent to saying nothing.

It may be trivially true, but that does not make it invalid.

Correct, it is valid
 
Consider it there for completeness. My fictitious "Olympics" property was pentathlon_events_competed, which I chose because the name suggests a property with specific cardinality (in this case between 0 and 5).

There is a paper by Alan Rector and Robert Stevens, forget the reference, in which they talk about min-0 cardinality as a pattern for encoding dispositions (you may have more luck asking them or a general OWL list, as this isn't very FMA specific)

I think min-0 cardinality best avoided, it's tautological, doesn't add anything to the ontology, and has the whiff of some kind of modeling mismatch (CWA vs OWA) going on.
 

If you want to say that nothing has completed more than 5 pentanthlon events, then say:

Thing SubClassOf pentathlon_events_completed max 5

But presumably this property already has a domain, so it's cleaner to assert this from the domain class. E.g.

Person SubClassOf pentathlon_events_completed max 5

The latter is what I am trying to avoid. Suppose that this were a more reusable property with a bunch of places where it is used. I would need to recreate the Restriction at each.

No you wouldn't. Using "Person" in the LHS is optional. You can use Thing, or any common subsumer of all the places where it is used.
 
The former would work, but I was wondering if there was something that could just be asserted about the property. Take for analogy the range of a property. At the level of a property, independent of where it is used, I can assert a domain:

fma:regional_part rdfs:domain fma:Anatomical_entity

I don't think this is a good idea. Why not use a generic parthood relation and constrain at a higher level?

You can always have GCIs like: the only things that are part of fma anatomical entities are fma anatomical entities

This violates your desire to have everything "asserted about the property", but I think you're thinking too Frame-y
 
but I can refine this at the level of a particular class

fma:Organ rdfs:subClassOf (fma:regional_part all fma:Organ_part)

?
 
Now, perhaps I could have used a class in the first expression (much as you used owl:Thing in the pentathlon example):

owl:Thing rdfs:subClassOf (fma:regional_part all fma:Anatomical_entity)

This is wrong I'm afraid
 

but there was a way of asserting it as a characteristic of a property independent of class involved.

So, the nature of my question was whether or not such a construct exists for min and max cardinality. Extrapolating upon an email exchange that I had with Christine Golbreich, I'm wondering if the following is valid, and if it says what I want. Can you confirm that the following says the same thing as owl:Thing rdfs:subClassOf (fma:cell_shape owl:maxCardinality '3')?:

   <owl:ObjectProperty rdf:about="http://si.uw.edu/ont/fma.owl#cell_shape">
        <rdfs:domain>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://si.uw.edu/ont/fma.owl#cell_shape"/>
                <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">3</owl:maxCardinality>
            </owl:Restriction>
        </rdfs:domain>
    </owl:ObjectProperty>

?
Your object property is a little suspect and suggests a mismatch. Why not have a class Pentathlon and say

Person SubClassOf events_completed max 5 PentathlonEvent

I am not choosing the classes and properties involved exactly, see below.




What exactly is the problem here?

This isn't a single problem, meaning that this isn't about a single property or class. Rather I am trying to come up with a general pattern by which knowledge in frames is converted into OWL. You mentioned that you don't speak frames, but, in a nutshell, the characteristics (facets) of a property (slot) are present in two different places. Those that are part of the slot independent of where it is used, and more specific facets at the level of a specific class. I am trying to sort out how to convert some of the former, specifically min and max cardinality.

Thanks again for taking time to read through and offer feedback.

Sorry for the terseness of the reply. I'm not sure there even exists a general pattern. Often it will be best to rethink the modeling from scratch. Frames AFAIK don't have any semantics, or to some extent there is often an implicit CWA interpretation which makes straightforward automatic translation dubious.

Other opinions are probably available...

Alan Rector is probably the person to talk to here, he's v familiar with the FMA and frames-vs-DL perspectives.


Todd Detwiler

unread,
Jan 29, 2014, 4:28:08 PM1/29/14
to fma-ow...@googlegroups.com

On 1/29/14, 1:13 PM, Chris Mungall wrote:
>
> I think min-0 cardinality best avoided, it's tautological, doesn't add
> anything to the ontology, and has the whiff of some kind of modeling
> mismatch (CWA vs OWA) going on.

I'm not actually proposing adding min-0 cardinality assertions to the
ontology, just including them in my email example for completeness.

>
> Sorry for the terseness of the reply. I'm not sure there even exists a
> general pattern. Often it will be best to rethink the modeling from
> scratch. Frames AFAIK don't have any semantics, or to some extent
> there is often an implicit CWA interpretation which makes
> straightforward automatic translation dubious.

Remodeling from scratch isn't an option. We have realistic time and
resource constraints. I'm just trying to get a best automated
conversion. Refinements, corrections, augmentations, and remodels will
have to be follow-on efforts.

Thanks for your feedback. I don't fully understand some of the places
you've inserted '?' or the place where you say 'this is just wrong I'm
afraid'. But, the latter was only an analogy intended to illustrate what
it might look like to implement range in the same manner you were
suggesting for implementing cardinality min and max (by applying a
restriction to Thing). I wasn't actually suggesting it as an approach.

I can appreciate that you needed to be terse for your own time
constraints. Your input is helpful.

Cheers,

Chris Mungall

unread,
Jan 29, 2014, 5:13:41 PM1/29/14
to fma-ow...@googlegroups.com
On Wed, Jan 29, 2014 at 1:13 PM, Chris Mungall <cjmu...@lbl.gov> wrote:

If you want to say that nothing has completed more than 5 pentanthlon events, then say:

Thing SubClassOf pentathlon_events_completed max 5

But presumably this property already has a domain, so it's cleaner to assert this from the domain class. E.g.

Person SubClassOf pentathlon_events_completed max 5

The latter is what I am trying to avoid. Suppose that this were a more reusable property with a bunch of places where it is used. I would need to recreate the Restriction at each.

No you wouldn't. Using "Person" in the LHS is optional. You can use Thing, or any common subsumer of all the places where it is used.
 
The former would work, but I was wondering if there was something that could just be asserted about the property. Take for analogy the range of a property. At the level of a property, independent of where it is used, I can assert a domain:

fma:regional_part rdfs:domain fma:Anatomical_entity

I don't think this is a good idea. Why not use a generic parthood relation and constrain at a higher level?

You can always have GCIs like: the only things that are part of fma anatomical entities are fma anatomical entities

This violates your desire to have everything "asserted about the property", but I think you're thinking too Frame-y
 
but I can refine this at the level of a particular class

fma:Organ rdfs:subClassOf (fma:regional_part all fma:Organ_part)

?

I think you mean "has regional part" here
 
 
Now, perhaps I could have used a class in the first expression (much as you used owl:Thing in the pentathlon example):

owl:Thing rdfs:subClassOf (fma:regional_part all fma:Anatomical_entity)

This is wrong I'm afraid

Assuming all = allValuesFrom, this isn't correct, as given

Jupiter part_of Solar-system

You entail

Solar-system instance-of Anatomical_entity

Todd Detwiler

unread,
Jan 29, 2014, 7:24:39 PM1/29/14
to fma-ow...@googlegroups.com

On 1/29/14, 2:13 PM, Chris Mungall wrote:



I think you mean "has regional part" here

Yes, in the FMA it is just "regional part" which is the inverse of "regional part of".

 
 
Now, perhaps I could have used a class in the first expression (much as you used owl:Thing in the pentathlon example):

owl:Thing rdfs:subClassOf (fma:regional_part all fma:Anatomical_entity)

This is wrong I'm afraid

Assuming all = allValuesFrom, this isn't correct, as given

Jupiter part_of Solar-system

You entail

Solar-system instance-of Anatomical_entity

Yes I mean allValuesFrom (using Manchester syntax). I'm not defining regional part, I'm just using the definition that it currently has which states that its range is Anatomical entity (that isn't quite true, and it is not that simple, there are actually several classes in its range). Therefore, this is not the generic regional part that would pertain to solar system, but one that is specific to anatomy. Again, I'm not modeling it, just converting the model. So, for the sake of discussion let's call it antomical_regional_part. Then it would follow if you stated Jupiter anatomical_regional_part Solar_system that Solar-system instance-of Anatomical_entity. The conclusion is incorrect, but because the premise is incorrect.

In any case, I understand what you were saying.

-Todd

Chris Mungall

unread,
Jan 30, 2014, 1:54:03 AM1/30/14
to fma-ow...@googlegroups.com
On Wed, Jan 29, 2014 at 4:24 PM, Todd Detwiler <detw...@gmail.com> wrote:
On 1/29/14, 2:13 PM, Chris Mungall wrote:



I think you mean "has regional part" here

Yes, in the FMA it is just "regional part" which is the inverse of "regional part of".

Ah, I misread it. Using "regional part" as a relation label is prone to confusion, I recommend making the label explicit.
 

 
 
Now, perhaps I could have used a class in the first expression (much as you used owl:Thing in the pentathlon example):

owl:Thing rdfs:subClassOf (fma:regional_part all fma:Anatomical_entity)

This is wrong I'm afraid

Assuming all = allValuesFrom, this isn't correct, as given

Jupiter part_of Solar-system

You entail

Solar-system instance-of Anatomical_entity

Yes I mean allValuesFrom (using Manchester syntax). I'm not defining regional part, I'm just using the definition that it currently has which states that its range is Anatomical entity (that isn't quite true, and it is not that simple, there are actually several classes in its range). Therefore, this is not the generic regional part that would pertain to solar system, but one that is specific to anatomy. Again, I'm not modeling it, just converting the model. So, for the sake of discussion let's call it antomical_regional_part. Then it would follow if you stated Jupiter anatomical_regional_part Solar_system that Solar-system instance-of Anatomical_entity. The conclusion is incorrect, but because the premise is incorrect.

In any case, I understand what you were saying.

OK, if it's the anatomy-specific part-of relation it's best to explicitly label it as such. But I'm not sure why you wouldn't use the generic version.

I still think you would be best investing the time remodeling. I'm not suggesting redoing the ontology, just looking at every relation, figuring out what was intended, and encoding that in OWL.


Reply all
Reply to author
Forward
0 new messages