# RDF-Schema

Das Resource Description Framework Schema (RDFS) ist wie RDF eine W3C-Empfehlung. Ebenso wie XML im konkreten Anwendungsfall die Definition eines speziellen Dokumenttyps benötigt, z. B. als Dokumenttypdefinition (DTD), legt das RDF-Modell nur eine Syntax für den gemeinsamen Datenaustausch fest. Zur Interpretation von in RDF formulierten Aussagen bedarf es eines gemeinsamen Vokabulars wie zum Beispiel Dublin Core. Ein solches Vokabular wird auch Ontologie genannt, wenn es gleichzeitig Regeln für die richtige Verwendung der in ihm definierten Ressourcen enthält.
RDF-Schema (RDFS) stellt ein Vokabular zur Verfügung, mit dessen Hilfe eine bestimmte Anwendungsdomäne modelliert werden kann. Außerdem können die in der Domäne vorkommenden Ressourcen, ihre Eigenschaften und Relationen untereinander durch RDFS repräsentiert werden. Man kann also mit RDFS einfache Ontologien formalisieren. RDFS liegt die Idee eines mengentheoretischen Klassenmodells zugrunde. Wichtig ist hierbei, dass Klassen und Eigenschaften separat voneinander modelliert werden. Das Klassenkonzept macht es möglich, eine formale Beschreibung der Semantik der verwendeten RDF-Elemente festzulegen.
Neben RDFS existieren eine Reihe weiterer Ontologie-Beschreibungssprachen wie F-Logic, DAML+OIL. Die Web Ontology Language (OWL), der offizielle Nachfolger von DAML+OIL, soll die Unzulänglichkeiten von RDFS beseitigen. OWL basiert teilweise auf Beschreibungslogik und wurde durch mengentheoretische Konstrukte angereichert.

## RDF-Schema-Begriffe

RDF selbst stellt als einzigen Begriff zur Typisierung das type-Element zur Verfügung. Darüber hinaus werden aber, um beispielsweise eine Taxonomie zu erzeugen, weitere Begriffe (Klasse, Eigenschaft, Ableitung, …) benötigt. Mit den folgenden Begriffen ist es möglich, ein formales Vokabular für einen bestimmten Wissensbereich festzulegen, also eine primitive Ontologie zu erstellen:
* Klassen
** Class: Der Klassenbegriff. Legt ein abstraktes Objekt fest und dient in Verbindung mit rdf:type zur Erzeugung von Instanzen.
** Resource: Jede Entität in einem RDF-Modell ist eine Instanz dieser besonderen Klasse.
** Property: Die Basisklasse für Eigenschaften. Ist eine Unterklasse von Resource.
** Literal: Klasse für Literalwerte, also Zeichenketten etc.
* Eigenschaften
** subClassOf: Eine transitive Eigenschaft zur Festlegung von Vererbungshierarchien von Klassen.
** subPropertyOf: Eine transitive Eigenschaft zur Festlegung von Vererbungshierarchien von Eigenschaften.
** domain: Legt den Datentyp (die Klasse) des Subjekts einer Eigenschaft fest. So könnte zum Beispiel als domain der Eigenschaft hatKFZKennzeichen die Klasse Auto festgelegt werden. Daraus folgt, dass alle Subjekte mit der Eigenschaft hatKFZKennzeichen vom Typ Auto sind (aus hatKFZKennzeichen domain Auto und einDing hatKFZKennzeichen L-XYZ-00000 folgt einDing istEin Auto). Der Umkehrschluss, dass als Subjekte einer Eigenschaft nur Klassen der spezifizierten domain auftreten können, ist nicht korrekt.
** range: Legt den Datentyp des Objekts einer Eigenschaft fest. Damit kann zum Beispiel ausgesagt werde, dass der Wert einer Eigenschaft hatFarbe eine Farbe ist (aus hatFarbe range Farbe und einBall hatFarbe blau folgt blau istEine Farbe). Der Umkehrschluss, dass als Objekt einer Eigenschaft nur Klassen der range auftreten können, ist nicht korrekt.

## Formale Definition von RDF mittels RDF-Schema

Auf der Internetseite des World Wide Web Consortium gibt es eine formale Definition des RDF-Modells in RDF-Schema. Darin sind folgende Ressourcen definiert:
* Klassen
** Statement: Tripel einer Aussage
** Property: Eine Eigenschaft, die als Prädikat einer Aussage benutzt werden kann.
** Bag: Ungeordnete Menge von Ressourcen
** Seq: Geordnete Menge von Ressourcen
** Alt: Menge von alternativen Ressourcen
* Eigenschaften
** subject: Weist einer Aussage eine Ressource als Subjekt zu
** predicate: Weist einer Aussage eine Eigenschaft als Prädikat zu
** object: Weist einer Aussage ein Objekt zu
** type: Identifiziert die Klasse einer Ressource
** value: Einfache Zuweisung einer Eigenschaft