W3C home > Mailing lists > Public > w3c-rdfcore-wg@w3.org > March 2003

williams-01, proposal

From: Graham Klyne <gk@ninebynine.org>
Date: Tue, 11 Mar 2003 13:11:55 +0000
Message-Id: <>
To: RDF core WG <w3c-rdfcore-wg@w3.org>

Stuart's comment (2) in:


revisits the question of whether URIs *label* graph nodes, or *are* graph 

(For the record, Jeremy responds:

I propose that this issue is addressed by following the terminological 
approach suggested by Pat in another message:

in which, by defining the graph to be the set of triples, it is much more 
intuitive to assert that URIs, literals and bnodes *are* the subject, 
predicate, object values that one finds in the RDF graph.  I think some 
clever scribing may be required to clearly convey the identity of bnodes 
without getting tangled with labels for talking about bnodes. [**]


[**] Here's an attempt, based on Pat's words, provided for the purpose of 
having something concrete to lob bricks at.

An RDF _graph_ is a set of _triples_.

A _triple_ is a 3-tuple which is made up of a subject, predicate
and object, which are respectively a _uriref_ or _bnode_; _uriref_; _uriref_,
_bnode_ or _literal_.

a _uriref_ is a sequence of Unicode characters that, when converted to a 
URI-character-sequence, conforms to the syntax for an absolute URI with an 
optional fragment identifier [RFC2396].

a _bnode_ is an arbitrary member of some set of bnodes.  A bnode has no 
discernable structure other than, given two bnodes, it is possible to 
determine whether or not they are the same.  (For the purpose of 
representing RDF graphs as text, bnodes may be assigned arbitrary labels so 
that different bnodes may be distinguished;  such labels are simply a means 
of representation and are not part of any RDF graph in which the bnode 

a _literal_ is ...?
    [[[A problem:  I think we've skirted this before.
       How does one distinguish *in the abstract graph* between
       a sequence of characters that is a URIref and
       a sequence of characters that is a plain literal?
       If all literals are typed, including plain literals,
       then I think we can say:

a _literal_ is a pair made up of a literal datatype and lexical value, 
which are respectively a _uriref_ and either a _simple lexical value_  or a 
_language-tagged lexical value_.

a _simple lexical value_ is a sequence of characters.

a _language-tagged lexical value_ is a pair made up of a language tag 
[RFC3066] and a _simple lexical value_.

[Later, I think this has some overlap with danc-01/danc-02]

Looking at DanC's Larch:

     % REVIEW: 6.5 needs to say the datatype URI and lang tags are optional
     Literal tuple of
       lexical_form: UnicodeStringInNormalFormC, % TODO: factor out charmod 
       lang: Opt[Language_Identifier], % RFC 3066
       dt: Opt[URI_reference]
-- http://www.w3.org/XML/9711theory/RDFAbSyn.lsl

Does this mean that a literal is always a triple, with "null" members, or 
that it is a 1-tuple, 2-tuple or 3-tuple.  Hmmm, can't be that latter, 
since (lexical,lang) and (lexical,dt) would be confused.  So what goes into 
the literal tuple when an optional value is absent?

However it works, this seems to address the problem noted above.


Graham Klyne
PGP: 0FAA 69FF C083 000B A2E9  A131 01B9 1C7A DBCA CB5E
Received on Tuesday, 11 March 2003 09:07:41 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 20:24:21 UTC