RDF Schema (RDFS)
RDF provides the data model explaining how to build a graph.
RDFS is a vocabulary, in RDF, that explains how nodes of a graph relate.
The RDFS vocabulary allows you to:
- Define super-classes and sub-classes of nodes and properties. "Car is a subclass of Automobile."
- Tell what connections are allowed, between SubjectPredicateObject. "Cars can have a comesInColor predicate that hooks up to a Color."
- Document classes and properties, with labels and comments.
- Tell how to look up other graph segments, from somewhere else on the Internet. This gives us NetworkedData.
- Talk about containers and membership in the abstract. RDF already describes "Bags" (unordered collections) and "Sequences" (ordered collections, like lists). RDFS grants "Containers" to talk about them abstractly.
Describing the connection between nodes, we need to be able to talk about the types of nodes that we encounter. Recall that class is specified by the rdf:type property (ClassIsTypeProperty.) That allows you to point to the class, but the type property itself doesn't let you say things about the class.
RDFS grants you terminology to talk about classes and the class hierarchy, as demonstrated here:
We see that
rdfs:subClassOf is defined by RDFS, but that the raw class declaration-
rdf:type- is pure RDF. This diagram does not demonstrate sub-properties.
- RDF Vocabulary Description Language 1.0: RDF Schema - Official description of RDFS. It doesn't just describe RDFS, it also talks about RDF language features that can be used to talk about RDF. For example, it describes RdfReification, even though it is entirely defined by RDF.
I'm working to understand RDFS; If I've gotten things majorly wrong, please correct.
It's still incredibly confusing to me why some things are RDF, and some things are RDFS.
- Container, ContainerMembershipProperty, and member - RDFS
- Bag, Seq, Alt - RDF.
I don't even understand why "Bag" and "Seq" are part of RDF.
It would seem that all of those things belong to some sort of "Collections" description, or something like that.
I'm also having trouble seperating the RDFS documentation from RDFS.
For instance, the RDFS documentation explains RdfReification, even though every single predicate it describes is part of RDF..!