Resource Directory Description Language (RDDL)

This version: January 22, 2001

Latest Version

Previous Version: January 15, 2001

Editors:

Table of contents

  1. Introduction
  2. Background
  3. Nature and Purpose
    1. Nature
    2. Purpose
  4. Document attributes
    1. xml:base
    2. xml:lang
  5. resource element

    Attributes:

    1. xlink:role
    2. xlink:arcrole
    3. xlink:href
    4. xlink:type
    5. xlink:title
    6. xml:lang
    7. xml:base
    8. id
  6. Resources
  7. Normative References
  8. Informative References

Introduction

This document defines Resource Directory Description Language (RDDL). A Resource Directory provides a text description of some class of resources and of individual resources related to that class. It also contains a directory of links to these related resources. An example of a class of resources is that defined by an XML Namespace. Examples of such related resources include schemas, stylesheets, and executable code. A Resource Directory Description is designed to be suitable for service as the body of a resource returned by dereferencing a URI serving as an XML Namespace name.

The Resource Directory Description Language is an extension of XHTML Basic 1.0 with an added element named resource. This element serves as an XLink to the referenced resource, and contains a human-readable description of the resource and machine readable links which describe the purpose of the link and the nature of the resource being linked to. The nature of the resource being linked to is indicated by the xlink:role attribute and the purpose of the link is indicated by the xlink:arcrole attribute.

A DTD for RDDL has been defined using Modularization for XHTML.

This document defines the syntax and semantics of the Resource Directory Description Language, and also serves as a Resource Directory Description for the namespace http://www.rddl.org/.

Background

The Resource Directory Description Language was initially proposed and specified after discussion on the XML-DEV mailing list. Descriptions of the origins and historical context of RDDL may be found at the XML Cover Pages, <?xmlhack?>, and xml.com. Many people have contributed to RDDL.

This document has no official standing and has not been considered nor approved by any organization.

Nature and Purpose

The Nature of a Related Resource

Related resources have a nature, a machine-readable label provided by the value of the xlink:role attribute. For example, the nature of an XML Schema designed for use with a namespace would be given as xlink:role="http://www.w3.org/2000/10/XMLSchema".

In cases where there is only one resource with a particular nature, the purpose of the linked resource may be inferred from this nature. For example, if there is only one related resource for a particular namespace whose nature indicates that it is a schema, processing software might infer that its purpose is to validate elements in that namespace.

The Purpose of a Related Resource

Related resources may have a purpose, a machine-readable label provided by the value of the xlink:arcrole attribute. The purpose is designed to convey the intended usage of the related resource. For example, two related resources might have natures that indicate they are both schemas, but the purposes might indicate that one is designed to validate the "strict" version of the language, the other the "forgiving" form.

Attributes of RDDL document

Base URI

The base URI of a RDDL document may be specified according to the W3C XML Base recommendation. The xml:base attribute may be specified on the root html element or on a rddl:resource element.

Language

The language of a RDDL document may be specified by the xml:lang attribute on the html element or on a rddl:resource element. An html tag in an XHTML document may specify both lang and xml:lang attributes, but the lang attribute is not used by RDDL processors.

The rddl:resource Element

The resource element is in a namespace whose name is http://www.rddl.org/. In this discussion, we assume the use of the namespace prefix rddl, and refer to this element as rddl:resource. The rddl:resource element represents a simple xlink, using the attributes defined in the XLink namespace.

The rddl:resource must occur in the content of the HTML body element. In the RDDL DTD, the XHTML %Flow.mix entity has been redefined to contain rddl:resource so it roughly may be placed anywhere a p element may be placed. The rddl:resource element itself uses the %Flow.mix content model, and should have human-readable content which describes the associated resource.

Here is a DTD fragment declaring the rddl:resource element, edited for clarity.

<!ELEMENT rddl:resource (#PCDATA | %Flow.mix;)*>
<!ATTLIST rddl:resource
  id            ID       #IMPLIED
  xml:lang      NMTOKEN  #IMPLIED
  xml:base      CDATA    #IMPLIED
  xmlns:rddl    CDATA    #FIXED   "http://www.rddl.org/"
  xlink:type    (simple) #FIXED   "simple"
  xlink:arcrole CDATA    #IMPLIED
  xlink:role    CDATA             "http://www.rddl.org/#resource"
  xlink:href    CDATA    #IMPLIED
  xlink:title   CDATA    #IMPLIED
  xlink:embed   CDATA    #FIXED   "none"
  xlink:actuate CDATA    #FIXED   "none"
  >

Attributes of rddl:resource

xlink:role

The value of this attribute must be a URI reference. A URI reference may contain a URI part and a fragment identifier. Per XLink, when present the URI part must be an absolute URI. It provides a machine-readable identifier for the nature of the related resource. Software may dispatch on this value.

When the related resource is an XML language for which a namespace name has been defined, and for which the namespace name adequately distinguishes the nature of the resource, the namespace name should be used as its nature.

When the related resource is not an XML document but is adequately distinguished by a MIME type, the value of the xlink:role attribute may reflect this MIME type with values formed by the concatenation of the prefix http://www.isi.edu/in-notes/iana/assignments/media-types/ with a MIME type e.g. http://www.isi.edu/in-notes/iana/assignments/media-types/text/css.

It is anticipated that many related-resource natures will be well known. A list of well-known natures may be found in the RDDL directory http://www.rddl.org/natures.html.

If no nature is provided for a related resource, the default value is http://www.rddl.org/#resource.

xlink:arcrole

The value of this attribute must be a URI reference. A URI reference may contain a URI part and a fragment identifier. Per XLink, when present the URI part must be an absolute URI. It provides a machine-readable identifier for the purpose of the link to the related resource. Software may dispatch on this value.

It is anticipated that the purposes of many related resources will be well known. A list of well-known purposes may be found in the RDDL directory http://www.rddl.org/purposes.html.

xlink:href

This XLink locator attribute's value is a URI reference to the target related resource.

xlink:title

A human readable short descriptive title. This should be specified but not be seen as a replacement for descriptive content.

xlink:type

The xlink:type is always "simple" in this version of the specification.

xlink:show and xlink:actuate

Not used. The only legal value is "none".

xml:lang

The xml:lang attribute value may be provided to specify the human language of the resource and descriptive text. Where possible, human-readable descriptions should be provided in multiple languages. Human readable descriptions in multiple languages can be provided using child div elements each labelled accordingly.

xml:base

The xml:base attribute may be applied to the resource element.

id

The id attribute value may be used to give the resource description a name.

Related Resources for RDDL

Well-Known Related-Resource Natures

A list of well-known related-resource natures, with descriptions.

Well-Known Related-Resource Purposes

A list of well-known related-resource purposes, with descriptions.

CSS Stylesheet

A CSS stylesheet used to provide the "look-and-feel" of this document, suitable in general for RDDL documents.

DTD

A DTD rddl-xhtml.dtd for RDDL, defined as an extension of XHTML Basic 1.0 using Modularization for XHTML

The DTD includes a number of modules:

RDF Schema

An RDF Schema for RDDL. This code is shown as an example and is not normative.

OASIS Open Catalog

The OASIS Open Catalog Format catalog for RDDL. This catalog defines PUBLIC and SYSTEM identifiers related to the RDDL DTD.

TREX

A TREX Schema xhtml-rddl.trex for RDDL

The TREX Schema includes a number of modules:

ZIP

The RDDL spec, DTDs and other contents of the directory, zipped for download.

Java API

An example of a Java API for RDDL; code to implement it based on SAX is here here. This code is shown as an example and is not normative.

JAR

The above code packaged as a java archive.

An example of how it might be used in the case where an XML Schema for the namespace is desired:

  RDDLURL rurl = new RDDLURL(
                        "http://www.rddl.org/", 
                        "http://www.w3.org/2000/10/XMLSchema",
                        "http://www.rddl.org/purposes.html#schema-validation", 
                        ); // a namespace URI, the root namespace
        InputStream is = rurl.getInputStream(); // and you get the XSD
        ...

XSLT Stylesheet

An example of an XSLT stylesheet for RDDL, which accepts the params role and arcrole. The transform inserts the document referenced by xlink:href in the output. This code is shown as an example and is not normative.

RDDL Table View

An example of an XSLT stylesheet which extracts RDDL resource elements into an HTML table. This code is shown as an example and is not normative.

RDDL to RDF converter

This is an XSLT transform which converts a RDDL document into RDF. This code is shown as an example and is not normative.

RDDL to RSS 1.0 converter

This is an XSLT transform which converts a RDDL document into RSS. This code is shown as an example and is not normative.

C# API

Jason Diamond's C# API for the RDDL on the Microsoft .NET platform. A ZIP file. This is referenced as an example and is not normative.

Normative References

  1. W3C XML Names
  2. IETF RFC 2396
  3. W3C XLink
  4. W3C XHTML Basic 1.0
  5. W3C XML Base
  6. W3C XPointer
  7. W3C XML Infoset

Informative References

  1. W3C XHTML 1.0
  2. W3C Note Harvesting RDF Statements from XLinks
  3. W3C Modularization of XHTML