Re: Understanding n-ary data predicates

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  
> additional
> 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