Copyright © 2009 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
Many Semantic Web vocabularies (dictionaries of terms expressed using RDFS or OWL technology) evolve gradually, based on implementor feedback, deployment dynamics and a desire to start by solving small problems first. This Note describes and documents a basic vocabulary - initiated in the FOAF project - that was created to provide a way of annotating RDF terms (classes and properties) with simple information about their status.
This is a pre-draft from Dan Brickley, attempting to capture something of the thinking behind the vocab-status-ns work. Not yet reviewed by Leigh and Libby, and changing at random.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This W3C Interest Group Note was created to document a vocabulary that has been used for several years in documenting the status of RDF vocabulary terms.
The document was produced by participants of the W3C Semantic Web Interest Group part of the W3C Semantic Web Activity (see charter). Comments may be sent to the publicly archived firstname.lastname@example.org mailing list. While it does not represent the consensus of all members of the Interest Group, it does improve the documentation of a namespace used to annotate a very widely used vocabulary, ie. FOAF. As such it is offered here for wider discussion and potential improvements.
Publication as an Interest Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
The evolution of descriptive computer languages within the World-Wide Web is an ongoing challenge. W3C's RDF technology does not attempt to solve such problems, but it does present a distinctive environment for deploying descriptive vocabularies. This Note documents some specific documentation and versioning techniques originated in the Friend of a Friend (FOAF) project, and which have subsequently been adopted for other RDF/OWL vocabularies. The basic idea is that RDF vocabularies can be versioned "in-place", rather than moving to a new namespace URI every time a vocabulary is extended or improved, we can tag each term in the vocabulary with information indicating its status.
The earliest RDF representations of Dublin Core metadata embedded a version number in their URI: initially "1.0" (at http://purl.org/dc/elements/1.0/) and after some modest changes, "1.1" (at http://purl.org/dc/elements/1.1/). The earliest FOAF (originally as "RDFWebRing", and then "RDFWeb") experiments also included a version number "0.1" in the namespace URI - i.e. http://xmlns.com/foaf/0.1/ - where the low number was intended to indicate the tentative and exploratory nature of this early work. Other early RDF vocabularies including RSS 1.0 - at http://purl.org/rss/1.0/ - also adopted a similar approach to selecting namespace URIs. In each case, there are lessons to be learned from the approach taken to modularity and versioning.
The early RDF representations of Dublin Core, RSS 1.0 and FOAF all began by treating the entire vocabulary as the primary unit of versioning, and with a general assumption that any major changes would involve a wholesale move to a new namespace URI. With Dublin Core, this assumption was tested in practice: changes to some of the original definitions were considered at the time significant enough to justify moving to a new identifier for the entire set of terms. The awkward practicalities of migrating from DC "1.0" to "1.1" in a global, distributed and decentralised environment were one of the major considerations that led to the RDFWeb/FOAF adoption of 'in-place' updates. Unfortunately this was not fully appreciated at the time FOAF's original namespace URI was selected, and the vocabulary has retained the "0.1" version number in its URI ever since. RSS1, by contrast, has never evolved its RDF representation: the rss-dev group that produced it was effectively disbanded shortly afterwards, and the RSS syndication community remained divided between a non-RDF RSS 2.0, the subsequently-undeveloped RSS1 work and the IETF-standard Atom initiative. The RSS1 initial design however did emphasise a particular approach to modularity: that of using numerous namespaces together, rather than having a more monolithic approach in which a variety of problems are addressed through a single integrated vocabulary. The RSS 1.0 documents list over twenty proposed modules; in addition to the general background assumption that arbitrary RDF vocabularies could be mixed-in as necessary.
The earliest FOAF vocabulary was offered as a "utility vocabulary" within the RDFWeb project, and its documentation was heavily driven by implementation experiments. In fact many of the spelling and stylistic inconsistencies in the names for FOAF terms came from the habit of testing things in real published RDF/XML files before documenting them in the central specification. The FOAF spec was as a result always framed in the role of a dictionary, documenting the terms used in published FOAF files. The vocabulary defined here was designed to serve a practical need: that of documenting work-in-progress vocabulary without confusing users and implying stability merely by some term appearing in the FOAF spec.
The 'Vocabulary Status Vocabulary', as it is informally known, contained only three properties (from 2003-2009). And of these, only one was widely used: vs:term_status, vs:moreinfo, and vs:userdocs.
The main property, vs:termstatus takes simple string values. From 2003-2009 these were documented as being 'unstable', 'testing' and 'stable'. Values of 'deprecated' were also noted "in the wild". In 2009 the vocabulary documentation was updated to introduce a new value, 'archaic', and to indicate that the value space for the property is open-ended.
The vs:term_status property is designed to provide a simple, intuitive labelling of an RDF class or property into one of a few limited categories. As such it might more properly have been modelled using URI values rather than strings. The following definitions are ad-hoc, but should broadly correspond to their deployed usage.
The exact meaning of stable/unstable/testing/archaic will vary from project to project, since the maintainers of RDF vocabularies may have quite varied maintainance and vocabulary development models. Other annotations might capture more detail; these term_status values serve to give a general overview. The values described here have a bias towards their use with FOAF, but are also fairly general.
An unsorted collection of usage examples follow.
http://dbtune.org/onto/doc/event.rdf (defines vs:term_status as AnnotationProperty) http://uriplay.org/spec/ontology/latest.rdf http://motools.sourceforge.net/doc/last-fm.rdf http://digitalbazaar.com/media/video (in RDFa syntax) http://digitalbazaar.com/media http://digitalbazaar.com/commerce http://sw.deri.org/2005/08/conf/cfp.owl http://www.mindswap.org/2003/owl/foaf (OWLier version of FOAF?) http://vamp-plugins.org/rdf/ http://www.bbc.co.uk/ontologies/programmes/2008-02-28.rdf http://xam.de/ns/os/opensource.rdfs http://data.semanticweb.org/ns/swc/swc_2009-02-27.rdf (uses 'deprecated') http://scot-project.org/scot/ns http://xmlns.com/wot/0.1/index.rdf http://vocab.org/review/terms.rdf (actually has some 'stable'; pretty rare!) http://danja.talis.com/xmlns/rev_2007-11-09/review.rdf (related?) http://www.w3.org/ns/auth/rsa.rdf http://www.w3.org/ns/auth/cert.rdf http://motools.sourceforge.net/doc/audio_features.rdf http://www.foafrealm.org/xfoaf/0.1/index.rdf http://www.w3.org/2004/02/skos/extensions.rdf http://bibotools.googlecode.com/svn/bibo-ontology/tags/1.2/bibo.xml http://musicontology.com/musicontology.rdfs http://www.ldodds.com/schemas/book/ http://b4mad.net/ns/foaf-ext/index.rdf http://www.xs4all.nl/~foz/enclosures.rdf (also has 'deprecated') http://umbel.org/umbel/umbel.rdf (no content currently) http://projects.mi.fu-berlin.de/semweb/webrdf/ (server error) http://www.holygoat.co.uk/owl/redwood/0.1/tags/ http://www.madore.org/~david/meta.rdf http://schemacache.test.talis.com/Properties/.rdf (reminds me - can you get some stats from schemacache?) http://www.kanzaki.com/ns/dliser.rdf ('An OWL DLiser. Declarations of Classes and Properties that would be used in some ontologies for documentation purpose. With owl:imports this file, the parent ontology will be valid OWL DL/Lite.') http://www.kanzaki.com/ns/wordmap http://www.kanzaki.com/ns/sitemap.rdf http://ccdb.ucsd.edu/SAO/1.0/SAO.owl (defined but not used)
Issues with this document, and with the underlying vocabulary.