Re: A couple of questions on OWL modeling

On Fri, Nov 22, 2013 at 5:23 AM, Andrea Splendiani <
andrea.splendiani@deri.org> wrote:
> Hi,
>
> I am building a "nutritional knowledge base" and I have stumbled about a
few things I would like to ask an opinion about, especially from the
OWL-savy people.
>
> The first question is: to model restrictions on the value of a datatype
property, is the only way to go for the definition of a corresponding
datatype ?
> For instance, if I have an hasProteinPercentage data property, and I want
to define the class of high-protein food, I can go by defining the
high-percentage data type and then basically: HighProteinFood
hasProteinPercentage --only-- high-percentage (Note that the -- --
indicates I'm putting placeholder syntax).

You can also use an anonymous datarange - you don't have to give it a name
if you don't want to. See
http://www.w3.org/TR/owl2-syntax/#Data_Ranges
http://www.w3.org/TR/owl2-syntax/#Data_Property_Range

>
> Another question. This is actually an interesting case (at least for me).
I have an individual (which is a real world individual, like a packaged
cheese I hold in my hand) whose ingredients are (example) "Salt", "Any fat
cheese".
> How would you model this ? Would you go for an anonymous individual ?
> Like in: myCheese hasIngredient -- anon -- of type Fat Cheese.

You don't have to create the individual if you don't want to. You can
either use an anonymous class expression

myCheese type (hasIngredient some Fat Cheese)

or name the type

'has fat cheese' equivalentTo: (hasIngredient some Fat Cheese)

then

myChess type 'has fat cheese'

> Finally, how would you model quantities of ingredients ?
> let's say that food x (normalized to 100g) contains 10g of salt.
> One option (the one I would prefer) is to have the food having an
"Component" kind of entity, and this "Component" being characterized by a
quantity and an substance (salt).
> Another option could be to have cardinalities restrictions (hasIngredient
exactly 10 salt). I have seen used this approach but I think it is not
appropriate. having 10g of salt is not the same has saying "ha person has
one and only one head". If it was 11g, it would not change the entity type,
really. Plus not all numbers are integer.

In OBI, where we've worked this out, there are two issues. The first is the
choice between having a part with a quality versus using cardinality
restrictions. We opted to use the former for cases like this because of the
issue of non-integer quantities. So we would say:

1. food1 hasPart 'cheese part 1'
2. 'cheese part 1' type 'cheese'
3. 'cheese part 1' 'has quality' 'mass of cheese part 1'

Then the question is how one adds the numerical information to 'mass of
cheese part 1'.

Since we make the ontological choice that no unit is preferred, among
others, we wrap the number in a 'mass measurement datum'. All 'scalar
measurements datum's have have three properties

- 'has measurement unit label' (range: unit, value: mass for 'mass
measurement datum')
- 'has measurement value' (range:float),
- 'is quality measurement of' (range:quality - specialized to 'mass
quality' for 'mass measurement datum')

So we would add:

4. 'cheese mass datum 1' type 'mass measurement datum'
5. 'cheese mass datum 1' 'has measurement value' "10.0"^^xsd::float
6. 'cheese mass datum 1' 'has measurement unit label' 'gram'
7. 'cheese mass datum 1' 'is quality measurement of ' 'mass of cheese part
1'

The representation takes a couple more triples than you might expect, but
has the benefit of allowing variations in the right places. It supports a
number of cases you might not otherwise think about - that measurements can
be other than scalar (e.g. vector velocity), that there might be more than
one measurement of the mass, that there might be different units used, that
measurements data in different units can be related to each other because
the measurement datum is reified.

While this amount of elaboration might be more than someone who only cares
about representing product labels for an internal project, for linked data
it has the benefit of not being to simple that scientific results be linked
to it. One of the member communities that participated in the development
of OBI represented the Nutrigenomics community.

References:

scalar measurement datum <http://purl.obolibrary.org/obo/IAO_0000032>
mass measurement datum <http://purl.obolibrary.org/obo/IAO_0000414>
has measurement unit label <http://purl.obolibrary.org/obo/IAO_0000039>
is quality measurement of <http://purl.obolibrary.org/obo/IAO_0000221>
has measurement value <http://purl.obolibrary.org/obo/IAO_0000004>
mass <http://purl.obolibrary.org/obo/PATO_0000125>
mass unit <http://purl.obolibrary.org/obo/UO_0000002>

Modeling biomedical experimental processes with
OBI<http://www.biomedcentral.com/content/pdf/2041-1480-1-S1-S7.pdf>
http://purl.obolibrary.org/obo/obi.owl
http://purl.obolibrary.org/obo/iao.owl
http://obi-ontology.org
http://obi-ontology.org/page/Consortium

Regards,
Alan

ps. have you always worn glasses?

>
> Any hints/opinions ?
>
> best,
> Andrea Splendiani
>
>
>

Received on Friday, 22 November 2013 15:39:32 UTC