Proposal: Revising RDF literals and rdf:value

A Proposal for Revising RDF Literals and rdf:value


The proposal to revise the RDF syntax, which I am outlining here, is 
somewhat fundamental.  In the current stage of the process of completing 
the RDF specification it is perhaps too late to apply such a large 
modification.  Nevertheless I would appreciate it if somebody from the RDF 
working group could comment on it.


1. Motivation

First I want to focus on two details of RDF which are syntactically 
independent, but are related by the fact that they provide solutions for 
similar problems: The rdf:value property and RDF literals.  Both are 
indented to relate a value-type pair of a property to a subject.  In the 
case of RDF literals the language identifier and the datatype URI can be 
seen as a shortcut for a dc:Language and a rdf:type relation between the 
lexical form and the language identifier or the datatype URI 
respectively.  In the case of rdf:value the [RDF Primer] specification says 
that it contains the "main value of a structured value" so one must refer 
to "additional properties to identify the classification scheme or other 
information that further describes the value". However it is also stated 
that "RDF does not associate any particular meaning with it. rdf:value is 
simply provided as a convenience for use in these commonly-occurring 
situations." ([RDF Primer], sec. 4.4).

Because of the lack of internal meaning of the rdf:value property, I am 
afraid that a wide use of it will diminish the RDF's ability to provide a 
framework for interoperability between graphs from different origins and 
thus threaten the goal of building up a meaningful global semantic web. 
Evidence for this fear is provided by what is said in [RDF Semantics], sec. 
3.2.4: "Since the range of possible uses for rdf:value is so wide, it is 
impossible to give a precise model-theoretic statement which covers all the 
intended meanings or use cases. Users are cautioned, therefore, that the 
use of rdf:value is somewhat risky, and that it should be treated as a 
'blank' piece of RDF syntax whose meaning in any particular case should be 
defined by the user, and may vary from application to application. In 
practice, the intended meaning is often clear from the context, but may be 
lost when graphs are merged or when conclusions are inferred."

As far as I can see there are two basic reasons why rdf:value cannot have a 
particular meaning: a) There is no syntactic means to tell which property 
or which properties are essential for the classification scheme, and b) 
there is also no semantic means which asserts that b.1) there exists a 
corresponding classification and b.2) the corresponding classification 
remains intact when merging graphs or inferring conclusions. -- Or in other 
words: RDF was designed to be very flexible so that statements could be 
added or removed from existing graphs to construct an open semantic 
web.  But sometimes a property of a subject is essential and is used, 
philosophically speaking, as a differentia specifica to identify the 
subject, so that it is not advisable to alter it or remove it from a graph.

The question is whether it is possible to fix this problem on the level of 
RDF syntax without introducing too complex rules.


2. Proposal

What I want to suggest is to modify the RDF syntax so that

  - RDF literals consist only of two components: a value and a data type,
  - the required data type of an RDF literal is always a URI reference, the 
optional value can be an RDF literal or a string,
  - RDF literals can appear as subjects, predicates or objects of a statement.
  - Ordinary RDF URI references used to characterize the subject, predicate 
or object of a triple are considered to be a special case of an RDF literal 
of the data type of the specified URI reference and an empty value (nil or 
null or an empty string).

In the following I will use the notation {<valueURI><dataTypeURI>} or 
{'valueString'<dataTypeURI>} to represent such an RDF literal.

As a consequence the mapping table for datatype mappings can be described 
in RDF itself.  This allows to provide additional information about the 
mapping elements, for example:

<myConcept:True> {<language:de><map:representedBy>} {'wahr'<xsd:string>} .
<myConcept:True> {<language:en><map:representedBy>} {'true'<xsd:string>} .
<myConcept:True> {<language:it><map:representedBy>} {'vero'<xsd:string>} .
<'true'<xsd:boolean> {<map:representedBy>} <myConcept:True>.

Since RDF literals fulfill exactly the requirement to provide a stable 
connection between a value and its type, at least one essential 
characteristic of a resource can be represented. This makes rdf:value 
superfluous; and since RDF literals can be the subject of a triple, 
language identificators can be deprecated too and replaced by an additional 
triple:

{xxx<rdf:XMLLiteral>} <dc:Language> <languageIdURI>

(xxx signifies a normalized XML document. It is of course possible to use 
the N-Triple notation of language strings from [RDF Test Cases] as a 
shortcut. Note also that language identificators are not essential in the 
sense introduced above, which is also acknowledged by [RDF Semantics], sec. 
4.3: "language tags play no role in the meaning of a typed literal".)


3. Example

Here is one more example how the proposed RDF Literal can be used to 
express facts about datatype-value pairs. Note that the value of an RDF 
Literal appearing as a predicate can be seen as an equivalent to an adverb 
in natural languages. So here is the example:

The claim that "100 Kg is very likely a heavy weight" can be expressed as:

{<numeral:100><myClass:Kg>} {<probability:90%><myRdfsClone:member>} 
{<fuzzy:heavy><myClass:Weight>} .
<probability:90%> <rdfs:member> {<numeral:.9><myClass:Probability>} .
{<numeral:.9><myClass:Probability>} <rdfs:member> 
{<fuzzy:high><myClass:Probability>} .

I do not claim that it is impossible to express this claim in ordinary RDF, 
but consider it being much more complicated, leaving the exercise to the 
reader ...


4. Semantics

It is possible to map each instance of the proposed RDF Literal into an 
ordinary URI reference by a standardized method (for example by using the 
above described notation, escaping any reserved characters and adding the 
prefix 'http://w3.org/').  So the proposed RDF Literal can be seen as a 
special notation for ordinary RDF URI references.  This shows that all the 
semantics for RDF and RDFS, corresponding entailments and inference rules 
as described in [RDF Semantics] are remaining valid.  (Special inference 
rules, etc. for the proposed RDF Literals might of course be added.)


5. Restrictions

The proposed syntax allows the declaration of not more than one essential 
property.  For some use cases it may be necessary to have more than one 
essential property available.  For this purpose the proposed syntax for RDF 
Literals could be extended by allowing an infinite number of data 
types.  Whether and how this should be done is a subsequent question which 
needs only to be discussed if my proposal finds some support at all.


Dieter Köhler

Institute of Philosophy and
Center for Mulimedia Studies
University of Karlsruhe
Germany

Received on Saturday, 5 April 2003 10:21:39 UTC