- From: Dan Brickley <danbri@danbri.org>
- Date: Tue, 6 Jul 2010 15:16:03 +0200
- 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 UTC