Re: rdf:value history

A superb piece of historical scholarship.

I would just add my own experiences and memories, which start near the  
end of Dan's history. I was recruited by Brian McBride to be the tame  
semantics maven on the RDF WG, and my role for quite a while was  
restricted to asking the rest of the group what the various RDF  
constructions were supposed to mean, intuitively, so that I could try  
to reproduce this understanding in formal terms. In most cases this  
was fairly straightforward, although not all of the result was deemed  
worth making normative. But rdf:value was the breaking point. I was  
never able to get any kind of clear consensus about what rdf:value was  
supposed to mean. Several group members explicitly did not know what  
it meant, and those who did gave me at least three different versions  
of it, all already, apparently, in use, all of which were sharply  
incompatible with the others. It therefore has, normatively, no  
normative meaning in RDF. I have my own opinions about this situation,  
but anyone who has read my emails can probably guess what they are.

Pat Hayes

On Jul 6, 2010, at 8:16 AM, Dan Brickley wrote:

> (cc trimmed to semweb list)
> On Tue, Jul 6, 2010 at 1:34 PM, Nathan <> 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,
> )
> 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="" as="DC"?>
> <?namespace href="" as="RDF"?>
> <RDF:serialization>
>  <RDF:assertions href="">
>    <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,
> "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="" as="DC"?>
> <?xml:namespace name="" as="RDF"?>
> <?xml:namespace name=""   
> as="LOCAL"?>
>  <RDF:Description RDF:HREF="">
>    <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
> the vocab was
> unchanged, here is an example in which beliefs about statements are
> sketched:
> <rdf:RDF>
>    <rdf:Description>
>      <rdf:propObj resource="" />
>      <rdf:propName resource="" />
>      <rdf:value>Ora Lassila</rdf:value>
>      <rdf:instanceOf resource=" 
> " />
>      <BELIEF:BelievedBy>Ralph Swick</BELIEF:BelievedBy>
>    </rdf:Description>
>  </rdf:RDF>
> By October 1998, we
> see rdf:value settling down into it's role as a utility construct for
> n-ary structures:
> <RDF
>    xmlns=""
>    xmlns:dc=""
>    xmlns:l="">
>    <Description about="">
>      <dc:Subject
>        rdf:value="020 - Library Science"
>        l:Classification="Dewey Decimal Code"/>
>    </Description>
>  </RDF>
> Also
>  <RDF
>    xmlns=""
>    xmlns:n="">
>    <Description about="John_Smith">
>      <n:weight>
>        <rdf:value>200</rdf:value>
>        <n:units rdf:resource=""/>
>      </n:weight>
>    </Description>
>  </RDF>
> And later
>    <rdf:Description about=" 
> ">
>      <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=" 
> "/>
>        <rdf:value>Amy Friedlander</rdf:value>
>      </dc:Contributor> [...]
>      <dc:Relation>
>        <dcq:RelationType
>          rdf:resource=" 
> "/>
>        <rdf:value resource=""/>
>      </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=""
>    xmlns:a="">
>    <rdf:Description>
>      <rdf:subject resource="" />
>      <rdf:predicate resource=" 
> schema#Creator" />
>      <rdf:object>Ora Lassila</rdf:object>
>      <rdf:type resource=" 
> 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.
> didn't
> have many changes from the above.
> neither ...
> This was pretty much how things were until the 1999 spec became a W3C
> recommendation in February:
> 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',
> (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.
>  ... 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
> """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,
> This RDFCore WG decision is what led to the rdf:value property being
> described in the RDFS spec, see
> "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 has kept track of the changing doc at the
> main RDF namespace,
> ns
> (this is also anyway in W3C CVS)
> This confirms that the 1999 RDF/XML at the namespace does describe
> rdf:value approximately ok,
> <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
> <rdf:Property rdf:about=" 
> ">
>  <rdfs:isDefinedBy rdf:resource=" 
> "/>
>  <rdfs:label>value</rdfs:label>
>  <rdfs:comment>Idiomatic property used for structured values.</ 
> rdfs:comment>
>  <rdfs:domain rdf:resource=" 
> "/>
>  <rdfs:range rdf: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
> 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 ... and
> for more recent work, all the RDF Core WG activities are recorded in
> public, see and nearby.
> Hope this helps someone someday ;)
> cheers,
> Dan

IHMC                                     (850)434 8903 or (650)494 3973
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile

Received on Tuesday, 6 July 2010 20:26:30 UTC