- From: Dan Connolly <connolly@w3.org>
- Date: Fri, 01 Jun 2001 14:15:40 -0500
- 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 UTC