- 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
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}.
and then giving that and your facts to and asking
_: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
with access to normal arithmetic functions.
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 UTC