The following vocabularies are essential, because they describe… vocabularies. Let’s get meta for a moment.
RDF
Prefix and namespace
- rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
Description
RDF and RDFS are the foundation on which all other vocabularies are built. They enable the description of a graph of rdfs:Resources, each identified by an IRI.
RDF graphs are based on the notion of rdf:statement: a statement can be compared to a very simple sentence <subject, verb, complement>, e.g. Charlie is a Person
. In the RDF terminology, we say that an rdf:statement has an rdf:subject (the resource the statement is about), an rdf:property (the verb of the sentence, defining a characteristic of the subject) and an rdf:object (the value for the property for the subject). Therefore, the sentence Charlie is a Person
could be expressed in RDF as [ex](http://example.org/ns#):Charlie rdf:type [ex](http://example.org/ns#):Person
, where <http://example.org/ns#Charlie>
is the subject, rdf:type
the property, and <http://example.org/ns#Person>
the object. Subject and predicate are necessarily individuals identified with an IRI, while the object is either an individual with an IRI, or a literal with a value (e.g. string or int).
Main concepts
- Typing a Resource:
<resource IRI> rdf:type <type IRI>
, where the type is an rdfs:class
RDFS
Prefix and namespace
- rdfs: http://www.w3.org/2000/01/rdf-schema#
Description
RDFS enables to build hierarchies of concepts by introducing the notion of rdfs:class, and the rdfs:subClassOf property. Similarly, rdf:properties can be organized hierarchically by using the rdfs:subPropertyOf property. RDFS also enables describing the types that can be attached to rdfs:resources when they are associated with an rdf:property by specifying the property’s rdfs:domain (the type of its subject) and rdfs:range (the type of the object). For instance, let’s imagine ex:hasAuthor
, a property expressing the fact that someone is the author of a book. If we state that ex:hasAuthor rdfs:domain ex:Book
and that ex:hasAuthor rdfs:range ex:Person
, effectively what we say is that anytime we find a statement such as ex:aBook ex:hasAuthor ex:someone
, we know that ex:aBook
is of type ex:Book
, and that ex:someone
is a ex:Person
Main concepts
- Subclassing:
<subclass IRI> rdfs:subClassOf <class IRI>
- Specifying a property’s domain:
<property IRI> rdfs:domain <type IRI>
- Specifying a property’s range:
<property IRI> rdfs:range <type IRI>
- Adding a human-readable name to a concept identified by an IRI:
<IRI> rdfs:label "Some name"
- Adding a longer comment describing a concept:
<IRI> rdfs:comment "Some comment"
- Redirecting to another information source:
<IRI> rdfs:seeAlso <IRI>