W3C home > Mailing lists > Public > semantic-web@w3.org > July 2010

rdf:value history

From: Dan Brickley <danbri@danbri.org>
Date: Tue, 6 Jul 2010 15:16:03 +0200
Message-ID: <AANLkTikBekcCxaZpSFQHmmr_aHzftHZI_4YhAkZr0wWT@mail.gmail.com>
To: nathan@webr3.org, Semantic Web <semantic-web@w3.org>
(cc trimmed to semweb list)

On Tue, Jul 6, 2010 at 1:34 PM, Nathan <nathan@webr3.org> wrote:

> 1: is there and rdfs:value? (rdf:value)
>
> 2: I would *love* to see rdf:value with a usable tight definition that
> everybody can rely on

I don't think the history of rdf:value is well recorded. Let me try.
This is long but fairly comprehensive, covering the use and evolution
of RDF's 'value' property from Oct 1997 to the present (July 2010)
day. I don't offer any judgement on whether it is well defined, I just
want to get all the basic information in one place as a point of
reference for future working groups, or for other interested parties.

The rdf:value property was originally introduced by the RDF Model &
Syntax spec in Oct 1997 (first public Working Draft,
http://www.w3.org/TR/WD-rdf-syntax-971002/ )

The original Oct 97 spec defined these terms, for use with reification:

"There are three elements in P known as RDF:PropName, RDF:PropObj, and
RDF:PropValue."

At the same time, the spec tried to show how the 'value' notion from
RDF's reification construct could be used to carry information that
didn't fit well into binary relations. Here is the example, which btw
note uses pre-final XML constructs, plus different names for other
things. The notion that the value of an n-ary property was somehow
linked to RDF's reification vocabulary for describing the parts of a
statement survived for a few versions of the spec, but dropped away
before the first main RDF spec was frozen in Feb 1999.

<?namespace href="http://purl.org/DublinCore/RDFschema" as="DC"?>
<?namespace href="http://www.w3.org/schemas/rdf-schema" as="RDF"?>
<RDF:serialization>
  <RDF:assertions href="http://www.webnuts.net/Jan97.html">
    <DC:subject>
      <RDF:resource id="subject_001">
        <DC:scheme>Dewey Decimal Code</DC:scheme>
        <DC:lang>English</DC:lang>
        <RDF:PropValue>020 - Library Science</RDF:PropValue>
      </RDF:resource>
    </DC:subject>
  </RDF:assertions>
</RDF:serialization>

This is the origin of rdf:value as 'rdf:PropValue'). The
<RDF:serialization> markup became <rdf:RDF> later, and
<RDF:assertions> became <rdf:Description>, along with a few other
syntax changes.

By Feb 1998, there was a renaming, but still 'value' was part of the
reification machinery,

http://www.w3.org/TR/1998/WD-rdf-syntax-19980216/

"The reification of an element t of Triples is an element n of Nodes
representing the reified t and the elements t1, t2, t3, and t4 of
Triples where:
the first item of t1 is RDF:PropName, the second item is n, and the
third item is the first item of t,
the first item of t2 is RDF:PropObj, the second item is n, and the
third item is the second item of t,
the first item of t3 is RDF:Value, the second item is n, and the third
item is the third item of t,
the first item of t4 is RDF:InstanceOf, the second item is n, and the
third item is RDF:Property."

(rdf:instanceOf later became 'rdf:type' btw)

And in parallel the n-ary example began to take more modern form:

<?xml:namespace name="http://purl.org/metadata/dublin_core#" as="DC"?>
<?xml:namespace name="http://www.w3.org/TR/WD-rdf-syntax#" as="RDF"?>
<?xml:namespace name="http://mycorp.com/schemas/my-schema#"  as="LOCAL"?>
<RDF:RDF>
  <RDF:Description RDF:HREF="http://www.webnuts.net/Jan97.html">
    <DC:Subject>
      <RDF:Description ID="subject_001">
        <LOCAL:Classification>Dewey Decimal Code</LOCAL:Classification>
        <RDF:Value>020 - Library Science</RDF:Value>
      </RDF:Description>
    </DC:Subject>
  </RDF:Description>
</RDF:RDF>

So at that stage, reification was achieved by asserting something to
be an instance of type rdf:Property, and using rdf:propObj,
rdf:propName, and rdf:value properties to describe its parts.

In the July 1998 draft
http://www.w3.org/TR/1998/WD-rdf-syntax-19980720/ the vocab was
unchanged, here is an example in which beliefs about statements are
sketched:

 <rdf:RDF>
    <rdf:Description>
      <rdf:propObj resource="http://www.w3.org/Home/Lassila" />
      <rdf:propName resource="http://description.org/schema#Creator" />
      <rdf:value>Ora Lassila</rdf:value>
      <rdf:instanceOf resource="http://www.w3.org/TR/WD-rdf-syntax#Property" />
      <BELIEF:BelievedBy>Ralph Swick</BELIEF:BelievedBy>
    </rdf:Description>
  </rdf:RDF>


By October 1998, http://www.w3.org/TR/1998/WD-rdf-syntax-19981008/ we
see rdf:value settling down into it's role as a utility construct for
n-ary structures:

 <RDF
    xmlns="http://www.w3.org/TR/WD-rdf-syntax#"
    xmlns:dc="http://purl.org/metadata/dublin_core#"
    xmlns:l="http://mycorp.com/schemas/my-schema#">
    <Description about="http://www.webnuts.net/Jan97.html">
      <dc:Subject
        rdf:value="020 - Library Science"
        l:Classification="Dewey Decimal Code"/>
    </Description>
  </RDF>

Also

  <RDF
    xmlns="http://www.w3.org/TR/WD-rdf-syntax#"
    xmlns:n="http://www.nist.gov/units/">
    <Description about="John_Smith">
      <n:weight>
        <rdf:value>200</rdf:value>
        <n:units rdf:resource="http://www.nist.gov/units/Pounds"/>
      </n:weight>
    </Description>
  </RDF>

And later

    <rdf:Description about="http://www.dlib.org/dlib/may98/05contents.html">
      <dc:Title>DLIB Magazine - The Magazine for Digital Library Research
        - May 1998</dc:Title>
      <dc:Description>D-LIB magazine is a monthly compilation of
       contributed stories, commentary, and briefings.</dc:Description>
      <dc:Contributor>
        <dcq:AgentType
          rdf:resource="http://purl.org/metadata/dublin_core_qualifiers#Editor"/>
        <rdf:value>Amy Friedlander</rdf:value>
      </dc:Contributor> [...]
      <dc:Relation>
        <dcq:RelationType
          rdf:resource="http://purl.org/metadata/dublin_core_qualifiers#IsPartOf"/>
        <rdf:value resource="http://www.dlib.org"/>
      </dc:Relation> [...] etc

Note that it takes in these examples both URI and string values. This
revision also noted some terminology changes,

"Several pieces of basic vocabulary have been changed to clarify
terminology. Of particular note in this regard is the term property
which previously meant the combination of three things; a resource
identifier, an attribute (formally called a PropertyType in the
previous draft), and the value of that attribute for that resource.
Now this combination is formally called a statement and the old term
PropertyType is shortened to just Property. This usage of "property"
conforms more closely to common usage."

The new and more restricted use of rdf:value is also noted,

"A second piece of terminology that now has a different usage is the
value property. The value property is no longer used when reifying
statements, but is reserved as a 'convenience' property needed by many
schemas. See Section 2.3."

That section 2.3 is short so I'll reproduce it here:

"2.3. Qualified Property Values

Often the value of a property is something that has additional
contextual information that is considered "part of" that value. In
other words, there is a need to qualify property values. Examples of
such qualification include naming a unit of measure, a particular
restricted vocabulary, or some other annotation. For some uses it is
appropriate to use the property value without the qualifiers. For
example, in the statement "the price of that pencil is 75 U.S. cents"
it is often sufficient to say simply "the price of that pencil is 75".

In the RDF model a qualified property value is simply another instance
of a structured value. The object of the original statement is this
structured value and the qualifiers are further properties of this
common resource. The principal value being qualified is given as the
value of the value property of this common resource. See Section 7.3.
Non-Binary Relations for an example of the use of the value property."

This version of the spec also introduced rdf:predicate, rdf:subject
and rdf:object alongside rdf:Statement as the renamed reification
vocabulary,

  <rdf:RDF
    xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
    xmlns:a="http://description.org/schema/">
    <rdf:Description>
      <rdf:subject resource="http://www.w3.org/Home/Lassila" />
      <rdf:predicate resource="http://description.org/schema#Creator" />
      <rdf:object>Ora Lassila</rdf:object>
      <rdf:type resource="http://www.w3.org/TR/WD-rdf-syntax#Statement" />
      <a:attributedTo>Ralph Swick</a:attributedTo>
    </rdf:Description>
  </rdf:RDF>

As all this was happening, I forget what we had in terms of the
RDF/XML description at the namespace URI. Probably just a link to the
spec, since it was in /TR/ .... however at some point the
documentation of rdf:value seemed to slip a bit. It was in there in
the examples, and mentioned in passing, but never clearly defined.

http://www.w3.org/RDF/Group/1998/12/WD-rdf-syntax-19981216/ didn't
have many changes from the above.
http://www.w3.org/TR/1999/PR-rdf-syntax-19990105/ neither ...

This was pretty much how things were until the 1999 spec became a W3C
recommendation in February:

http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/

At this point in history, RDF entered a year or two of awkward
standards limbo. The RDFS WG and Metadata Activity charter expired,
and tensions between the RDF and XML work let to everything slowing
down until W3C assembled enough support (internally within the W3C and
XML community; and externally in terms of DARPA funding for the first
SWAD project) to continue things as the new Semantic Web activity. If
you're interested in digging around the history, a key document from
that era is the 'Cambridge Communique',
http://www.w3.org/TR/schema-arch (a live-and-let-live agreement that
XML won't replace RDF and vice versa).

This was btw also when mega-threads about the difficulty of
using/promoting RDF started to appear, eg.
http://lists.w3.org/Archives/Public/www-rdf-interest/2000Feb/  ... and
in February we started the RDF IssueTracker page to reflect growing
implementation experience with the technology; this also led to Brian
Mcbride taking on a heroic lead-co-chair role in RDFCore and getting
some of those many bugs from RDF'99 fixed. Thanks Brian! :)

Here is the issue tracker entry for rdf:value, via Dan Connolly

http://www.w3.org/2000/03/rdf-tracking/#rdfms-replace-value

"""Issue rdfms-replace-value: Suggestion that the rdf:value property
be replaced by rdf:toString.

Raised Sat, 17 Feb 2001 by Dan Connolly

Summary: The property rdf:value is used confusingly and inconsistently
throughout the M&S and is never defined. Some have suggested it is
used for multi-valued properties (some suggest currying is a better
way to do this) and others have claimed it is for defining the lexical
representation of a resource. It is requested that the Working Group
clarify its meaning and usage.

Resolution: This issue was discussed by the RDFCore WG on 11 January
2002 which resolved:

o resolves to not change the name of this property at this time on the grounds:

- insufficient reasons to make this change

- will cause existing uses to be illegal - such as examples in m&s

o resolves to recast this issue as a need to clarify the semantics of rdf:value.

At the February 2002 face to face meeting, the RDFCore WG resolved:

that rdf:value is a property defined in the RDF namespace
that the model theory state that rdf:value is a property
that no other model theory semantics is defined specifically for it
the issue be closed.
Currently: Closed (response)"""

The decision record and response are here,
http://lists.w3.org/Archives/Public/www-rdf-comments/2002JanMar/0186.html


This RDFCore WG decision is what led to the rdf:value property being
described in the RDFS spec, see
http://www.w3.org/TR/rdf-schema/#ch_value

"5.4.3 rdf:value

rdf:value is an instance of rdf:Property that may be used in
describing structured values.

rdf:value has no meaning on its own. It is provided as a piece of
vocabulary that may be used in idioms such as illustrated in example
16 of the RDF primer [RDF-PRIMER]. Despite the lack of formal
specification of the meaning of this property, there is value in
defining it to encourage the use of a common idiom in examples of this
kind.

The rdfs:domain of rdf:value is rdfs:Resource. The rdfs:range of
rdf:value is rdfs:Resource."


Meanwhile, what was the machine readable definition saying?

It seems like archive.org has kept track of the changing doc at the
main RDF namespace,

http://web.archive.org/web/*/http://www.w3.org/1999/02/22-rdf-syntax-ns
(this is also anyway in W3C CVS)

This confirms that the 1999 RDF/XML at the namespace does describe
rdf:value approximately ok,
http://web.archive.org/web/19990508090931/http://www.w3.org/1999/02/22-rdf-syntax-ns

<Property ID="value"
  s:comment="Identifies the principal value (usually a string) of a
property when the property value is a structured resource" />

By end of 2004 (ie. after the RDFCore 2nd phase of RECs) we have
http://web.archive.org/web/20041215093652/http://www.w3.org/1999/02/22-rdf-syntax-ns

<rdf:Property rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#value">
  <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
  <rdfs:label>value</rdfs:label>
  <rdfs:comment>Idiomatic property used for structured values.</rdfs:comment>
  <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
  <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
</rdf:Property>

It's also worth mentioning that the rdf:value idioms discussed above
did have significant usage in the wider community; for example in the
earlier (now superceded) Dublin Core in RDF work, see
http://dublincore.org/documents/dcq-rdf-xml/

This is about as comprehensive a backgrounder on rdf:value as I can
manage. Those with W3C Member access and time to burn can dig through
the original WG records at http://www.w3.org/RDF/Group/Syntax/ ... and
for more recent work, all the RDF Core WG activities are recorded in
public, see http://www.w3.org/2001/sw/RDFCore/ and nearby.

Hope this helps someone someday ;)

cheers,

Dan
Received on Tuesday, 6 July 2010 13:16:33 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:37 GMT