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.
This specification is a revision of the Candidate Recommendation of March 27 2000, incorporating editorial suggestions received in review comments. This is the first publication of the RDF Schema specification by the RDF Core Working Group. The group is chartered to incorporate feedback on the RDFS design.
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 a revision of the language described in the RDF Schema 1.0 Candidate Recommendation of March 27 2000. The specification has been revised in the light of feedback with the goal of clarifying the relationship between RDF vocabulary description and XML schemas, while also providing a clearer basis for subsequent work on Web ontology languages.
A number
of editorial changes have been made, alongside a few
technical revisions to align this specification with the
formalization of RDF presented in the RDF Model Theory
[RDFMT] rdfs:subClassOf
and
rdfs:subPropertyOf
are now allowed to form cycles, and the
description of rdfs:domain
and rdfs:range
has
been clarified. This specification also omits the rdfs:ConstraintResource
and rdfs:ConstraintProperty
constructs previously included, as feedback on the CR release showed that it was not possible to clearly define their meaning.
A new property, rdfs:member
has been added to the RDF container vocabulary
in response to implementor feedback on that aspect of the original RDF design.
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. |
rdfs:Class | The concept of Class |
rdf:Property | The concept of a property. |
rdfs:Literal |
The class rdfs:Literal represents the set of literal values, eg. textual
strings.
|
rdf:Statement | The class of RDF statements. |
rdfs:Container | This represents the set Containers. |
rdf:Bag | An unordered collection. |
rdf:Seq | An ordered collection. |
rdf:Alt | A collection of alternatives. |
rdfs:ContainerMembershipProperty | The container membership properties, rdf:_1, rdf:_2, ..., all of which are sub-properties of 'member'. |
Property name | comment | domain | range |
---|---|---|---|
rdfs:isDefinedBy | Indicates the namespace of a resource | rdfs:Resource | rdfs:Resource |
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 |
rdf:type | Indicates membership of a class | rdfs:Resource | rdfs:Class |
rdfs:member | a member of a container | rdfs:Container | not specified |
rdfs:subClassOf | Indicates membership of a class | rdfs:Class | rdfs:Class |
rdf:value | Identifies the principal value (usually a string) of a property when the property value is a structured resource | rdfs:Resource | not specified |
rdfs:subPropertyOf | Indicates specialization of properties | rdf:Property | rdf:Property |
rdfs:comment | Use this for descriptions | rdfs:Resource | rdfs:Literal |
rdfs:label | Provides a human-readable version of a resource name. | rdfs:Resource | rdfs:Literal |
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:seeAlso | A resource that provides information about the subject resource | rdfs:Resource | rdfs:Resource |
All things described by RDF are called resources,
and are members of the class rdfs:Resource
.
The class rdfs:Literal
represents the self-denoting nodes
called the 'literals' in the RDF graph structure.
Property values such as textual strings are examples of RDF literals.
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.
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. All rdfs:range
and rdfs:domain
properties that apply to an RDF
property also apply to each of its sub-properties.
Editorial 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
.
The current name for this property (and also rdfs:subClassOf
, which
might better be labelled 'super-class'),
may be somewhat confusing. The Working Group is not currently inclined to change
these names, but seeks implementor feedback on the costs and benefits of such a change.
An instance of rdfs: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 rdfs: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:Seq
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, and a member of the class
rdfs:ContainerMembershipProperty
.
(ie. each numbered container membership property has a
rdfs:subPropertyOf
relationship to the property
rdfs:member
).
Editorial Note: It is not clear whether rdfs:member
should be a member of rdfs:ContainerMembershipProperty
. This needs to be
clarified by the Working Group.
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 information about the
subject resource.
The property rdfs:isDefinedBy
is a subproperty
of rdfs:seeAlso
, and indicates the resource
defining the subject resource. As with
rdfs:seeAlso
, this property can be applied to any
instance of rdfs:Resource
and may have as its
value any rdfs: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 predicate 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.
|
The following editorial issues with this specification are still outstanding. Technical issues relating to this and other RDF Core specifications are tracked in the RDF Issue Tracking document.