| RDF Schema | |
|---|---|
| Resource Description Framework Schema | |
| Abbreviation | RDFS |
| Status | W3C Recommendation |
| Year started | January 5, 1999; 26 years ago (1999-01-05)[1][2] |
| First published | April 30, 2002; 23 years ago (2002-04-30)[2] |
| Latest version | 1.1 (Recommendation) February 25, 2014; 11 years ago (2014-02-25)[3] |
| Organization | |
| Editors |
|
| Base standards | RDF |
| Related standards | |
| Domain | |
| Website | www |
RDF Schema (Resource Description Framework Schema, variously abbreviated asRDFS,RDF(S),RDF-S, orRDF/S) is a set of classes with certain properties using theRDF extensibleknowledge representation data model, providing basic elements for the description ofontologies. It uses various forms of RDF vocabularies, intended to structure RDFresources. RDF and RDFS can be saved in atriplestore, then one can extract some knowledge from them using a query language, likeSPARQL.
The first version[1][4] was published by the World-Wide Web Consortium (W3C) in April 1998, and the finalW3C recommendation was released in February 2014.[3] Many RDFS components are included in the more expressiveWeb Ontology Language (OWL).
RDFS constructs are the RDFS classes, associated properties and utility properties built on thevocabulary of RDF.[5][6][7]
rdfs:Resourcerdfs:ClassA typical example of an rdfs:Class isfoaf:Person in the Friend of a Friend (FOAF) vocabulary.[8] An instance offoaf:Person is a resource that is linked to the classfoaf:Person using therdf:typeproperty, such as in the following formal expression of thenatural-language sentence: 'John is a Person'.
ex:John rdf:type foaf:Person
The definition ofrdfs:Class is recursive:rdfs:Class is the class of classes, and so it is an instance of itself.
rdfs:Class rdf:type rdfs:Class
The other classes described by the RDF and RDFS specifications are:
rdfs:Literalrdfs:Datatyperdfs:Datatype is both an instance of and a subclass ofrdfs:Class. Each instance ofrdfs:Datatype is a subclass ofrdfs:Literal.rdf:XMLLiteralrdf:XMLLiteral is an instance ofrdfs:Datatype (and thus a subclass ofrdfs:Literal).rdf:PropertyProperties are instances of the classrdf:Property and describe a relation between subject resources and object resources. When used as such a property is apredicate (see alsoRDF: reification).
rdfs:domainrdf:Property declares the class of thesubject in atriple whose predicate is that property.rdfs:rangerdf:Property declares the class or datatype of theobject in a triple whose predicate is that property.For example, the following declarations are used to express that the propertyex:employer relates a subject, which is of typefoaf:Person, to an object, which is of typefoaf:Organization:
ex:employer rdfs:domain foaf:Personex:employer rdfs:range foaf:Organization
Given the previous two declarations, from the triple:
ex:John ex:employer ex:CompanyX
can be inferred (resp. follows) thatex:John is afoaf:Person, andex:CompanyX is afoaf:Organization.
rdf:typerdfs:subClassOfFor example, the following declares that 'Every Person is an Agent':
foaf:Person rdfs:subClassOf foaf:Agent
Hierarchies of classes support inheritance of a property domain and range (see definitions in the next section) from a class to its subclasses.
rdfs:subPropertyOfrdf:Property that is used to state that all resources related by one property are also related by another.rdfs:labelrdf:Property that may be used to provide a human-readable version of a resource's name.rdfs:commentrdf:Property that may be used to provide a human-readable description of a resource.rdfs:seeAlsordf:Property that is used to indicate a resource that might provide additional information about the subject resource.rdfs:isDefinedByrdf: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.Anentailment regime defines whether the triples in a graph are logically contradictory or not. RDFS entailment[11] is not very restrictive, i.e. it does not contain a large amount of rules (compared, for example, toOWL) limiting what kind of statements are valid in the graph. On the other hand it is also not very expressive, meaning that the semantics that can be represented in a machine-interpretable way with the graph is quite limited.
Below in a simple example of the capabilities and limits of RDFS entailment, we start with a graph containing the following explicit triples:
foo:SomeGiraffe rdf:type bar:Animal.foo:SomeElephant rdf:type bar:Elephant.foo:SomeZoo rdf:type bar:Zoo.bar:livesInZoo rdfs:domain bar:Animal.bar:livesInZoo rdfs:range bar:Zoo.foo:SomeElephant bar:livesInZoo foo:SomeZoo.
Without enabling inferencing with RDFS entailment, the data we have does not tell us whetherfoo:SomeElephant is abar:Animal. When we do RDFS-based inferencing, we will get the following extra triple:
foo:SomeElephant rdf:type bar:Animal.
Therdfs:domain statement dictates that any subject in triples wherebar:livesInZoo is the predicate is of typebar:Animal. What RDFS entailment is not able to tell us is the relationship betweenbar:Animal andbar:Elephant. Due to inferencing we now know thatfoo:SomeElephant is bothbar:Animal andbar:Elephant so these classes do intersect but there is no information to deduce whether they merely intersect, are equal or have a subclass relationship.
In RDFS 1.1, the domain and range statements do not carry any formal meaning and their interpretation is left up to the implementer. On the other hand in the 1.2 Working draft they are used as entailment rules for inferencing the types of individuals. Nevertheless in both versions, it is very clearly stated that the expected functionality of range is "the values of a property are instances of one or more classes" and domain "any resource that has a given property is an instance of one or more classes".
The example above demonstrated some of the limits and capabilities of RDFS entailment, but did not show an example of a logical inconsistency (which could in layman terms be interpreted as a "validation error"), meaning that the statements the triples make are in conflict and try to express contradictory states of affairs. An example of this in RDFS would be having conflicting datatypes for objects (e.g. declaring a resource to be of typexsd:integer and being also declared to bexsd:boolean when inferencing is enabled).
RDF vocabularies represented in RDFS include:[10]
madsrdf:prominentFamilyMember.[16]