The following vocabularies are essential, because they describe… vocabularies. Let’s get meta for a moment.
Prefix and namespace
- rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
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).
- Typing a Resource:
<resource IRI> rdf:type <type IRI>, where the type is an rdfs:class
Prefix and namespace
- rdfs: http://www.w3.org/2000/01/rdf-schema#
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
<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>