W3C home > Mailing lists > Public > www-rdf-logic@w3.org > March 2001

function terms in Euler, n3, and RDF [was: gedcom-relation example]

From: Dan Connolly <connolly@w3.org>
Date: Sun, 4 Mar 2001 18:18:43 -0600
Message-ID: <009601c0a509$dc393800$a345fea9@jammer>
To: <jos.deroo.jd@belgium.agfa.com>, <mdean@bbn.com>
Cc: <www-rdf-logic@w3.org>, <boley@informatik.uni-kl.de>
> We have been playing a bit with your GEDCOM example.
> We actually rewrote it in N3 and the relations are at
> http://www.agfa.com/w3c/euler/gedcom-relations.n3

The gedcom example got me looking around the Euler
stuff again, and it reminded me of something I find odd there...
the use of statements that seem to "return" values, ala
functional terms; e.g.

| {<#x> :in {<#x> :list <#b>}} log:forAll <#b>, <#x>.
-- http://www.agfa.com/w3c/euler/lists.axiom.n3

It seems that {<#x> :list <#b>} is being used as a term, as if :list
is a 2-place function that returns a list. That doesn't really fit
in RDF does it? RDF only has predicates, not functions, no?

Ah... this is actually documented:

| Operations are described with {subject operator object} log:implies
result. statements.
| Operators are e:plus, e:minus, e:star, e:slash, e:lt, e:lte, e:gt, e:gte,
e:eq, and e:neq.
-- http://www.agfa.com/w3c/euler/

The lt, lte, gte, eq, and neq symbols fit; they're relations. But e:plus
plus, as a relation, is ternary: plus(4, 3, 7) meaning "7 is the sum of 4
and 3."
In playing around with n3, we came up with a couple idioms for this.

One is to encode "a sum of 4 and 3" as [a :Sum; :of 4; :and 3], combined
with knowledge that there is exactly one such sum. If you make the domain
of :of and :and be :Sum (aka :Integer) and recall that = denotes
you can write "the sum of 4 and 3 is 7" as
  [ :of 4; :and 3 ] = 7.

The other idiom is somewhat more traditional, making use of the list
syntax-sugar in n3, where (a b) denotes the same thing
as [ daml:first a; daml:rest [ daml:first b; daml:rest daml:nil ]].
Using that, we can write "the pair 3,4 has sum 7: as
  (3 4) :sum 7.

Oops... I've been using decimal numerals as terms, which isn't (yet?) part
of n3.
So that should actually be
  (i:_3 i:_4) :sum i:_7.
or some such.

McDermott's proposal a while ago had another approach to functional terms in
but it used more than syntactic sugar...

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

Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Sunday, 4 March 2001 19:24:02 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 2 March 2016 11:10:34 UTC