# Re: Understanding n-ary data predicates

From: Bijan Parsia <bparsia@cs.man.ac.uk>
Date: Tue, 6 May 2008 18:39:47 +0100
Message-Id: <AB3FDC10-09F0-43C3-9D9F-6D4F3068A307@cs.man.ac.uk>
To: OWL Working Group WG <public-owl-wg@w3.org>
```
On 6 May 2008, at 16:15, Michael Schneider wrote:

> Hi!
>
> I haven't attended the last telco, where n-ary predicates were
> discussed. I
> would like to catch up on this topic. However, from looking into
> the proposal
> [1], I do not even understand the basic idea. :-(
>
> The use-cases document [2] provides the following example:
>
>   "For humans, the systolic blood pressure is always
>   greater or equal than the diastolic blood pressure."
>
> I speculated that the idea was to have a new "GreaterOrEqual" property
> restriction, which is applied on two properties:
>
>   SubClassOf( Human
>               GreaterOrEqual(systolicBloodPressure
> diastolicBloodPressure) ))
>
> And the value ranges for these two properties can be specified by
> AllValues restrictions.
>
> But it doesn't look to me that the actual proposal follows this
> approach.

It's not too far off. The basic point is that we want to specify
arbitrary equations relating data values.  In this case where it's
just a comparison, it's easy:
DatarangeExpression(x y geq (x y))

(The first occurrences of x and y declare the variables; geq is a
builting comparison.)

Now you can use this in an existential or universal restriction:

AllValuesFrom( ex:hasSystolicBloodPressure
ex:hasDiastolicBloodPressure DatarangeExpression(x y geq (x y)))

(You can name expressions too.)

> So,
> can anyone please demonstrate the actual approach for the above
> "systolic/diastolic" example?

See above. Here's another:

"Body mass index: the body mass index (BMI) of a patient is defined
as 703 times weight in pounds divided by the square of the height in
inches. The BMI is (among many other things) taken into consideration
for insulin administration regimens. Similar to the examples above,
it is used to derive an envelope within which a standard regimen
should be."

DatarangeExpression(bmi weight height eq((times bmi (times height
height)) (times(703 weight)))

(since we don't have an explicit division, I had to mutliply both
sides by the square of the height the equation in infix is:
bmi*height^2 = 703*weight).

There's a passel of links to helpful literature at the bottom of the
page...no need to speculate! :)

Cheers,
Bijan.
```
Received on Tuesday, 6 May 2008 17:37:46 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:42:04 UTC