This draft document is a work in progress. It represents the deliberations of the W3C RDF Schema Working Group as of the date it was issued. The Working Group has not reached full consensus on all parts of this draft and is continuing to refine this document; we are issuing this document to solicit comments on our progress. We especially call the reader's attention to Appendix C ("Open Issues").
The Resource Description Framework is part of the W3C Metadata Activity. The goal of this activity, and of RDF specifically, is to produce a language for the exchange of machine-understandable descriptions of resources on the Web. A separate specification describes the data model and syntax for the interchange of metadata using RDF.
Comments may be sent to www-rdf-comments@w3.org. The public archive of these comments is available at http://lists.w3.org/Archives/Public/www-rdf-comments/
We strongly recommend that only experimental software be implemented to this document. It is our belief that this document does not sufficiently constrain implementations to guarantee interoperability. This Working Group will not allow early implementations to affect their ability to make substantial changes to future versions of this document.
This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress".
Note: As working drafts are subject to frequent change, you are
advised to reference the above URL for "Latest version" rather than the
URLs for working draft versions themselves. The latest version URL will
always point to the most current version of this draft.
The model described by this document uses RDF concepts to provide a basic schema for RDF.
An RDF schema is a collection of information about classes of RDF nodes, including properties and relations. This paper supplements the RDF Model and Syntax [RDFMS] specification by providing a typing system: informally, it is a basic set of nodes and relations that can be used to express properties of classes of RDF nodes. It includes a facility to indicate that certain classes are subclasses of others, and provides a small number of basic classes. Finally, it contains a facility for specifying a small number of constraints such as the cardinality (number of occurences) required and permitted of properties of instances of classes.
This document does not define classes applying to specific application domains. For example, it does not define classes such as "Author" or "DigitalSignature." Instead, it provides a mechanism that can be used to define characteristics of such classes.
RDF schemas are specified using a declarative representation language influenced by ideas from knowledge representation, e.g., semantic nets, frames, and predicate logic, as well as database schema representation models such as binary relational models ([NIAM], etc.) and graph data models. The RDF schema specification language is less expressive, but simpler, than full predicate calculus languages such as CycL [CycL] and KIF [KIF].
RDF Schemas aim, not at theoretical issues, but at solving a small number of immediate problems. Its creators expect that other problems (listed in the appendix) will share similar characteristics and that they also may be able to use the basic classes described in this paper.
This paper was directly influenced by consideration of the following problems:
The RDF Model and Syntax is adequate to represent most of PICS [PICS], however, it requires augmentation by features such as the ability to specify a default rating for any page with a certain URL prefix. This draft does not yet provide such a mechanism.
One obvious application for RDF is in the description of web pages. This is one of the basic functions of the Dublin Core [DC] initiative. The Dublin Core is a set of 15 elements believed to be broadly applicable to describing web resources to enable their discovery. The Dublin Core has been a major influence on the development of RDF. An important consideration in the development of the Dublin Core was to allow simple descriptions, but also to provide the ability to qualify descriptions in order to provide both domain specific elaboration and descriptive precision.
The RDF Schema mechanism proposed in this paper provides a machine-understandable system for defining 'schemas' for descriptive vocabularies like the Dublin Core. It allows designers to specify classes of Resource types, property types to convey descriptions of those classes, and constraints on the allowed combinations of classes, property types, and values.
An initial schema for the simple Dublin Core is provided in Appendix D. This schema defines the 15 elements as property types, and gives a description of their purpose. Despite the simplicity of the definition, it is believed that this schema serves as the foundation for more elaborate definitions. Future extensions are likely to specify the structure of the values of the properties, which will involve defining classes, the property types that apply to those classes, and some constraints on the property values. In order for browsers and authoring tools to understand and enforce these constraints, this information should be machine understandable. This document provides a machine understandable schema language for expressing such definitions and constraints.
A sitemap is some kind of hierarchical description of a site. A subject taxonomy is a taxonomy such as that used by Yahoo!, Excite, etc. RDF Schemas aims to provide a mechanism by which sitemaps and taxonomies using the RDF Model can express the classes of nodes, properties, relations etc. they use.
The W3C Platform for Privacy Preferences Project (P3P) requires a grammar for constructing statements about a site's data collection practices, personal preferences as exercised over those practices, as well as a syntax for exchanging structured data. The ability for third party assurances (signed statements) regarding P3P practices is also important. For instance, entities may wish to certify that P3P practice statements were properly generated in accordance with industry guidelines, have been audited, or are compliant with the relevant privacy regulations.
These problems have influenced the design of this first version of the RDF Schema. RDF is tailored for easy extensibility. If RDF succeeds, we expect that future versions of RDF will be more ambitious and include more problems in their design space.
An RDF Schema can be expressed by the data model described in the RDF Model and Syntax [RDFMS] document. The schema description language is simply a set of resources and property types defined by this paper and implicitly part of every RDF graph using this schema machinery.
For this release of the document, we have concentrated on identifying the set of RDF resources and property types and their relationships. We especially solicit comment on the understandability of the names we have chosen for these.
The following resources belong to the Core RDF Schema. We first define the type system and then introduce property types for expressing various kinds of constraints.
The RDF Schema defined in this paper is a set of RDF resources and property types that can be used to describe classes of RDF nodes, including properties and relations. They are defined in a namespace informally called 'RDFS' here and which will be more formally defined and given a URI in the future.
As described in the RDF Model and Syntax paper, nodes may be RDF:instanceOf one or more classes. However, classes themselves are often used in a hierarchical fashion, for example considering the class 'dog' to be a subclass of 'animal,' which is a subclass of 'organism' etc., meaning that any node which is an RDF:instanceOf 'dog' is ipso facto an RDF:instanceOf 'animal' and so on. This paper describes a property type, RDFS:subClassOf, indicating such a relationship.
In addition to describing the RDFS:subClassOf relation between classes, this paper defines a small number of other resources and properties that express constraints on instances of classes, such things as statements that all instances of a class have certain properties or relations, limitations on the types of values that are valid for a property or relation, as well as the cardinality of those properties and relations. This paper gives a mechanism for describing such constraints, but does not say whether or how an application must process the constraint information. For example, while an RDF schema may express that a 'Book' may have an 'author' property, it does not say whether or how an application should act in processing that information. We expect that different applications will use these constraints in different ways. e.g., a validator will look for errors, an editor might suggest legal values.
We anticipate the development of a set of classes corresponding to a set of "datatypes." This paper does not define datatypes, but does note that datatypes may be used as the value of the RDFS:range property.
The following resources are core classes that are defined as part of the RDF Schema machinery. Every RDF graph (implicitly) includes these.
2.2.1 RDF:Resource
All resources, i.e., all the elements of the set N defined in section
2.1 of the RDF Model and Syntax document, are instances of RDF:Resource.
This roughly corresponds to the concept of Object in Java.
2.2.2 RDF:PropertyType
All the property types, i.e., all the elements of the set P defined
in section 2.1 of the RDF Model and Syntax document, are instances of
RDF:PropertyType. Conversely, every instance of RDF:PropertyType is an
element of P.
2.2.3 RDFS:Class
This corresponds to the generic concept of a Type or
Category. When a schema defines a new class, the node representing
that class must have an RDF:instanceOf arc to this node. Classes can be
defined to represent almost anything, such as web pages, people, cars,
rabbits, and animals.
Every RDF graph also (implicitly) includes the following core property types. These are instances of the PropertyType class and provide a mechanism for expressing relationships between classes and their instances or superclasses.
2.3.1 RDF:instanceOf
This indicates that a resource is a member of a class, and thus has
all the characteristics that are to be expected of a member of that class.
It is a relation between a resource and another resource which must be
an instance of Class. A resource may be an instance of more
than one class.
2.2.2 RDFS:subClassOf
This indicates the subset/superset relation between classes.
RDFS:subClassOf is transitive. If B is a sub-class of A and
X is an instance of B, then X is also an instance of A. Only instances
of Class can have this property type and the property
value is always an instanceOf Class. A Class may
be a subClassOf more than one Class.
3.1.1 RDFS:ConstraintPropertyType
This resource defines a subclass of the PropertyTypes, all of whose
instances are property types used to specify constraints. The rest of the
property types defined in section 3 are instances of this class.
3.1.2 RDFS:range
An instance of ConstraintPropertyType that is used to
constrain property values. The value of a range property is always
a Class.
The property value of a property type whose range is A is constrained
to be an instanceOf A. A property type can have at most one range property. It is
possible for it to have no range, in which case, the property value
could be anything.
3.1.3 RDFS:allowedPropertyType
An instance of ConstraintPropertyType that is
used to specify the properties that the instances of a Class
may have.
3.1.4 RDFS:necessity
An instance of ConstraintPropertyType that is used to
constrain the cardinality of a property type. RDFS:necessity has
a range of RDFS:NecessityValue (defined below).
3.2.5 RDFS:NecessityValue
RDFS:ExactlyOne, RDFS:OneOrMore, RDFS:ZeroOrOne and
RDFS:ZeroOrMore are all instances of
the class RDFS:NecessityValue.
3.3.1 RDFS:comment
This is used to provide a human readable natural language description
of a resource.
The Model and Syntax specification introduces certain concepts. Here we define resources corresponding to these concepts.
3.3.6: RDFS:String
This corresponds to the definition of a String in the
Model and Syntax document [RDFMS].
Figure 1 illustrates the concepts of Class, subClass, and Resource. A Class is depicted by a rounded rectangle, a Resource is depicted by a large dot. In the figure below, arrows are drawn from a Resource to the Class it defines. A subClass is shown by having a rounded rectangle (the subclass) completely enclosed by another (the superclass). If a Resource is inside a Class, then there exists either an explicit or implicit "RDF:instanceOf" arc from the Resource to the Resource that defines the Class. (Those arcs are shown in figure 2).
Figure 2 shows the same information about the class hierarchy as in figure 1, but does so in terms of the RDF data model. If a class is a subset of another, then there is a RDFS:subClassOf arc from the node representing the first class to the node representing the second. Similarly, if a Resource was an instance of a Class, then there is an RDF:instanceOf arc from the resource to the node representing the class. (Not all such arcs are shown. We only show the arc to the most tightly encompassing class, and rely on the transitivity of the 'subClassOf' relation to provide the rest).
The RDF Schema uses the constraint property types to constrain how its
own PropertyTypes can be used. These constraints are shown below in
figure 3.
Note: This document was prepared and approved for publication by the
W3C RDF Schema Working Group (WG). WG approval of this document does not
necessarily imply that all WG members voted for its approval.
David Singer of IBM is the chair of the group; we thank David for his
efforts and thank IBM for supporting him and us in this endeavor.
Ron Daniel produced all the graphics for this document.
The working group membership has included:
Nick Arnett (Verity), Dan Brickley (ILRT/University of Bristol), Walter Chang (Adobe), Sailesh Chutani (Oracle), Ron Daniel (Los Alamos National Laboratory), Joe Lapp (webMethods Inc.), Patrick Gannon (CommerceNet), RV Guha (Netscape), 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), Norbert Mikula (DataChannel), Eric Miller (OCLC), Frank Olken (Lawrence Berkeley National Laboratory), Sri Raghavan (Digital), 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.)
Not all of the people listed above have been members throughout the entire duration of the working group, but all have contributed to the evolution of this document.
The RDF specification of the above is given below in the serialization syntax. Please note that the namespace URIs listed are examples only; formal identifiers have not yet been assigned for these schemas.
<?xml:namespace ns='http://www.w3.org/TR/WD-rdf-syntax/' prefix='RDF' ?> <?xml:namespace ns='http://www.w3.org/TR/WD-rdf-schema/' prefix='RDFS' ?> <RDF:RDF> <RDF:Description ID="Resource"> <RDF:instanceOf RDF:HREF="#Class"/> <RDFS:comment>The most general class</RDFS:comment> <RDFS:allowedPropertyType> <RDF:Description ID="instanceOf"> <RDF:instanceOf RDF:HREF="#PropertyType"/> <RDFS:comment>The basic instanceOf property</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#OneOrMore"/> </RDF:Description> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:Description ID="comment"> <RDF:instanceOf RDF:HREF="#PropertyType"/> <RDFS:comment>Use this for descriptions</RDFS:comment> <RDFS:range RDF:HREF="#String"/> <RDFS:necessity RDF:HREF="#ZeroOrMore"/> </RDF:Description> </RDFS:allowedPropertyType> </RDF:Description> <RDF:Description ID="Class"> <RDF:instanceOf RDF:HREF="#Class"/> <RDFS:comment>The concept of Class</RDFS:comment> <RDFS:subClassOf RDF:HREF="#Resource"/> <RDFS:allowedPropertyType> <RDF:Description ID="subClassOf"> <RDF:instanceOf RDF:HREF="#PropertyType"/> <RDFS:comment>The basic SubClassOf property</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#ZeroOrMore"/> </RDF:Description> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:Description ID="allowedPropertyType"> <RDF:instanceOf RDF:HREF="#ConstraintPropertyType"/> <RDFS:comment>This is how we associate a class to properties that its instances can have</RDFS:comment> <RDFS:range RDF:HREF="#PropertyType"/> </RDF:Description> </RDFS:allowedPropertyType> </RDF:Description> <RDF:Description ID="ConstraintPropertyType"> <RDF:instanceOf RDF:HREF="#Class"/> <RDFS:subClassOf RDF:HREF="#PropertyType"/> </RDF:Description> <RDF:Description ID="PropertyType"> <RDFS:comment>The concept of a property type.</RDFS:comment> <RDFS:subClassOf RDF:HREF="#Resource"/> <RDFS:allowedPropertyType> <RDF:Description ID="range"> <RDF:instanceOf RDF:HREF="#ConstraintPropertyType"/> <RDFS:comment>Property types that can be used in a schema to provide constraints</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#ZeroOrOne"/> </RDF:Description> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:Description ID="necessity"> <RDF:instanceOf RDF:HREF="#ConstraintPropertyType"/> <RDFS:comment>Used to constrain the cardinality of a property type.</RDFS:comment> <RDFS:range href="#NecessityValue"/> </RDF:Description> </RDFS:allowedPropertyType> </RDF:Description> <RDF:Description ID="NecessityValue"> <RDF:instanceOf RDF:HREF="#Class"/> <RDFS:subClassOf RDF:HREF="#Resource"/> </RDF:Description> <RDF:Description ID="OneOrMore"> <RDF:instanceOf RDF:HREF="#NecessityValue"/> </RDF:Description> <RDF:Description ID="ZeroOrMore"> <RDF:instanceOf RDF:HREF="#NecessityValue"/> </RDF:Description> <RDF:Description ID="ZeroOrOne"> <RDF:instanceOf RDF:HREF="#NecessityValue"/> </RDF:Description> <RDF:Description ID="ExactlyOne"> <RDF:instanceOf RDF:HREF="#NecessityValue"/> </RDF:Description> <RDF:Description ID="String"> <RDF:instanceOf RDF:HREF="#Resource"/> </RDF:Description> </RDF:RDF>
The following is the same specification, using the abbreviated syntax. Please note that the namespace URIs listed are examples only; formal identifiers have not yet been assigned for these schemas.
<?xml:namespace ns='http://www.w3.org/TR/WD-rdf-syntax/' prefix='RDF' ?> <?xml:namespace ns='http://www.w3.org/TR/WD-rdf-schema/' prefix='RDFS' ?> <RDF:RDF> <RDFS:Class ID="Resource"> <RDFS:comment>The most general class</RDFS:comment> <RDFS:allowedPropertyType> <RDF:PropertyType ID="instanceOf"> <RDFS:comment>The basic instanceOf property</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#OneOrMore"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="comment"> <RDFS:comment>Use this for comments</RDFS:comment> <RDFS:range RDF:HREF="#String"/> </RDF:PropertyType> </RDFS:allowedPropertyType> </RDFS:Class> <RDFS:Class ID="ConstraintPropertyType"> <RDFS:subClassOf RDF:HREF="#PropertyType"/> </RDFS:Class> <RDFS:Class ID="Class"> <RDFS:comment>The concept of Class</RDFS:comment> <RDFS:subClassOf RDF:HREF="#Resource"/> <RDFS:allowedPropertyType> <RDF:PropertyType ID="subClassOf"> <RDFS:comment>The basic SubClassOf property</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#ZeroOrMore"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDFS:ConstraintPropertyType ID="allowedPropertyType"> <RDFS:comment>This is how we associate a class to properties that its instances can have.</RDFS:comment> <RDFS:range RDF:HREF="#PropertyType"/> </RDFS:ConstraintPropertyType> </RDFS:allowedPropertyType> </RDFS:Class> <RDFS:Class ID="PropertyType"> <RDFS:comment>Used to constrain the cardinality of a property type.</RDFS:comment> <RDFS:subClassOf RDF:HREF="#Resource"/> <RDFS:allowedPropertyType> <RDFS:ConstraintPropertyType ID="range"> <RDFS:comment>...</RDFS:comment> <RDFS:range RDF:HREF="#Class"/> <RDFS:necessity RDF:HREF="#ZeroOrOne"/> </RDFS:ConstraintPropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDFS:ConstraintPropertyType ID="necessity"> <RDFS:comment>...</RDFS:comment> <RDFS:range href="#NecessityValue"/> </RDFS:ConstraintPropertyType> </RDFS:allowedPropertyType> </RDFS:Class> <RDFS:Class ID="NecessityValue"> <RDFS:subClassOf RDF:HREF="#Resource"/> </RDFS:Class> <RDFS:NecessityValue ID="OneOrMore"/> <RDFS:NecessityValue ID="ZeroOrMore"/> <RDFS:NecessityValue ID="ZeroOrOne"/> <RDFS:NecessityValue ID="ExactlyOne"/> <RDF:Resource ID="String"/> </RDF:RDF>
<?xml:namespace ns='http://www.w3.org/TR/WD-rdf-syntax/' prefix='RDF' ?> <?xml:namespace ns='http://www.w3.org/TR/WD-rdf-schema/' prefix='RDFS' ?> <RDF:RDF> <RDFS:Class ID="Person"> <RDFS:comment>Class for representing people. Instances correspond to a single person.</RDFS:comment> <RDFS:subClassOf RDF:HREF="#Animal"/> <RDFS:allowedPropertyType> <RDF:PropertyType ID="age"> <RDFS:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#Integer"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="ssn"> <RDFS:comment>Social Security Number</RDFS:comment> <RDFS:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#Integer"/> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#ExactlyOne"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="maritalStatus"> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#ZeroOrOne" /> <RDFS:range href="#MaritalStatus"/> </RDF:PropertyType> </RDFS:allowedPropertyType> </RDFS:Class> <RDFS:Class ID="MaritalStatus"/> <MaritalStatus ID="Married"/> <MaritalStatus ID="Divorced"/> <MaritalStatus ID="Single"/> <MaritalStatus ID="Widowed"/> </RDF:RDF>
<?xml:namespace ns='http://www.w3.org/TR/WD-rdf-syntax/' prefix='RDF' ?> <?xml:namespace ns='http://www.w3.org/TR/WD-rdf-schema/' prefix='RDFS' ?> <RDF:RDF> <RDFS:Class ID="SearchQuery"> <RDFS:allowedPropertyType> <RDF:PropertyType ID="queryString"> <RDF:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#String"/> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#OneOrMore"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="queryService"> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#OneOrMore"/> <RDFS:range> <RDFS:Class ID="SearchService"> <RDFS:subClassOf RDF:HREF="http://www.foo.org/Sch1.rdf#InternetService"/> </RDFS:Class> </RDFS:range> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="result"> <RDFS:range> <RDFS:Class ID="SearchResult"> <RDFS:subClassOf RDF:HREF="http://www.w3.org/TR/WD-rdf-syntax#Resource"/> <RDFS:allowedPropertyType> <RDF:PropertyType ID="queryResultPage"> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#OneOrMore"/> <RDFS:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#WebPage"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="queryResultTitle"> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#OneOrMore"/> <RDFS:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#String"/> </RDF:PropertyType> </RDFS:allowedPropertyType> <RDFS:allowedPropertyType> <RDF:PropertyType ID="queryResultRating"> <RDFS:necessity RDF:HREF="http://www.w3.org/TR/WD-rdf-schema#ZeroOrMore"/> <RDFS:range RDF:HREF="http://www.w3.org/FictionalSchemas/useful_types#FloatZeroToOne"/> </RDF:PropertyType> </RDFS:allowedPropertyType> </RDFS:Class> </RDFS:range> </RDF:PropertyType> </RDFS:allowedPropertyType> </RDFS:Class> </RDF:RDF>
The following issues are currently under consideration by the RDF Schema working group, and will be covered in more detail in a future version of this document.
The number of distinct properties of a particular type that a resource has is defined by "Cardinality". There are a number of possible alternative mechanisms for expressing cardinality (e.g. a fixed, minimum, or maximum number, etc). While it is agreed that the expression of cardinality is necessary, the specifics of this expression are still being discussed. Currently, the RDF schema group is reviewing cardinality constraints that are expressed in both the Unified Modelling Language [UML] and the XML-Data note [XML-Data].
The Resource Description Framework is intended to be flexible and easily extensible; this suggests that a great variety of schemas will be created and that new and improved versions of these schemas will be a common occurence on the Web. Since changing a schema risks breaking other RDF graphs which depend on that schema, this specification requires that a new URI is used whenever an RDF schema is changed. In effect, changing a schema creates a new one; new schemas should have their own URI to avoid ambiguity. Since an RDF Schema URI unambiguously identifies a single version of a schema, RDF processors (and Web caches) should be able to safely store copies of RDF schema graphs for an indefinite period.
The problems of RDF schema evolution share many characteristics with XML DTD version management and the general problem of Web resource versioning. Is is expected that a general approach to these issues will presented in a future version of this document, in co-ordination with other W3C activities. Future versions of this document may also offer RDF specific guidelines: for example, describing how a schema could document its relationship to preceding versions.
Thesauri are a well known example of hierarchical systems for representing the relationships between concepts. The RDF Schema specification provides sufficient resources for creating machine readable representations of thesauri (and other faceted classification systems). Some practical issue for deploying these large schemas are yet to be resolved.
In particular: should it be possible to avoid requiring RDF aware user-agents to download the entire large schema across the network when dereferencing a schema URI? In particular: how, if it all, might a schema namespace URI be modified to obtain alternate forms or fragments of the schema? (one possible scenario being the use of the XML-Link [XML-Link] '|' fragment identifier).
The RDF Schema group is currently discussing the actual representation of a schema. XML namespace mechanisms provide the ability to point to RDF Schemas. What exactly will they be pointing at? Is a RDF Schema a single document with both HTML, for human readability, and an embedded instance of RDF for machine processability? Are there multiple documents? Are there both human-readable and machine-processable portions of RDF that are handled through content negotiation?
We would like to define a mechanism for 'sealing' an RDF Class, so that it becomes illegal to make certain RDF statements involving it. This is loosely analogous to the notion of 'final' classes in Java / OO programming. We might, for example, want to stop people creating subclasses of the class, or creating property types which have that class as their domain. The degree of sophistication required of the class sealing mechanism is as yet unclear: we might (for example) wish to consider the feasibility of using digital signatures in this context.
In order to represent the PICS generic concept, RDF Schemas need to be able to specify inheritance of property values.
The RDF Schema mechanism defines a basic type system. It was not developed to provide every imaginable capability. Instead, in the interests of simplicity and performance, it will be only as expressive as needed to meet the requirements of PICS. (Support for PICS generic capability, which we expect to be in the next public release of this document, will provide enough sophistication for most applications).
The RDF Schema mechanism will need to interact with many externally developed typing systems. There are two broad categories of such systems. The first are externally defined "primitive data types", such as IEEE floating point numbers, Integers, Boolean values, Dates and Times, etc. The second category are external "type systems", which provide features such as inheritance, type inferencing, etc.
At this time we have not even begun to consider the second category. Several factors make it difficult to decide on the appropriate interactions with the first category. RDF models are exchanged as XML document instances. The XML Working group has expressed an interest in working on the problem of data typing, to provide the ability to specify that element content should be interpreted as an integer, a date, a float, left as a string, etc. The interactions between data typing efforts in XML and RDF is currently being discussed by the W3 staff, so this document does not provide a specification for those interactions that is as firm as the specification for elements such as RDFS:Class, RDFS:subClassOf, etc.
However, it is the rough consensus of the RDF Schema WG that it would be useful to show that the current schema system can actually accommodate externally defined primitive data types. Therefore, figure 1, and the relevant portion of the text of the specification, was modified to give a provisional indication of how external types might be handled. The reader is advised that those portions of the specification are highly subject to change, even more so than the rest of this specification. All of those sections have been explicitly marked to refer to this open issue.
The treatment of RDFS:String is still under discussion by the working group, and there is a known inconsistency in the definitions in Appendix A. The range of RDFS:range is RDFS:Class, RDFS:String is intended to be used as the value of RDFS:range properties, but RDFS:String is not a Class. This will be corrected, and the status of RDFS:String will be clarified, in a later version of this document.
In the current draft, constraints on property types (range and necessity) apply across all uses of the property type. Some user communities have expressed an interest in the ability to further constrain a property type in the context a particular class. For example, instances of Animal may have the property biologicalParent. The range of biologicalParent is Animal, i.e., the values of biologicalParent properties are instances of Animal. If we could further constrain the range of a property type in the context of a particular Class, we could express a further constraint that the range of biologicalParent in the context of Person is Person, i.e., the value of biologicalParent properties for Person has to be a Person. Feedback on this issue is solicited.
We believe that there are important interactions between subclassing and at least some constraints, but we do not specify these interactions.
The following represents an initial schema for the simple Dublin Core Element Set [DC].
This schema is provided as the foundation for the Dublin Core semantics. It is believed to be all that is needed to serve as the foundation for future, more elaborate definitions. Future extensions are likely to specify the structure of the values of the properties, which will involve defining classes, the property types that apply to those classes, and some constraints on the property values.
<?xml:namespace ns="http://www.w3.org/TR/WD-RDF-Syntax/" prefix="RDF"?> <?xml:namespace ns="http://www.w3.org/TR/WD-RDF-Schema/" prefix="RDFS"?> <!-- Declaration of the Dublin Core Element Schema Definition --> <RDF:RDF> <RDF:Description ID = "Title"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The name given to the resource, usually by the Creator or Publisher.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Creator"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The person or organization primarily responsible for creating the intellectual content of the resource. For example, authors in the case of written documents, artists, photographers, or illustrators in the case of visual resources.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Subject"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The topic of the resource. Typically, subject will be expressed as keywords or phrases that describe the subject or content of the resource. The use of controlled vocabularies and formal classification schemes is encouraged.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Description"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment> A textual description of the content of the resource, including abstracts in the case of document-like objects or content descriptions in the case of visual resources.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Publisher"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The entity responsible for making the resource available in its present form, such as a publishing house, a university department, or a corporate entity.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Contributor"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>A person or organization not specified in a Creator element who has made significant intellectual contributions to the resource but whose contribution is secondary to any person or organization specified in a Creator element (for example, editor, transcriber, and illustrator).</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Date"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>A date associated with the creation or availability of the resource. Such a date is not to be confused with one belonging in the Coverage element, which would be associated with the resource only insofar as the intellectual content is somehow about that date. Recommended best practice is defined in a profile of ISO 8601 [Date and Time Formats (based on ISO8601), W3C Technical Note, http://www.w3.org/TR/NOTE-datetime] that includes (among others) dates of the forms YYYY and YYYY-MM-DD. In this scheme, for example, the date 1994-11-05 corresponds to November 5, 1994.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Type"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The category of the resource, such as home page, novel, poem, working paper, technical report, essay, dictionary. For the sake of interoperability, Type should be selected from an enumerated list that is currently under development in the workshop series.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Format"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The data format of the resource, used to identify the software and possibly hardware that might be needed to display or operate the resource. For the sake of interoperability, Format should be selected from an enumerated list that is currently under development in the workshop series.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Identifier"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>A string or number used to uniquely identify the resource. Examples for networked resources include URLs and URNs (when implemented). Other globally-unique identifiers, such as International Standard Book Numbers (ISBN) or other formal names are also candidates for this element.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Source"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>Information about a second resource from which the present resource is derived. While it is generally recommended that elements contain information about the present resource only, this element may contain a date, creator, format, identifier, or other metadata for the second resource when it is considered important for discovery of the present resource; recommended best practice is to use the Relation element instead. For example, it is possible to use a Source date of 1603 in a description of a 1996 film adaptation of a Shakespearean play, but it is preferred instead to use Relation "IsBasedOn" with a reference to a separate resource whose description contains a Date of 1603. Source is not applicable if the present resource is in its original form.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Language"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The language of the intellectual content of the resource. Where practical, the content of this field should coincide with RFC 1766 [Tags for the Identification of Languages, http://ds.internic.net/rfc/rfc1766.txt ]; examples include en, de, es, fi, fr, ja, th, and zh.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Relation"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>An identifier of a second resource and its relationship to the present resource. This element permits links between related resources and resource descriptions to be indicated. Examples include an edition of a work (IsVersionOf), a translation of a work (IsBasedOn), a chapter of a book (IsPartOf), and a mechanical transformation of a dataset into an image (IsFormatOf). For the sake of interoperability, relationships should be selected from an enumerated list that is currently under development in the workshop series.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Coverage"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>The spatial or temporal characteristics of the intellectual content of the resource. Spatial coverage refers to a physical region (e.g., celestial sector); use coordinates (e.g., longitude and latitude) or place names that are from a controlled list or are fully spelled out. Temporal coverage refers to what the resource is about rather than when it was created or made available (the latter belonging in the Date element); use the same date/time format (often a range) [Date and Time Formats (based on ISO8601), W3C Technical Note, http://www.w3.org/TR/NOTE-datetime] as recommended for the Date element or time periods that are from a controlled list or are fully spelled out.</RDFS:Comment> </RDF:Description> <RDF:Description ID = "Rights"> <RDF:instanceOf RDF:href="http://www.w3.org/TR/WD-RDF-Syntax#PropertyType"/> <RDFS:necessity RDF:href="http://www.w3.org/TR/WD-RDF-Schema#ZeroOrMore"/> <RDFS:Comment>A rights management statement, an identifier that links to a rights management statement, or an identifier that links to a service providing information about rights management for the resource.</RDFS:Comment> </RDF:Description> </RDF:RDF>