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

Re: use/mention and reification: rdf:predicate/subject/object [was: RDF Abstract Syntax...]

From: Dan Connolly <connolly@w3.org>
Date: Fri, 01 Jun 2001 14:15:40 -0500
Message-ID: <3B17E9DC.49D2A18C@w3.org>
To: Jonathan Borden <jborden@mediaone.net>, Drew McDermott <drew.mcdermott@yale.edu>, www-rdf-logic@w3.org, las@olin.edu, timbl@w3.org
Dan Connolly wrote:
[...]
> and rdf_Statement = KIF triple (i.e. list of length 3)
> and rdf_predicate = KIF first
> and rdf_subject = KIF second
> and rdf_object = KIF third
[...]
> and using wtr once more,
>         (not (color sky blue))
> QED.

So, Jos confirms (in his message of Sun, 27 May 2001 00:58:54 +0100)
that's the way he uses RDF reification;
Pat admits (Thu, 31 May 2001 11:05:44 -0500) it might make sense.
In sum, rdf_predicate can work like this:

	(rdf_predicate '(color sky blue) 'color)

Meanwhile, that doesn't match the RDF spec nor TimBL's cwm code; they
have what I regard as a use/mention bug; they seem to say rdf_predicate
works like this:
	(rdf_predicate '(color sky blue) color)


TimBL keeps suggesting we can fix this by defining
RDF reification with one level of indirection, ala...

  (<=> (rdf_type ?x rdf_Statement) (triple ?x)) ; (i.e. list of length
3, as before)

  (<=> (rdf_predicate ?x ?t) (= ?t (denotation (first ?x))))
  (<=> (rdf_subject ?x ?t) (= ?t (denotation (second ?x))))
  (<=> (rdf_object ?x ?t) (= ?t (denotation (third ?x))))

That makes a certain amount of sense, but it implies the
unique names assumption; at least if you take as
an axiom, as I do, that reification is unique; i.e.

  (forall (?st1 ?st2 ?p ?s ?o)
    (=> (and
	 (rdf_type ?st1 rdf_Statement)
	 (rdf_predicate ?st1 ?p)
	 (rdf_subject ?st1 ?s)
	 (rdf_object ?st1 ?o)

	 (rdf_type ?st2 rdf_Statement)
	 (rdf_predicate ?st2 ?p)
	 (rdf_subject ?st2 ?s)
	 (rdf_object ?st2 ?o) )
	(= ?st1 ?st2)) )

consider terms Car and Automobile where (= Car Automobile), and
let's look at the two statements ?ex1 and ?ex2:

  (= ?ex1 '(rdf_type c1 Car))
  (= ?ex2 '(rdf_type c1 Automobile))

their subjects, predicates, and objects are identical,
so we can conclude, by the uniqueness of reification above,
that (= ?ex1 ?ex2). But then it must follow that
(= (third ?ex1)  (third ?ex2))
i.e. (= 'Car 'Automobile) which is false. So we can't
use different (logical constant) names for the same
thing.

So... I'm still looking for a rational explanation
of rdf predicate/subject/object in their present
form. There's a possible-worlds angle on it that
I'm noodling on...

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Friday, 1 June 2001 15:15:53 GMT

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