Copyright©2002 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
The Resource Description Framework (RDF) is a general-purpose language for representing information in the Web. This specification describes how to use RDF to describe RDF vocabularies. This specification also defines a basic vocabulary for this purpose, as well as conventions that can be used by Semantic Web applications to support more sophisticated RDF vocabulary description.
This section describes the status of this document at the time of its publication. Other documents may supersede this document.
This document is a Working Draft of the World Wide Web Consortium RDF Core Working group, and has been produced as part of the Semantic Web Activity.
The Resource Description Framework is part of the W3C Semantic Web Activity. The goal of this activity, and of RDF specifically, is to produce a language for the exchange of machine-understandable information using the Web.
The RDF Vocabulary Description Language presented here is an
editorial revision revision of the language described in the Working
Draft of April 30th 2002, incorporating editorial suggestions
received
in review comments. The specification has been revised in the
light of feedback and extended to include the new
rdfs:Datatype
class used by RDF's datatyping
mechanism, as well as the rdf:List
,
rdf:first
, rdf:rest
and
rdf:nil
constructs now supported by the RDF/XML
syntax. Additional differences between this document and the March 27th
2000 Candidate Recommendation are described in the April 30th
2002 Working Draft.
In conformance with W3C policy requirements, known patent and IPR constraints associated with this Working Draft are detailed on the RDF Core Working Group Patent Disclosure page.
Comments on this document are invited and should be sent to the public mailing list www-rdf-comments@w3.org. An archive of comments is available at http://lists.w3.org/Archives/Public/www-rdf-comments/.
It is inappropriate to use a W3C Working Draft as reference material or to cite them as other than "work in progress". This is work in progress and does not imply endorsement by, or the consensus of W3C. A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/.
The Resource Description Framework (RDF) defines a simple model for describing relationships among resources in terms of named properties and values. RDF properties may be thought of as attributes of resources and in this sense correspond to traditional attribute-value pairs. RDF properties also represent relationships between resources. As such, the RDF data model can therefore resemble an entity-relationship diagram. The RDF data model itself, however, provides no mechanisms for describing these properties, nor does it provide any mechanisms for describing the relationships between these properties and other resources. That is the role of this specification. The RDF vocabulary description language defines classes and properties that can be used to describe other classes and properties.
Resource description communities require the ability to say certain things about certain kinds of resources. For describing bibliographic resources, for example, descriptive attributes including "author", "title", and "subject" are common. For digital certification, attributes such as "checksum" and "authorization" are often required. The declaration of these properties (attributes) and their corresponding semantics are defined in the context of RDF as an RDF schema. A schema defines not only the properties of the resource (e.g., title, author, subject, size, color, etc.) but may also define the kinds of resources being described (books, Web pages, people, companies, etc.).
This document does not specify a vocabulary of descriptive elements such as "author". Instead, it specifies some mechanisms needed to define such elements, to name the classes of resources they may be used with, to restrict possible combinations of classes and relationships, and to help detect violations of those restrictions. Thus, this document defines a vocabulary description language.
RDF's vocabulary description language, RDF Schema, is specified in terms of the basic RDF information model - a graph structure describing resources and properties. All RDF vocabularies share some basic common structure: they describe classes of resource and types of relationships between resources. This commonality allows for a finer grained mixing of machine-processable vocabularies, and addresses the need [EXTWEB] to create metadata in which statements can draw upon multiple vocabularies that are managed in a decentralized fashion by independent communities.
The RDF Schema approach to vocabulary description allows vocabulary designers to represent descriptions of classes and properties in the World Wide Web, for example by describing ways in which combinations of classes, properties and values can be used together meaningfully.
The remainder of this specification introduces the details of this approach. A simple example is presented here in diagrammatic form, illustrating the use of the RDF Schema vocabulary for describing classes and properties, and the connection to application-level data.
(JPEG and PNG versions of this image are available)
This example illustrates the way in which RDF can be used to
describe real world things (people, documents), the classes they
fall into (such as eg:Document
,
eg:Person
), and the properties that are used to relate
members of these classes -- in this example the property
eg:author
. Through the use of RDF Schema, we can
describe the relationship between RDF properties (such as
eg:author
) and these classes of resource. In this
example, we use RDF Schema to say that the eg:author
property relates documents to people. The example also shows that
all documents are considered to be works, and that all people are
agents. An extension of this example might show a subproperty
relationship between eg:author
and the better known
and more general Dublin Core ([DCMI])
property dc:creator
.
Editorial note: this example is new material, replacing the more varied collection of examples used previously. The current draft does not yet present a full account of this example, nor include an RDF/XML test case based on the schema and instance data shown here.
The language defined in this specification consists of a
collection of RDF resources that can be used to describe properties
of other RDF resources (including properties) which define
application-specific RDF vocabularies. The core vocabulary is
defined in a namespace informally called 'rdfs
' here,
and identified by the URI reference
http://www.w3.org/2000/01/rdf-schema#
. This
specification also uses the prefix 'rdf
' to refer to
the core RDF namespace
http://www.w3.org/1999/02/22-rdf-syntax-ns#
.
Editorial Note: this Working Draft does not
propose a change to the namespace URIs use, nor to the prefix
'rdfs' traditionally used to indicate the vocabulary description
language's namespace URI . The Working Group seek feedback from
implementors on the costs and benefits of moving to a new RDFS
namespace URI. Implementors should note that the description of
rdfs:domain
and rdfs:range
in this
specification differs from that in earlier versions of the RDF
Schema specification.
The RDF Schema class and property system is similar to the type
systems of object-oriented programming languages such as Java.
However, RDF differs from many such systems in that instead of
defining a class in terms of the properties its instances may have,
an RDF schema will define properties in terms of the classes of
resource to which they apply. This is the role of the
rdfs:domain
and rdfs:range
mechanisms
described in this specification. For example, we could define the
eg:author
property to have a domain of
eg:Document
and a range of eg:Person
,
whereas a classical OO system might typically define a class
eg:Book
with an attribute called
eg:author
of type eg:Person
. Using the
RDF approach, it is easy for others to subsequently define
additional properties with a domain of Document
or a
range of eg:Person
. This can be done without the need
to re-define the original description of these classes. One benefit
of the RDF property-centric approach is that it is very easy for
anyone to say anything they want about existing resources, which is
one of the architectural principles of the Web [BERNERS-LEE98].
This specification introduces an RDF vocabulary for describing the meaningful use of properties and classes in RDF data. For example, an RDF schema might describe limitations on the types of values that are appropriate for some property, or on the classes to which it makes sense to ascribe such properties.
RDF Schema provides a mechanism for describing this information,
but does not say whether or how an application should use it. For
example, while an RDF schema can assert that an author
property is used to indicate resources that are members of the
class Person
, it does not say whether or how an
application should act in processing that class information.
Different applications will use this information in different ways.
For example, a data checking tools might use this to help discover
errors in some dataset, an interactive editor might suggest
appropriate values, and a reasoning application might use it to
infer additional information from instance data.
RDF schemas can describe relationships between vocabulary items
from multiple independently developed schemas. Since URI references
are used to identify classes and properties in the Web, it is
possible to create new properties that have a domain
or range
whose value is a class defined in another
namespace.
This specification does not attempt to enumerate all the possible forms of vocabulary description that are useful for representing the meaning of RDF classes and properties. Instead, the RDF vocabulary description strategy is to acknowledge that there are many techniques through which the meaning of classes and properties can be indicated, and to establish some conventions for using RDF/XML to describe the characteristics of RDF classes and properties.
Richer schema or 'ontology' languages such as DAML+OIL, W3C WebOnt language, inference rule languages and other formalisms (for example temporal logics) will each contribute to our ability to capture meaningful generalizations about data in the Web. RDF vocabulary designers can create and deploy Semantic Web applications using the basic RDF Schema 1.0 facilities, while exploring richer vocabulary description languages that share this general approach.
This table presents an overview of the basic vocabulary of RDF, drawing together vocabulary originally defined in the RDF Model and Syntax specification with classes and properties that originate with RDF Schema. Each class and property is described in more detail below. The core classes and properties define the machinery of RDF's vocabulary description language. The utility and container vocabulary provide additional support for describing collections and RDF statements, and for deployment of RDF vocabulary descriptions on the World Wide Web.
Class name | comment |
---|---|
rdfs:Resource | The class resource, everything. |
rdfs:Literal | This represents the set of atomic values, eg. textual strings. |
rdfs:XMLLiteral | The class of XML literals. |
rdfs:Class | The concept of Class |
rdf:Property | The concept of a property. |
rdfs:Datatype | The class of datatypes. |
rdf:Statement | The class of RDF statements. |
rdf:Bag | An unordered collection. |
rdf:Seq | An ordered collection. |
rdf:Alt | A collection of alternatives. |
rdfs:Container | This represents the set Containers. |
rdfs:ContainerMembershipProperty | The container membership properties, rdf:1, rdf:2, ..., all of which are sub-properties of 'member'. |
rdf:List | The class of RDF Lists |
Property name | comment | domain | range |
---|---|---|---|
rdf:type | Indicates membership of a class | rdfs:Resource | rdfs:Class |
rdfs:subClassOf | Indicates membership of a class | rdfs:Class | rdfs:Class |
rdfs:subPropertyOf | Indicates specialization of properties | rdf:Property | rdf:Property |
rdfs:domain | A domain class for a property type | rdf:Property | rdfs:Class |
rdfs:range | A range class for a property type | rdf:Property | rdfs:Class |
rdfs:label | Provides a human-readable version of a resource name. | rdfs:Resource | rdfs:Literal |
rdfs:comment | Use this for descriptions | rdfs:Resource | rdfs:Literal |
rdfs:member | a member of a container | rdfs:Container | not specified |
rdf:first | The first item in an RDF list. Also often called the head. | rdf:List | not specified |
rdf:rest | The rest of an RDF list after the first item. Also often called the tail. | rdf:List | rdf:List |
rdfs:seeAlso | A resource that provides information about the subject resource | rdfs:Resource | rdfs:Resource |
rdfs:isDefinedBy | Indicates the namespace of a resource | rdfs:Resource | rdfs:Resource |
rdf:value | Identifies the principal value (usually a string) of a property when the property value is a structured resource | rdfs:Resource | not specified |
rdf:subject | The subject of an RDF statement. | rdf:Statement | rdfs:Resource |
rdf:predicate | the predicate of an RDF statement. | rdf:Statement | rdf:Property |
rdf:object | The object of an RDF statement. | rdf:Statement | not specified |
In addition to these classes and properties, RDF also uses
properties called rdf:_1
, rdf:_2
,
rdf:_3
... etc., each of which is both a sub-property
of rdfs:member
and a member of the class
rdfs:ContainerMembershipProperty
. There is also a
resource called rdf:nil
that represents an empty
rdf:List
.
All things described by RDF are called resources, and
are members of the class rdfs:Resource
.
The class rdfs:Literal
respresents the class of
literal values such as strings and integers. Property values such
as textual strings are examples of RDF literals.
The class rdfs:XMLLiteral
respresents the class of
XML literal values.
This corresponds to the generic concept of a type or category of resource.
RDF class membership is used to represent types or categories of resource. Two classes may happen to have the same members, while remaining distinct resources.
rdf:Property
represents those resources that are
RDF properties.
rdfs:Datatype
represents those resources that are
RDF datatypes.
The rdf:type
property indicates that a resource is
a member of a class.
When a resource has an rdf:type
property whose
value is some specific class, we say that the resource is an
instance of the specified class.
The value of an rdf:type
property will always be a
resource that is an instance of rdfs:Class
. The
resource known as rdfs:Class
is itself a resource of
rdf:type
rdfs:Class
.
The rdfs:subClassOf
property represents a
specialization relationship between classes of resource. The
rdfs:subClassOf
property is transitive.
The property rdfs:subPropertyOf
is an instance of
rdf:Property
that is used to specify that one property
is a specialization of another.
Sub-property hierarchies can be used to express hierarchies of range and domain constraints.
Note: The term 'super-property' is
sometimes used to indicate the relationship between some property
and another more general property that it is a
rdfs:subPropertyOf
.
An instance of rdf:Property
that is used to
indicate the class(es) that the values of a property will be
members of.
The value of an rdfs:range
property is always a
Class
. The rdfs:range
property can itself
be used to express this: the rdfs:range
of
rdfs:range
is the class rdfs:Class
. This
indicates that any resource that is the value of a range property
will be a class.
rdfs:range
property is only applied to properties.
This can also be represented in RDF using the
rdfs:domain
property. The rdfs:domain
of
rdfs:range
is the class rdf:Property
.
This indicates that the range
property applies to
resources that are themselves properties. An instance of rdf:Property
that is used to
indicate the class(es) that will have as members any resource that
has the indicated property.
The rdfs:domain
of rdfs:domain
is the
class rdf:Property
. This indicates that the domain
property is used on resources that are properties.
The rdfs:range
of rdfs:domain
is the
class rdfs:Class
. This indicates that any resource
that is the value of a domain property will be a class.
Editorial Note: these definitions are
consistent with the RDF Model Theory [RDFMT] formalization of RDF Schema, but do
not yet provide a full account of rdfs:range
and
rdfs:domain
. In particular, the use of multiple domain
and range properties should be shown as an RDF/XML test case, and
integrated with the example introduced above.
Sub-property hierarchies can be used to express hierarchies of
range and domain constraints. All rdfs:range
and
rdfs:domain
properties that apply to an RDF property
also apply to each of its sub-properties.
The rdfs:label
property is used to provide a
human-readable version of a resource's name.
The rdfs:comment
property is used to provide a
human-readable description of a resource.
A textual comment helps clarify the meaning of RDF classes and properties. Such inline documentation complements the use of both formal techniques (Ontology and rule languages) and informal (prose documentation, examples, test cases). A variety of documentation forms can be combined to indicate the intended meaning of the classes and properties described in an RDF Schema.
Multilingual documentation of schemas is supported at the
syntactic level through use of the xml:lang
language
tagging facility. Since RDF schemas are expressed as RDF graphs,
vocabularies defined in other namespaces may be used to provide
richer documentation.
RDF defines a number of additional classes and properties, including constructs for representing containers and RDF statements, and for deploying RDF vocabulary descriptions in the World Wide Web.
The rdfs:Container
class is a super-class of the
RDF Container classes, ie. rdf:Bag
,
rdf:Seq
, rdf:Alt
.
The rdf:Bag
class represents RDF's 'Bag' container
construct, and is a subclass of rdfs:Container
.
The rdf:Seq
class represents RDF's 'Sequence'
container construct, and is a subclass of
rdfs:Container
.
The rdf:Alt
class represents RDF's 'Alt' container
construct, and is a subclass of rdfs:Container
.
The rdfs:ContainerMembershipProperty
class has as
members the property rdfs:member
and the properties
_1, _2, _3 ...
that can be used to indicate membership
of Bag, Seq and Alt containers.
rdfs:ContainerMembershipProperty
is a subclass of
rdf:Property
. Each container membership property is a
rdfs:subPropertyOf
the rdfs:member
property.
The rdfs:member
property is a super-property of the
container membership properties.
(ie. each numbered container membership property has a
rdfs:subPropertyOf
relationship to the property
rdfs:member
).
The rdf:List
class represents the class of RDF
Lists. It is used with the 'first', 'rest' and 'nil' constructs,
and has special case support in the RDF/XML syntax.
The rdf:first
property represents a relationship
between an rdf:List
and its first item.
The rdf:rest
property represents a relationship
between an rdf:List
item and the rest of the list, or
its end (ie. rdf:nil
).
The rdf:nil
resource represents an empty
rdf:List
.
The following utility classes and properties are defined in the RDF core namespaces.
The property rdfs:seeAlso
is used to indicate a
resource that might provide additional RDF information about the
subject resource.
The property rdfs:isDefinedBy
is a subproperty of
rdfs:seeAlso
, and indicates the resource defining the
subject resource.
The rdf:value
property identifies the principal
value (usually a string) of a property when the property value is a
structured resource.
The rdf:Statement
class represents statements about
the properties of resources.
rdf:Statement
is the domain of the properties
rdf:predicate
, rdf:subject
and
rdf:object
.
Different individual rdf:Statement
instances may
happen to have the same values for their predicate, subject and
object properties.
The subject of an RDF statement.
The rdf:subject
property indicates a resource that
is the subject of some RDF statement.
The rdfs:domain
of rdf:subject
is
rdf:Statement
and the rdfs:range
is
rdfs:Resource
. This property can be used to specify
the resource described by an RDF statement.
The predicate of an RDF statement.
The rdfs:domain
of rdf:predicate
is
rdf:Statement
and the rdfs:range
is
rdfs:Resource
. This property can be used to specify
the predicate used in an RDF statement.
The object of an RDF statement.
The rdfs:domain
of rdf:object
is
rdf:Statement
. No range is defined for this property
since values of rdfs:object
can include both Literals
and Resources. This property can be used to specify the object of
an RDF statement.
The RDF Schema design was originally produced by the RDF Schema Working Group (1997-2000). The current specification is largely an editorial clarification of that design, and has benefited greatly from the hard work of the RDF Core Working Group members, and from implementation feedback from many members of the RDF Interest Group.
David Singer of IBM was the chair of the original RDF Schema group throughout most of the development of this specification; we thank David for his efforts and thank IBM for supporting him and us in this endeavor. Particular thanks are also due to Andrew Layman for his editorial work on early versions of this specification.
The original RDF Schema working group membership included:
Nick Arnett (Verity), Dan Brickley (ILRT / University of Bristol), Walter Chang (Adobe), Sailesh Chutani (Oracle), Ron Daniel (DATAFUSION), Charles Frankston (Microsoft), Joe Lapp (webMethods Inc.), Patrick Gannon (CommerceNet), RV Guha (Epinions, previously of Netscape Communications), Tom Hill (Apple Computer), Renato Iannella (DSTC), Sandeep Jain (Oracle), Kevin Jones, (InterMind), Emiko Kezuka (Digital Vision Laboratories), Ora Lassila (Nokia Research Center), Andrew Layman (Microsoft), John McCarthy (Lawrence Berkeley National Laboratory), Michael Mealling (Network Solutions), Norbert Mikula (DataChannel), Eric Miller (OCLC), Frank Olken (Lawrence Berkeley National Laboratory), Sri Raghavan (Digital/Compaq), Lisa Rein (webMethods Inc.), Tsuyoshi Sakata (Digital Vision Laboratories), Leon Shklar (Pencom Web Works), David Singer (IBM), Wei (William) Song (SISU), Neel Sundaresan (IBM), Ralph Swick (W3C), Naohiko Uramoto (IBM), Charles Wicksteed (Reuters Ltd.), Misha Wolf (Reuters Ltd.)
Figure 1 shows the use of domain and range
properties to describe how the core RDF properties are used. This
is shown here as a node and arc representation of the RDF graph
structure. Nodes with bold outlines are instances
of rdfs:Class
.
Editorial Note: the current Working Draft omits some figures previously included in this specification. Subsequent revisions may include more diagrammatic illustrations of the RDF Schema class and property hierarchies. Note also that the current diagram is incomplete, omitting rdf:value, rdf:member and other properties.
An RDF description of the RDF Core vocabulary is given here in RDF/XML serialization syntax. Please note that the namespace URI for the RDF Schema vocabulary could change in future versions of this specification. This RDF schema includes statements describing RDF resources originally introduced by the 1999 RDF Model and Syntax specification, as well as definitions for resources introduced in the RDF Core Schema vocabulary.
This RDF/XML is also available as a separate RDF/XML document (rdfs-namespace.xml). It is not currently published at the W3C RDF Schema namespace URI.
|