- From: Dan Connolly <connolly@w3.org>
- Date: Fri, 25 May 2001 14:50:55 -0500
- To: Jan Grant <Jan.Grant@bristol.ac.uk>
- CC: RDFCore Working Group <w3c-rdfcore-wg@w3.org>
Jan Grant wrote:
[...]
> A triple is represented as:
>
> triple(S, P, O)
I have a certain investment in
S P O.
The SWAP code (cwm, notation3) groks that format.
http://www.w3.org/2000/10/swap/
> where S, P, O are any of:
>
> r("URI")
There's precedent for <URI> in RFC2396; e.g.
In many cases, different URI strings may actually identify the
identical resource. For example, the host names used in URL are
actually case insensitive, and the URL <http://www.XEROX.com> is
equivalent to <http://www.xerox.com>.
-- http://www.ietf.org/rfc/rfc2396.txt
> a("ID")
The swap/cwm/n3 stuff doesn't have a syntax for this;
we've considered ?ID; I'd be willing to add code
for that.
> l("literal")
How about just "literal"? There are a host of
quoting and unicode issues; swap/cwmp/n3 follows
python currently; I wonder how different it is
from the string literal formats in Java; I'd
be willing to go with that.
3.10.5 String Literals
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#101083
(does ANSI-C have a unicode-capable string
literal syntax? how about perl?)
Of course, any decision on how to represent
literals in expected results is also a decision
to a whole pile of actual RDF issues: xml:lang, etc.
> (with the usual rules about placement of literals). r("URI") is a normal
> resource. l("literal") is a literal; a("ID") is an anonymous resource,
> which I think (with an eye on the future) that we ought to make
> explicitly different from r("#genid").
Yes, it must be different. TimBL provided me with some convincing
examples... I should find those and/or write them up...
> Something conforms wrt the test case iff it interprets the RDF as
> producing* a set of triples identical with the sample output, up to
> reordering and the global renaming of anonymous resources.
Right.
It's too bad there's no way to reduce that to some sort/diff
thingy, but there just isn't. It's inherently a graph-matching
thing.
We've been coding it up, but I'm not sure it's debugged.
(see the includes built-in stuff
http://dev.w3.org/cvsweb/2000/10/swap/test/includes/t6.n3?rev=1.2&content-type=text/x-cvsweb-markup
)
Would an implementation in prolog fit on the front side
of one page?
> Re: anon resources - two elements a(X) and a(Y) should be considered to
> represent "the same anon resource" iff X=Y (lexically)
that's if X=Y, not iff.
If X<>Y, they could still represent the same resource.
Yes, they're still distinct terms, which is the relevant
point for this excersise, but to persue the diversion,
consider:
<mailto:connolly@w3.org> <http://example/vocab#ownedBy> ?x1.
<mailto:connolly@w3.org> <http://example/vocab#ownedBy> ?x2.
If ownedBy is functional/unique/many-to-one, then ?x1 and
?x2 represent/denote the same resource/object/thing.
> - and the scope
> of the identity of an anon resource is the single test output
> attachment.
>
> Clear as mud of course - any real objections?
No real objections.... I'm just exploring alternatives
that are grounded in running code...
And actually, now that I think about this a("ID") vs ?id
stuff... we could actually use KIF syntax:
(exists (?x1)
(mailto\:connolly\@w3\.org http\:\/\/example/vocab\#ownedBy ?x1)
)
I wrote a KIF parser a while ago...
http://www.w3.org/2000/10/n3/KIFSyntax.py
that code is pretty ugly; but it does
have the relevant reference:
[KIF]
Knowledge Interchange Format draft proposed American National
Standard (dpANS)
NCITS.T2/98-004
Last Modified: Thursday, 25-Jun-98 22:31:37 GMT
http://logic.stanford.edu/kif/dpans.html
There are other dialects of KIF; my notes on ANSI KIF
and KIF v3 are in
KIF as an RDF Schema (in progress Aug 2000)
http://www.w3.org/2000/07/hs78/KIF
There are a few nitty gritty issues... some versions
of KIF are case-insensitive, and they don't grok
Unicode. I gather from Pay Hayes that those are
being fixed, and we could anticipate those fixes.
And while I'm on that train of thought, I could
go with your triple(P, S, O) format, provided
the details are consistent with real prolog
implementations. Open source, easy-to-install-and-use
implementations, like swi-prolog.
Oh! I would, of course, be remiss if I did not propose and
XML-based format. Perhaps we could implement
the compare-expected-results thingy in XSLT...
I was just playing around with Brian McBride's
executable grammar;
http://www.w3.org/2001/04rs22/spec.xsl
It produces:
<?xml version="1.0" encoding="utf-8"?>
<model>
<statement subjURI="http://example/someThing"
ns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" localname="type"
objURI="http://example/someClass"/>
</model>
I don't like the term 'model' any more. I think
what we've got here is abstract syntax. But
you get the idea.
(Brian: spec.xsl was missing a whole bunch
of <xsl:param/>s. Did it work without those
somehow for you? what XSLT processor did you use?)
--
Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Friday, 25 May 2001 15:51:03 UTC