Abstract

The Resource Description Framework (RDF) is a language for
representing information about resources in the World Wide Web. RDF
Schema provides a data-modelling vocabulary for RDF data. RDF Schema
is an extension of the basic RDF vocabulary.

Status of This Document

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 document is an edited version of the 2004 RDF
Schema Recommendation. The purpose of this revision is to make this
document available as part of the RDF 1.1 document set. Changes are
limited to errata, revised references, terminology updates, and adaptations to
the introduction. The title of the document was changed from "RDF
Vocabulary Description Language 1.0: RDF Schema" to "RDF Schema 1.1".
The technical content of the document is unchanged. Details of the changes
are listed in the Changes section.
Since the edits to this document do not constitute a technical
change the Director decided no new implementation report was required.

This document was published by the RDF Working Group
as a Proposed Edited Recommendation. This document is
intended to become a W3C Recommendation.
The W3C
Membership and other interested parties are invited to review
the document and send comments to
public-rdf-comments@w3.org
(subscribe,
archives)
through 09 February 2014. Advisory Committee Representatives should consult their
WBS questionnaires.
All comments are welcome.

Publication as a Proposed Edited Recommendation 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.

1. Introduction

The Resource Description Framework (RDF) is a general-purpose language
for
representing information in the Web.

RDF Schema provides a data-modelling vocabulary for RDF data.
It is complemented by several companion documents which
describe the basic concepts and abstract stntax of RDF
[RDF11-CONCEPTS], the formal semantics of RDF [RDF11-MT], and
various concrete syntaxes for RDF, such as Turtle [TURTLE],
TriG, [TRIG], and JSON-LD [JSON-LD]. The RDF Primer
[RDF11-PRIMER] provides an informal introduction and
examples of the use of the concepts specified in this document.

This document is intended to provide a clear specification of RDF
Schema to those who find the formal semantics
specification [RDF11-MT]
daunting. Thus, this document duplicates material also specified in the
RDF
Semantics specification. Where there is disagreement between this
document
and the RDF Semantics specification, the RDF Semantics specification
should
be taken to be correct.

RDF Schema is a semantic
extension of RDF. It provides mechanisms for describing groups of
related resources and the relationships between these resources. RDF
Schema is written in RDF
using the terms described in this document. These resources are used to
determine characteristics of other resources, such as the domains
and ranges of properties.

The RDF Schema class and property system is similar to the type
systems of object-oriented programming languages such as Java. RDF
Schema differs from many such systems in that instead of defining a
class in
terms of the properties its instances may have, RDF Schema
describes properties in terms of the classes of
resource to which they apply. This is the role of the domain
and 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 object oriented 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 eg: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
allows anyone to extend the description of existing resources, one of
the
architectural principles of the Web [BERNERS-LEE98].

This specification does not attempt to enumerate all the possible forms
of
representing the meaning of RDF
classes and properties. Instead, the RDF Schema strategy is
to acknowledge that there are many techniques through which the meaning
of
classes and properties can be described. Richer vocabulary or 'ontology'
languages such as OWL [OWL2-OVERVIEW], 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.

The language defined in this specification consists of a collection of
RDF resources that can be used to describe other RDF resources in
application-specific RDF vocabularies. The core vocabulary is defined in
a namespace informally called rdfs here. That namespace is
identified by the IRI

http://www.w3.org/2000/01/rdf-schema#

and is conventionally associated with the prefix rdfs:. This
specification also uses the prefix
rdf: to refer to the RDF namespace

http://www.w3.org/1999/02/22-rdf-syntax-ns#

For convenience and readability, this specification uses an abbreviated
form to represent IRIs. A name of the form prefix:suffix should be
interpreted as a IRI consisting of the IRI associated
with the prefix concatenated with the suffix.

2. Classes

Resources may be divided into groups called classes. The members of a
class are known as instances of the class. Classes are
themselves
resources. They are often identified by IRIs
and
may be described using RDF properties. The rdf:type
property may be used to state that a
resource is an instance of a class.

RDF distinguishes between a class and the set of its instances.
Associated
with each class is a set, called the class extension of the class, which
is
the set of the instances of the class. Two classes may have the same set
of
instances but be different classes. For example, the tax office may
define
the class of people living at the same address as the editor of this
document. The Post Office may define the class of people whose address
has
the same zip code as the address of the author. It is possible for these
classes to have exactly the same instances, yet to have different
properties.
Only one of the classes has the property that it was defined by the tax
office, and only the other has the property that it was defined by the
Post
Office.

A class may be a member of its own class extension and may be an
instance of itself.

The group of resources that are RDF Schema classes is itself a class
called rdfs:Class.

If a class C is a subclass of a class C', then all instances
of C will
also be instances of C'. The rdfs:subClassOf
property may be used to state that one class is a subclass of another.
The term super-class is used as the inverse of subclass. If a class C'
is a super-class of a class C, then all instances of C are also
instances of C'.

The RDF Concepts and Abstract Syntax [RDF11-CONCEPTS] specification
defines the RDF concept of an RDF
datatype. All datatypes are classes. The instances of a class that
is a
datatype are the members of the value space of the datatype.

2.1 rdfs:Resource

All things described by RDF are called resources, and are
instances of the class rdfs:Resource. This is the class
of
everything. All other classes are subclasses
of
this class. rdfs:Resource is an instance of rdfs:Class.

2.2 rdfs:Class

This is the class of resources that are RDF classes.
rdfs:Class is an instance of rdfs:Class.

2.3 rdfs:Literal

The class rdfs:Literal is the class of literal
values such as strings and integers. Property values such as textual
strings are examples of RDF literals.

2.7 rdf:XMLLiteral

2.8 rdf:Property

rdf:Property is the class of RDF properties.
rdf:Property is an instance of rdfs:Class.

3. Properties

The RDF Concepts and Abstract Syntax specification [RDF11-CONCEPTS]
describes the concept of an RDF property as a relation between subject
resources and object resources.

This specification defines the concept of subproperty. The rdfs:subPropertyOf
property may be used to state that one property is a subproperty of
another.
If a property P is a subproperty of property P', then all pairs of
resources which are related by P are also related by P'. The term
super-property is often
used as the inverse of subproperty. If a property P' is a super-property
of a property P, then all pairs of resources which are related by P are
also related by P'. This specification does not define a top
property that is the super-property of all properties.

Note

The basic facilities provided by rdfs:domain
and rdfs:range do not provide any
direct way to indicate property restrictions that are local to a class.
Although it is possible to combine use rdfs:domain
and rdfs:range with sub-property
hierarchies, direct support for such declarations are provided by richer
Web Ontology languages such as OWL [OWL2-OVERVIEW].

3.1 rdfs:range

rdfs:range is an instance of rdf:Property
that is used to state that
the values of a property are instances of one or more classes.

The triple

P rdfs:range C

states that P is an instance of the class rdf:Property,
that C is an instance of the class rdfs:Class
and that the resources denoted by the objects of triples whose
predicate is P are instances of the class C.

Where P has more than one rdfs:range property, then the resources
denoted by the objects of triples with predicate P are instances of
all the classes stated by the rdfs:range properties.

The rdfs:range property can be applied to itself. The
rdfs:range of rdfs:range is the class rdfs:Class.
This states that any resource
that is the value of an rdfs:range property is an
instance of rdfs:Class.

The rdfs:range property is applied to properties. This
can be represented in RDF using the rdfs:domain
property. The rdfs:domain of rdfs:range
is
the class rdf:Property. This
states
that any resource with an rdfs:range property is an
instance of
rdf:Property.

3.2 rdfs:domain

rdfs:domain is an instance of rdf:Property
that is used to state that
any resource that has a given property is an instance of one or more
classes.

A triple of the form:

P rdfs:domain C

states that P is an instance of the class rdf:Property,
that C is a instance of the class rdfs:Class
and that the resources denoted by the subjects of triples whose
predicate is P are instances of the class C.

Where a property P has more than one rdfs:domain property, then the
resources denoted by subjects of triples with predicate P are
instances of all the classes stated by the rdfs:domain
properties.

The rdfs:domain property may be applied to itself. The
rdfs:domain of rdfs:domain is the class rdf:Property.
This states that any
resource with an rdfs:domain property is an instance of
rdf:Property.

The rdfs:range of
rdfs:domain is the class rdfs:Class.
This states that any resource that is the value of an rdfs:domain
property is an
instance of rdfs:Class.

3.3 rdf:type

rdf:type is an instance of rdf:Property
that is used to
state that a resource is an instance of a class.

A textual comment helps clarify the meaning of RDF classes and
properties.
Such in-line 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
vocabulary. Since RDF vocabularies are expressed as RDF graphs,
vocabularies
defined in other namespaces may be used to provide richer
documentation.

Multilingual documentation is supported through use of the language
tagging facility of RDF literals.

4. Using the Domain and Range vocabulary

This section is non-normative.

This specification introduces an RDF vocabulary for describing the
meaningful use of properties and classes in RDF data. For example, an
RDF
vocabulary 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 vocabulary can assert that an author property
is used to
indicate resources that are instances of the class Person,
it
does not say whether or how an application should act in processing that
range information. Different applications will use this information in
different ways. For example, data checking tools might use this to help
discover errors in some data set, an interactive editor might suggest
appropriate values, and a reasoning application might use it to infer
additional information from instance data.

RDF vocabularies can describe relationships between vocabulary items
from
multiple independently developed vocabularies. Since IRIs are used
to identify classes and properties on the Web, it is possible to create
new
properties that have a domain or range whose
value
is a class defined in another namespace.

5. Other vocabulary

Additional classes and properties, including constructs for
representing
containers and RDF statements, and for deploying RDF vocabulary
descriptions
in the World Wide Web, are defined in this section.

5.1 Container Classes and Properties

This section is non-normative.

RDF containers are resources that are used to represent collections.
The same resource may appear in a container more than
once. Unlike containment in the physical world, a container may be
contained in itself.

Three different kinds of container are defined. Whilst the formal
semantics [RDF11-MT] of all three classes of container are
identical,
different classes may be used to indicate informally further
information. An rdf:Bag is used to indicate that the container is
intended to be unordered. An rdf:Seq is used to indicate that the
order indicated by the numerical order of the container
membership properties
of the container is intended to be significant. An rdf:Alt container
is used
to indicate that typical processing of the container will be to select
one of
the members.

Just as a hen house may have the property that it is made of wood,
that
does not mean that all the hens it contains are made of wood, a
property of a
container is not necessarily a property of all of its members.

RDF containers are defined by the following classes and properties.

5.1.1 rdfs:Container

5.1.2 rdf:Bag

The rdf:Bag class is the class of RDF 'Bag'
containers. It is
a subclass of rdfs:Container.
Whilst formally it is no
different from an rdf:Seq or an
rdf:Alt, the rdf:Bag
class is used
conventionally to indicate to a human reader that the container is
intended
to be unordered.

5.1.3 rdf:Seq

The rdf:Seq class is the class of RDF 'Sequence'
containers.
It is a subclass of rdfs:Container.
Whilst formally it is no
different from an rdf:Bag or an
rdf:Alt, the rdf:Seq
class is used
conventionally to indicate to a human reader that the numerical
ordering of
the container membership
properties of the container is intended to be significant.

5.1.4 rdf:Alt

The rdf:Alt class is the class of RDF 'Alternative'
containers. It is a subclass of rdfs:Container. Whilst formally
it is no
different from an rdf:Seq or an
rdf:Bag, the rdf:Alt
class is used
conventionally to indicate to a human reader that typical processing
will be
to select one of the members of the container. The first member of
the
container, i.e. the value of the rdf:_1
property, is the
default choice.

5.1.5 rdfs:ContainerMembershipProperty

The rdfs:ContainerMembershipProperty class has as
instances
the properties rdf:_1, rdf:_2, rdf:_3 ... that are
used to state
that a resource is a member of a container.
rdfs:ContainerMembershipProperty is a subclass
of rdf:Property. Each
instance of
rdfs:ContainerMembershipProperty is an rdfs:subPropertyOf
the rdfs:member property.

Given a container C, a triple of the form:

C rdf:_nnn O

where nnn is the decimal representation of an integer
greater than 0 with
no leading zeros, states that O is a member of the container C.

Container membership properties may be applied to resources other
than containers.

5.1.6 rdfs:member

rdfs:member is an instance of rdf:Property
that is a super-property of all
the container membership properties i.e. each container membership
property
has an rdfs:subPropertyOf
relationship to the property rdfs:member.

5.2 RDF Collections

This section is non-normative.

RDF containers are open in the sense that the core RDF specifications
define no mechanism to state that there are no more members. The RDF
Collection vocabulary of classes and properties can describe a closed
collection, i.e. one that can have no more members.

A collection is represented as a list of items, a representation that
will be familiar to those with experience of Lisp and similar
programming languages. There is a shorthand
notation in the Turtle syntax specification for representing
collections.

Note

RDFS does not require that there be only one first element of a
list-like structure, or even that a list-like structure have a first
element.

5.2.1 rdf:List

rdf:List is an instance of rdfs:Class
that can be used to build descriptions of lists and other list-like
structures.

5.2.2 rdf:first

rdf:first is an instance of rdf:Property
that can be used to build descriptions of lists and other list-like
structures.

5.2.4 rdf:nil

The resource rdf:nil is an instance of rdf:List
that can be used to represent an empty list or other list-like
structure.

A triple of the form:

L rdf:rest rdf:nil

states that L is an instance of rdf:List
that has one item; that item can be indicated using the rdf:first
property.

5.3 Reification Vocabulary

This section is non-normative.

5.3.1 rdf:Statement

rdf:Statement is an instance of rdfs:Class.
It is intended to represent the class of RDF statements. An RDF
statement is the statement made by a token of an RDF triple. The
subject of an RDF statement is the instance of rdfs:Resource
identified by the subject of the triple. The predicate of an RDF
statement is the instance of rdf:Property
identified by the predicate of the triple. The object of an RDF
statement is the instance of rdfs:Resource
identified by the object of the triple.
rdf:Statement is in the domain of the properties rdf:predicate, rdf:subject
and rdf:object. Different
individual rdf:Statement instances may have the same
values for their rdf:predicate,
rdf:subject
and rdf:object properties.

5.3.2 rdf:subject

rdf:subject is an instance of rdf:Property
that is used to state the
subject of a statement.

A triple of the form:

S rdf:subject R

states that S is an instance of rdf:Statement
and that the subject of S is
R.

5.4 Utility Properties

The following utility classes and properties are defined in the RDF
core
namespaces.

5.4.1 rdfs:seeAlso

rdfs:seeAlso is an instance of rdf:Property
that is used to indicate a
resource that might provide additional information about the subject
resource.

A triple of the form:

S rdfs:seeAlso O

states that the resource O may provide additional information about
S. It
may be possible to retrieve representations of O from the Web, but
this is
not required. When such representations may be retrieved, no
constraints are
placed on the format of those representations.

5.4.2 rdfs:isDefinedBy

rdfs:isDefinedBy is an instance of rdf:Property
that is used to indicate a
resource defining the subject resource. This property may be used to
indicate
an RDF vocabulary in which a resource is described.

A triple of the form:

S rdfs:isDefinedBy O

states that the resource O defines S. It may be possible to
retrieve
representations of O from the Web, but this is not required. When
such
representations may be retrieved, no constraints are placed on the
format of
those representations. rdfs:isDefinedBy is a subproperty
of rdfs:seeAlso.

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
an
instance of the class rdfs:ContainerMembershipProperty.
There is
also an instance of rdf:List called rdf:nil
that is
an empty rdf:List.

A. Acknowledgments

This section is non-normative.

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 Groupmembers, and
from
implementation feedback from many members of the RDF
Interest Group. In
2013-2014 Guus Schreiber edited this document on behalf of the RDF
Working Group
to bring it in line with the RDF 1.1 specifications.

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.

B. Change history

B.1 Changes for Proposed Edited Recommendation in 2013

Refereces and anchors to RDF 1.0 documents where appropriate
replaced by references and anchors to RDF 1.1 documents.

Replaced the term "URI Reference" with the term "IRI".

Removed discussion about distinction between plain and typed
literals, as this distinction is absent in RDF 1.1 and has no
technical bearing on RDF Schema.

Removed the introductory paragraph of Sec. "Reification
Vocabulary", as this discussion is not related to the
technical content and is irrelevant and confusing now.

Update of affiliation of the editors.

Added RDF WG to the Acknowledgements section.

Renamed the document from "RDF Vocabulary Description Language
1.0: RDF Schema" to "RDF Schema 1.1", as the term Vocabulary
Description Language has led to confusion.

Three paragraphs of the Introduction were left out. These
paragraphs described the things that RDF Schema does not do and are
now much less relevant than in 2004.

Added the datatypes rdf:langString and rdf:HTML.

Removed Appendix "RDF Schema in RDF/XML". It was informative, but
now out of date, in terms of content and in terms of
syntax.

Marked rdf:HTML and rdf:XMLLiteral
as non-normative.

Removed references to 2004 Primer from Secs. 5.1, 5.2
and 5.4.3. In the latter case the example referred to was
moved into this document for readability purposes.

B.2 Changes history of the 2004 Recommendation

The following is an outline of the main changes made to the 2004
specification, latest first, since the Last Call Working Draft of 23 January
2003. See the Last
Call issue tracking document for details of the specific issues
raised regarding this specification.

Amended Appendix A to note that the RDF/XML description of RDF and
RDFS terms is not directly published at the RDFS namespace, but
split between the 'rdf:' and 'rdfs:' namespace documents. Also
removed the pre-REC warning that the WG might choose to change the
namespace URI prior to Recommendation.