# RDFa

RDFa (für RDF in Attributes) ist eine W3C-Empfehlung, die das Einbetten von RDF-Statements in HTML, XHTML und eine Reihe von XML-Dialekten ermöglicht. Gemeinsam mit Mikroformaten und Microdata zählt es zu den gebräuchlichsten Methoden, (X)HTML-Seiten mit maschinenlesbaren Zusatzinformationen aufzuwerten. RDFa gehört zu den Technologien des Semantic Web.

## Geschichte
### RDFa als Modul von XHTML

Schon 2004 präsentierte Mark Birbeck in seiner Veröffentlichung XHTML and RDF ein Konzept, das die Grundlage für RDFa bildet. (Die Bezeichnung RDFa taucht in diesem Dokument jedoch noch nicht auf.) 2007 fanden diese Ideen in den W3C-Entwurf XHTML RDFa Modules Eingang.

### RDFa 1.0

Im Oktober 2008 wurde RDFa 1.0 zur offiziellen W3C-Empfehlung. Aus seiner Entstehungsgeschichte heraus setzte es stark auf die bewährten Erweiterungsmechanismen der XML-Welt, insbesondere XML-Namensräume. Dies hatte zur Folge, dass RDFa 1.0 nur in XHTML funktionierte und mit klassischem HTML nicht kombinierbar war.

### RDFa 1.1 und RDFa Lite

Die aktuelle Version, RDFa 1.1, wurde im Juni 2012 in den Rang einer W3C-Empfehlung erhoben. Der wesentliche Unterschied zu RDFa 1.0 besteht im Verzicht auf XML-spezifische Eigenheiten. RDFa kann nun gleichermaßen in XML-Dialekten (wie zum Beispiel Atom und SVG) als auch in HTML, insbesondere HTML 5, eingesetzt werden. Gleichzeitig mit RDFa 1.1 entstand RDFa Lite. RDFa Lite ist keine eigene Variante, sondern ein Subset von RDFa, das die Komplexität vor allem für Einsteiger erheblich reduziert.

## Grundlagen

Aus der Sicht von RDF ist RDFa eine von mehreren Möglichkeiten, RDF zu notieren. Im Gegensatz zu reinen RDF-Notationen wie RDF/XML oder Turtle bettet RDFa die RDF-Ausdrücke in eine bereits vorhandene Dokumenten-Auszeichnungssprache (wie HTML) ein. Informationen müssen somit nicht doppelt gepflegt und aktuell gehalten werden. Die für Menschen geschriebenen Informationen auf einer Web-Seite können mittels RDFa so ergänzt werden, dass auch Computerprogramme (z. B. Suchmaschinen) ihre semantische Bedeutung erfassen.
Aus der Sicht von HTML ist RDFa neben Mikroformaten und Microdata eine weitere Möglichkeit, den Inhalt einer Webseite zu strukturieren und für Maschinen verständlich zu machen. RDFa kann dabei auf eine große Menge erprobter Standard-Vokabulare zurückgreifen (FOAF, SKOS, Dublin Core, SIOC, schema.org), ermöglicht aber auch die Definition neuer Begriffe.
Um dies zu erreichen, ergänzt RDFa die sogenannten Gastsprachen im einfachsten Fall um folgende Attribute (Subset RDFa Lite):

### vocab

    legt einen Standard-Namensraum, also das benutzte Vokabular, fest (Ersatz für den XML-Namensraum-Mechanismus)

### prefix

    legt bei Bedarf mehrere weitere Namensräume mit ihren Prefixes fest (Ersatz für den XML-Namensraum-Mechanismus)

### resource

    kann Subjekt oder Objekt der RDF-Aussage bezeichnen

### property

    bestimmt das Prädikat der Aussage

### typeof

    bestimmt den Typ des Subjekts
Mit den oben angeführten Attributen lassen sich fast alle RDF-Ausdrücke modellieren. Zusätzlich kennt die vollständige RDFa-1.1-Spezifikation noch folgende Attribute für fortgeschrittene Anwendungsfälle:

### about

    wird in einzelnen Fällen statt resource zur Festlegung des Subjekts benötigt

### content

    gibt einen Inhalt an, der abweichend vom lesbaren Inhalt in der Gastsprache sein kann (z. B. formatierte Zeitangaben statt um fünf Uhr)

### datatype

    gibt einen eindeutigen Datentyp für einen Wert an

### inlist

    erzeugt RDF-Listenelemente

### rel

    bestimmt das Prädikat

### rev

    bestimmt das Prädikat (wenn das Subjekt in der Reihenfolge nach dem Objekt steht)
Schließlich werden folgende beiden HTML-Attribute von RDFa-Prozessoren nach fixen Regeln ausgewertet und sind Teil der erzeugten RDF-Aussagen:

### src

    Quelle einer Bilddatei, wird bei RDFa zum Objekt

### href

    Hyperlink auf eine andere Web-Adresse, wird bei RDFa zum Objekt

## Beispiele

Das folgende Beispiel verwendet das von großen Suchmaschinenbetreibern erstellte Vokabular von schema.org und die vereinfachte RDFa-Lite-Syntax:
Die Angabe von vocab="http://schema.org/" in Zeile 1 bestimmt, dass alle RDF-Bezeichner im nachfolgenden Baum im Namensraum schema.org zu finden sind. Das Attribut typeof="Product" gleich dahinter gibt an, dass im Folgenden über ein Subjekt vom Typ Produkt gesprochen wird und dass sich alle weiteren Angaben drauf beziehen. In Zeile 3 wird mit property="name" angegeben, dass nun der Produktname folgt. property="image" in Zeile 5 verrät, dass es sich bei der nachfolgenden Bilddatei um die Produktabbildung handelt.
Das Beispiel kann erweitert werden:
In der Zeile 7 wird ein neuer Namensraum, ein neues Vokabular eingebunden. Ebenfalls noch in Zeile 7 gibt resource="acmeXF704.jpg" an, dass sich die weiteren Angaben auf das Bild acmeXF704.jpg beziehen. property="dc:title", property="dc:creator" und property="dc:rights" in den Zeilen 9–11 geben schließlich mit den Ausdrücken des Dublin Core Vokabulars nähere Informationen zu Titel, Urheber und Verwertungsrechten dieses Bildes.

## Verbreitung und praktische Anwendungen

Laut WebDataCommons.org verwendeten im Februar 2012 12,7 % der untersuchten HTML-Seiten irgendeine Form strukturierter Auszeichnung:
| Format | Enthalten in URLs |
| Mikroformate | 49,77 % |
| RDFa | 35,96 % |
| Microdata | 14,26 % |
| in 188 Mio. URLs mit Microdaten ||
Im November 2013 hat sich die Verteilung deutlich zu Gunsten der Formate des W3C (RDFa und Microdata) verschoben, allerdings gibt es auch mehr Seiten, die mehrere Formate benutzen:
| Format | Enthalten in URLs |
| RDFa | 50,53 % |
| Microdata | 47,17 % |
| Mikroformate | 26,44 % |
| in 585 Mio. URLs mit Microdaten ||
Im November 2019 betrug der Anteil der HTML-Seiten mit strukturierten Annotationen bereits 38 %, wobei sich die Verteilung über die verschiedenen Formate deutlich verändert hat:
| Format | Enthalten in URLs |
| Microdata | 43,12 % |
| JSON-LD | 23,70 % |
| Mikroformate | 22,99 % |
| RDFa | 10,19 % |
| in 935 Mio. URLs mit Microdaten ||
Bedeutende Beispiele für die praktische Anwendung sind:
* Schema.org ist eine gemeinsame Initiative von Suchmaschinen (Google, Yahoo!, Bing, Yandex), um ein Basisvokabular zur semantischen Anreicherung von Webseiten zu schaffen. Seit 11. November 2011 unterstützt schema.org offiziell auch RDFa.
* Google unterstützt RDFa bei seinen Rich Snippets.
* Facebook verwendet RDFa beim Open Graph Protocol.
* Drupal ist ein Content-Management-System (CMS), das seit Version 7 RDFa fest eingebaut hat.
* Wordpress, ebenfalls ein CMS, unterstützt RDFa über Plugins.

## Tools

* librdfa – RDFa-Bibliothek in C
* Redland RDF Libraries – Set von Programmen, die auch RDFa-Quellen lesen kann
* RDFa Play – Online-Programm zum Visualisieren der Datenstruktur des RDFa-Codes
* Ruby RDF Distiller – Programm zum Extrahieren der RDF-Triples (unter anderem) aus RDFa in der Programmiersprache Ruby
* Python RDFa 1.1 Distiller and Parser – Programm zum Extrahieren der RDF-Triples aus RDFa in der Programmiersprache Python
* VIE.js – Bibliothek zum Auslesen und Manipulieren von RDFa angereichertem HTML geschrieben in JavaScript

## Alternativen
### Mikroformate

Mikroformate verzichten auf neue Attribute und verwenden ausschließlich die bekannten HTML-Attribute class, rel und rev. Dadurch gibt es keine Probleme bei der Einbindung von Mikroformaten auch bei HTML-Editoren, die auf die Gültigkeit des Codes auf Basis einer bestimmten HTML-Version prüfen.
Verschiedene Mikroformate sind jeweils auf ein einzelnes Themengebiet beschränkt: Es gibt spezielle Mikroformate für Rezepte, für Lebensläufe, für soziale Netzwerke und so weiter. Das vereinfacht die Anwendung, sofern es genau um diese Themen geht. Erweiterungen sind nicht jederzeit möglich, sondern müssen durch die Community abgesegnet werden. Eine Verknüpfung der Daten im Sinne von Linked Data ist bei Mikroformaten nicht möglich.

### Microdata

Microdata entstand gemeinsam mit HTML 5. Die Spezifikation hat große Ähnlichkeit mit RDFa. Die tatsächlichen Unterschiede bestehen im Datenmodell, das den beiden Spezifikationen zugrunde liegt. RDFa ist mit dem ausdrücklichen Ziel entstanden, das vorhandene RDF-Konzept in (X)HTML umzusetzen. Dementsprechend gelingt auch das Mapping zwischen RDF und RDFa gut. Microdata entstand mit anderen Anforderungen. Der Austausch mit RDF-Quellen funktioniert nicht in jeder Konstellation eindeutig.