- From: Graham Klyne <Graham.Klyne@Baltimore.com>
- Date: Thu, 28 Jun 2001 17:56:34 +0100
- To: pat hayes <phayes@ai.uwf.edu>
- Cc: w3c-rdfcore-wg@w3.org
At 10:51 AM 6/28/01 -0500, pat hayes wrote:
>Yes, and I was here assuming that the inner triples in the reification
>were intended to be RDF. I still think they should be, but lets go along
>with your idea for now.
Thanks... this is intended as an exploration of an idea, not a proposal.
>>I now see that my use of the notation (p s o) was wrong.
>>
>>I was intending to use (p s o) as a function application in this
>>case. Thus, I was trying to say something like:
>>
>> I(" id rdf:type rdf:Statement .
>> id rdf:predicate p .
>> id rdf:subject s .
>> id rdf:object o . " )
>>
>> = (= id (I("p") I("s") I("o"))) [NOTE1] [NOTE2]
>>
>>where I("p"), I("s") and I("o") are provided by some other part of the
>>interpretation, and I("p") is a binary predicate. In words, the
>>quadruple above means that the symbol "id" is bound to some binary
>>predicate associated with "p" applied to argument values associated with
>>"s" and "o" respectively.
>
>OK, but what does that mean? In normal logic, the result of applying a
>binary predicate to two arguments is a truthvalue (T if the pair of
>arguments is in the extension of the relation, F otherwise.) So do you
>mean here to identify id with a truthvalue? (I doubt it :-)
Yes, that was what I intended... "id" is identified with the truthvalue
obtained by evaluating (I("p") I("s") I("o")). ...
> Or do you mean to say that id is the sentence? Or do you mean something
> else, like a proposition? (Exactly what a proposition is, is debateable,
> but one widely used notion is that it is a function from possible worlds
> to truthvalues.) The only thing that actually has the *syntax* still
> intact is the sentence (in one form or another: we could quibble about
> whether a sentence is a string or a set of triples or whatever, but let's
> not.) It's just like a function call in a programming language: once you
> actually evaluate the thing, all you have is the value. If you want to
> keep the code around, then you'd better not call it.
... but this is interesting. If the original "s" and "o" are constants
then I don't think anything is gained by preserving information about the
structure of the expression. But if they are variables (i.e. their
denotation is not defined by the Interpretation alone) then I suppose the
interpretation has to take this into account.
(This takes me back into the part of model theory that I'm struggling to
fully comprehend. The pieces make sense, but I fail to quite grasp how
they all work together.)
The closest I can come at this time is that the interpretation (I("p")
I("s") I("o")) is not so much a truth value as a "recipe" for obtaining a
truth value, which may depend on a variable substitution function. Let D
be the domain of interpretation, then:
I("p") : D -> ( D -> TruthValue )
I("s") : D
I("o") : D
If "s" is a constant, then I("s") is a value defined directly by the domain.
If "s" is a (free) variable, then I("s") is a value defined by some
variable subtitition, say V("s"). Then, given some variable substitution
function V, (I("p") I("s") I("o")) evaluates as a TruthValue. Similarly
for "o".
The Scott/Strachey approach to programming language semantics uses
something like this:
I("s") : N+D
I("o") : N+D
I("p") : D -> ( D -> ( V -> TruthValue ) )
{ so (I("p") Vsub) yields a TruthValue, for any variable
substitution Vsub }
where:
D is the domain of interpretation
N is a domain of variable names
V : N+D -> D is a domain of variable substitutions
Then:
I(" id rdf:type rdf:Statement .
id rdf:predicate p .
id rdf:subject s .
id rdf:object o . " )
= (= I("id") ((lambda (v)) (I("p") (v I("s")) (v I("o")))))
Now, the interpretation of "id" is bound to a function from a variable
substition to a TruthValue:
I("id") : V -> TruthValue
>>[NOTE1] I'm assuming here that I("id") = id -- that identifiers in the
>>language represent the same identifier in the domain of interpretation --
>>is this valid?
>
>Well, we can define I in any way we like; but this is, shall we say, unusual.
OK, probably a bad idea.
>>Then using your definition (lambda (x y)(if x then T else y)) for 'or',
>>and 'id' as above:
>>
>> (or id id) = (or (I("p") I("s") I("o")) (I("p") I("s") I("o")) )
>> ((lambda (x y)(if x then T else y))
>> (I("p") I("s") I("o"))
>> (I("p") I("s") I("o")))
>> ... etc.
>
>You stopped just when it was getting interesting. Now evaluate that
>lambda-expression. You bind x and y both to (I("p") I("s") I("o")), then
>you ask if x, ie (I("p") I("s") I("o")), is true. Well, is it? If that
>denotes a truthvalue the question at least makes sense, but what if it
>does not?
Before I introduced variable substitutions, I think this would have worked
just fine, as a truthvalue was intended. Now I think I'd need to define an
alternative version of "or" here that accepts and applies the variable
subsitution:
(lambda (x y)
(lambda (v) (if (v x) then T else (v y))))
#g
------------------------------------------------------------
Graham Klyne Baltimore Technologies
Strategic Research Content Security Group
<Graham.Klyne@Baltimore.com> <http://www.mimesweeper.com>
<http://www.baltimore.com>
------------------------------------------------------------
Received on Thursday, 28 June 2001 13:23:38 UTC