# Re: Strategies for inference over lists of values

From: Jos De_Roo <jos.deroo@agfa.com>
Date: Fri, 27 Feb 2004 20:33:55 +0100
To: "Graham Klyne <gk" <gk@ninebynine.org>
Cc: RDF interest group <www-rdf-interest@w3.org>, www-rdf-logic@w3.org
Message-ID: <OF245D3170.D492032F-ONC1256E47.0068DE03-C1256E47.006B7DB2@agfa.be>
```

Hi Graham,

For those 2 test cases we build an N3 theory like

{?W :hourlyTemperatures ?L.
?L :maxNumber ?N}
=> {?W :maxTemperature ?N}.

{?A rdf:first ?M;
rdf:rest rdf:nil}
=> {?A :maxNumber ?M}.

{?A rdf:first ?M;
rdf:rest ?B.
?B :maxNumber ?N.
?M math:greaterThan ?N}
=> {?A :maxNumber ?M}.

{?A rdf:first ?M;
rdf:rest ?B.
?B :maxNumber ?N.
?M math:notGreaterThan ?N}
=> {?A :maxNumber ?N}.

{?E :samples ?L.
?L :cumValue ?C;
:cumFreq ?D.
(?C ?D) math:integerQuotient ?M}
=> {?E :meanValue ?M}.

rdf:nil :cumValue "0"^^xsd:integer.

{?A rdf:first ?M;
rdf:rest ?B.
?M :value ?V;
:freq ?F.
?B :cumValue ?N.
((?V ?F).math:product ?N) math:sum ?C}
=> {?A :cumValue ?C}.

rdf:nil :cumFreq "0"^^xsd:integer.

{?A rdf:first ?M;
rdf:rest ?B.
?M :freq ?F.
?B :cumFreq ?N.
(?F ?N) math:sum ?C}
=> {?A :cumFreq ?C}.

_:W :maxTemperature _:M.
_:E :meanValue _:V.

to euler --nope we get

_:weatherToday_1 :maxTemperature "17"^^xsd:integer.
_:experiment_1 :meanValue 26.

So in summary we use N3 facts and implications (wich are recursive
as can be seen in the trace at
http://lists.w3.org/Archives/Public/www-archive/2004Feb/0075.html)

--
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

Graham Klyne
<gk@ninebynine.org>         To:       RDF interest group <www-rdf-interest@w3.org>, <www-rdf-logic@w3.org>
Sent by:                    cc:
www-rdf-interest-req        Subject:  Strategies for inference over lists of values
uest@w3.org

27/02/2004 18:42

Hi,

I'm wondering what strategies folks are using for inference over
collections (lists) of values in RDF (other than resorting to ad-hoc
code).  (Maybe also over containers, but the closure of lists makes the
problem easier to define.)

A simple example would be the selection of the maximum value from a list;
e.g.

given:

_:weatherToday
:hourlyTemperatures
( "10"^^xsd:integer "12"^^xsd:integer "15"^^xsd:integer
"16"^^xsd:integer "14"^^xsd:integer "17"^^xsd:integer
"13"^^xsd:integer "12"^^xsd:integer "10"^^xsd:integer
"9"^^xsd:integer  "7"^^xsd:integer  "6"^^xsd:integer ) .

how to deduce:

_:weatherToday
:maxTemperature "17"^^xsd:integer .

A more complex example might be the extraction of a mean value given a list

of sample values and observed frequencies:

_:experiment
:samples ( _:s1 _:s2 _:s3 _:s4 ) .
_:s1 :value "10"^^xsd:integer ;
:freq  "2"^^xsd:integer .
_:s2 :value "20"^^xsd:integer ;
:freq  "5"^^xsd:integer .
_:s3 :value "30"^^xsd:integer ;
:freq  "6"^^xsd:integer .
_:s4 :value "40"^^xsd:integer ;
:freq  "3"^^xsd:integer .

to deduce:

_:experiment
_meanValue "26"^^xsd:integer

This can be done by generating intermediate resources that relate to
accumulated values from the list, but this approach rapidly becomes very
ugly.  I have some half-baked ideas for a tidier approach, but was hoping
that someone might have a fully-baked solution.

#g

------------
Graham Klyne
For email:
http://www.ninebynine.org/#Contact
```
Received on Friday, 27 February 2004 14:33:57 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:04 GMT