I've been reading about Semantic Web technologies such as RDF/RDFS and "ontology", but was wondering how each of these are related? At the moment the terms all seem interchangeable, or I'm not understanding a fundamental concept here.
RDF is a concept or a way of describing things. The concept of RDF is that you are describing / defining anything using sets of THREE terms. Ex: "Ana has apples", "Apples are tasty", these two strings are perfectly valid RDF descriptions (conceptually speaking). In doesn't matter where and how you store described data, in files, or papers, or drawings on the sand, or paintings on a wall. The main important thing is that the data is described as triples (using the RDF concept). The semantic web is built using this concept (RDF).
Note: A vocabulary is just a set of term definitions stored in files or somewhere else. These terms have the purpose to be generally reused for describing data. So, you have your data, you have a vocabulary, now you can start adding descriptions to your data using the terms from the vocabulary.
RDF is a standard vocabulary that provides a set of terms. You can see the vocabulary here
The terms provided by the RDF vocabulary help you make some basic standard descriptions like this:
Let's say you have the following data: "Ana" and "Person". So, to describe in a standard semantic web manner that your "Ana" is a "Person", you have to store the following triple somewhere:
PREFIX rdf:<https://www.w3.org/1999/02/22-rdf-syntax-ns>
<http://yourdomain.com/Ana> rdf:type <http://yourdomain.com/Person>
The "rdf:type
" term is defined in the RDF vocabulary and whenever you are using it you are describing the fact that the data that is in front of it (the subject) is an instance of the data (class) that is placed after it (the object).
In general the RDF vocabulary provides terms for creating basic descriptions of instances of classes.
RDFS is a standard vocabulary just like RDF. If in the RDF vocabulary you have terms that help you give a basic definition/description of instances, in the RDFS vocabulary you have terms that help you define/describe classes. For example you have the definition of the term rdfs:subClassOf. With this term you can describe the fact that a class is a subclass of another.
PREFIX rdfs:<https://www.w3.org/2000/01/rdf-schema#>
<http://yourdomain.com/Teacher> rdfs:subClassOf <http://yourdomain.com/Person>
So, RDF has terms for creating instances, RDFS has terms for creating classes. By using both you can start making more detailed descriptions of your data. If you want to make even more complex descriptions, than you can use OWL which is just another vocabulary that provides a set of terms able to do that. OWL terms are defined using RDF and RDFS terms.
Note: Some RDF terms are defined using RDFS terms, and some RDFS terms are defined using RDF terms. You can check the links to the vocabularies if you want.
"Ontology" is just another name for "vocabulary". These two are the same thing. You could think of an ontology as a more complex vocabulary, but this is not a rule. This is from the official site:
'There is no clear division between what is referred to as “vocabularies” and “ontologies”.'