RSS 1.0-Module

(Auszug aus "Newsfeeds mit RSS und Atom" von Heinz Wittenbrink, erschienen bei Galileo Press, 2005)

Dublin Core

Das Dublin Core-Modul gehört zum RSS 1.0-Standard, auch wenn es ausdrücklich als Modul definiert ist und daher einen eigenen Namensraum hat. Auf diese Weise wird vermieden, dass innerhalb von RSS Dinge ein weiteres Mal definiert werden, für die es bereits eine RDF-Version und ein RDF/XML-Vokabular gibt.

Die Integration des DublinCore-Moduls erlaubt es außerdem, zukünftige Erweiterungen dieses Moduls weiter zu nutzen. Auch für die Definition der Dublin Core-Elemente beruft sich die Spezifikation des Moduls auf den Dublin Core-Standard selbst.

Als "Dublin Core" wird eine Menge von Metadaten bezeichnet, die eine Arbeitgruppe von im Internet tätigen Bibliothekaren entwickelt hat. Die Gruppe traf sich im Jahr 1995 zum ersten Mal in Dublin (nicht in Dublin, Irland, sondern im amerikanischen Dublin, Ohio!), daher der Name "Dublin Core Metadata Initiative". Der Dublin Core wird aktiv weiterentwickelt. Inzwischen liegen auch verschiedene Erweiterungen für unterschiedliche Anwendungsgebiete vor. Das RSS 1.0-Modul bezieht sich auf die Version 1.1 des Dublin Core Metadata Set von 1999.

Beim Dublin Core Metadata Set handelt es sich nicht um eine RDF-Anwendung; RDF ist lediglich eine der Möglichkeiten, diese Daten auszudrücken. Dublin Core Metadaten lassen sich z. B. auch ohne RDF in die Meta-Elemente im Header eines HTML-Dokuments einfügen. Es gibt auch ein XML-Vokabular für die Dublin Core-Elemente, das unabhängig von RDF ist. Der Vorteil der Verwendung von RDF besteht aber auch hier darin, dass die Semantik der Sprachelemente so klar definiert ist, dass sich die Daten leicht mit anderen RDF-Daten kombinieren lassen.

Der URI des Namensraums der Dublin Core-Elemente ist "http://purl.org/dc/elements/1.1/". Als Präfix für diesen Namensraum wird meist dc verwendet. Wie bei allen Namensraum-Präfixen handelt es sich dabei um eine bloße Konvention, entscheidend für die Identifikation des Namensraums ist allein sein URI.

Den Dublin Core bilden 15 Elemente, nämlich title, creator, subject, description, publisher, contributor, date, type, format, identifier, source, language, relation, coverage und rights. Ich werden sie im Folgenden mit dem üblichen Präfix verwenden und z. B. von dc:creator und dc:subject sprechen. Alle diese Elemente können Nachkommen von channnel, item, image und textinput sein. Im RDF-Datenmodell handelt es sich bei den Dublin Core-Elementen um Verben oder Eigenschaften. Das entsprechende Subjekt wird durch einen URI identifiziert, im Falle von RSS entweder durch den URI des Channels bzw. Feeds oder durch den URI des beschriebenen Items, eines Bildes oder eines Eingabefelds. Der Wert der Eigenschaft ist entweder ein Literal, also ein String, oder ein eigener Knoten.

Die Elemente des Dublin Core dienen dazu, Metadaten im engeren Sinn aufzunehmen. Sie haben keine strukturelle Funktion (wie die RSS 1.0-Elemente), und sie haben auch keine spezifische Funktion im Publikationsprozess.

Das Dublin Core-Modul sieht keine Attribute dieser Elemente vor. Heute wird vielfach als Wert des Attributs scheme angegeben, nach welchen Regeln der Inhalt eines der Elemente gebildet wird, ob es sich also z. B. um ein bestimmtes kontrolliertes Vokabular handelt.

In der Spezifikation des Moduls wird der Inhalt aller Element als (#PCDATA) definiert, damit sind weitere XML-Elemente als Nachkommen der Dublin Core-Elemente nicht erlaubt. Die Verfasser des Dublin Core-Moduls sprechen in der Beschreibung des Datenmodells ausdrücklich davon, dass sie erwarten, dass im Lauf der Entwicklung eine reichere Semantik an die Stelle der derzeit 2.000 meist verwendeten Literale treten wird.

Als Beispiel verwenden sie die Kombination des RSS-Taxonomie-Moduls mit der Angabe von einfachen Literalen innerhalb des Elements rdf:value; eine solche Praxis erlaubt es der verarbeitenden Software festzustellen, welche der angebotenen Daten verwendet werden sollen. Software, die die Angaben zur Taxonomie nicht beherrscht, kann mit den Strings arbeiten, die als Inhalt des Elements rdf:value erscheinen. Die Spezifikation verwendet folgendes Beispiel:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns="http://purl.org/rss/1.0/">
   ...
   <item rdf:about="http://c.moreover.com/click/here.pl?r123">
      <title>XML: A Disruptive Technology</title>
      <link>http://c.moreover.com/click/here.pl?r123</link>
      <dc:subject>
         <rdf:Description>
            <taxo:topic rdf:resource="http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/"/>
            <rdf:value>XML</rdf:value>
         </rdf:Description>
      </dc:subject>
      <dc:subject>
         <rdf:Description>
            <taxo:topic rdf:resource="http://www.oreillynet.com/meerkat/?c=cat23"/>
            <rdf:value>Data: XML</rdf:value>
         </rdf:Description>
      </dc:subject>
   </item>
... 

Die Semantik der Elemente des Dublin Core-Moduls ist davon unabhängig, welche Objekte beschrieben sind, ob sie sich also auf Channels, Items, Bilder oder Eingabefelder beziehen. Allerdings beschreiben die Metadaten, die sich auf das Element channel beziehen, den Channel oder Feed selbst, während die Metadaten zu den einzelnen Daten sich auf die in dem Channel beschriebenen Informationsobjekte beziehen. Eine gute Zusammenfassung der Bedeutung der Elemente bietet Using Dublin Core in RSS feeds von Horst Prillinger, der hier vor allem erläutert, wie sie bei Weblogs zu verwenden sind.

Das Element dc:title

Das Element title dient dazu, den Titel des beschriebenen Subjekts aufzunehmen. Dieses Element ist innerhalb des Moduls überflüssig, weil RSS 1.0 wie die anderen RSS-Formate ein eigenes Element mit dem Namen title besitzt, das genau dieselbe Funktion hat. Auch das RSS 2.0-Element title hat dieselbe Bedeutung.

Das Element dc:creator

creator bezieht sich laut Spezifikation auf die "Einheit, die in erster Linie dafür verantwortlich ist, den Inhalt der Ressource zu machen". Gemeint ist der Urheber, also z. B der Autor eines Eintrags oder der verantwortlichee Redakteur eines Newsfeeds. Bei einem zitierten Eintrag oder einem Link ist hier der Originalautor zu nennen.

Im Gegensatz zu dem Element author bei RSS 2.0 soll hier der Name des Urhebers, nicht nur seine E-Mail-Adresse genannt werden.

Das Element dc:subject

Den Inhalt von dc:subject bilden die behandelten oder dargestellten Themen oder Topics. dc:subject wird z. B. bei Weblog-Systemen mit Kategorien dazu benutzt, den Namen der Kategorie anzugeben. Die Dublin Core-Spezifikation selbst empfiehlt, hier Werte aus einem kontrollierten Vokabular oder formalen Klassifikationsschema zu benutzen. (Solche Klassifikationssysteme bieten z. B.: Library of Congress Online Catalogue, die Schlagwortnormdatei der Deutschen Bibliothek und das Dewey Decimal Classification System.)

Das Element dc:description

Das Dublin Core-Element description nimmt wie das von den übrigen RSS-Formaten her bekannte Element description die Beschreibung eines Objekts auf; auch bei RSS 1.0 wird als Beschreibung häufig der HTML-Inhalt verwendet, Markup muss dabei geschützt sein.

Das Element dc:publisher

Mit "Publisher" ist die Entität gemeint, die dafür verantwortlich ist, eine Ressource zugänglich zu machen. Innerhalb von dc:publisher lässt sich ein Verlag oder ein Betreiber einer Website angeben.

Das Element dc:contributor

dc:contributor nimmt weitere Beteiligte irgendwelcher Art auf. Es handelt sich nicht um die primären Urheber, sondern um Personen und andere Entitäten, die diese unterstützen.

Das Element dc:date

dc:date ist der Container für das Publikationsdatum. Laut der Beschreibung der Dublin Core-Elemente bezieht es sich auf das Schaffen oder die Zugänglichkeit der Ressource. Das Element entspricht also bei RSS 2.0 sowohl pubDate als auch lastBuildDate. Als Datumsformat ist ISO 8601 zu verwenden, wie es den Empfehlungen des W3C zu Zeit- und Datumsangaben entspricht.

Das Element dc:type

In dc:type kann beschrieben werden, welcher Art das beschriebene Objekt ist, ob es sich also z. B. um ein Buch, einen Aufsatz oder einen Weblog-Eintrag handelt. Die Dublin Core-Initiative hat dafür ein eigenes Vokabular entwickelt (DCMI Type Vocabulary). Horst Prillinger schlägt vor, für Artikel "Text", für Audioblogs "Sound", für Fotoblogs "StillImage" und für Videoblogs "MovingImage" zu benutzen.

Das Element dc:format

Inhalt von dc:format ist eine technische Formatangabe. Bei Online-Dokumenten empfiehlt es sich hier, den MIME-Typ anzugeben. Hier könnte z. B. bei einem Bild explizit angegeben werden, ob es im JPEG-, GIF- oder PNG-Format vorliegt.

Das Element dc:identifier

dc:identifier bezieht sich auf einen Identifizierer irgendwelcher Art; er muss im gegebenen Kontext eindeutig sein. Die Bedeutung entspricht der von guid bei RSS 2.0. In einem RSS 1.0-Dokument wird als Identifizierer bei item und channel bereits der URI verwendet.

Das Element dc:source

dc:source erlaubt explizite Quellenangaben. Das Element entspricht dem Element source bei RSS 2.0. Allerdings wird dort der Name der Quelle genannt, während hier ein Verweis, im Falle von Online-Dokumenten ein Link, eingefügt werden sollte.

Das Element dc:language

Hier kann die Sprache des Eintrags oder Channels entsprechend RFC 3066 angegeben werden, das selbst auf ISO 639.2 (Codes for the Representation of Names of Languages) basiert.

Das Element dc:relation

dc:relation dient der Angabe von Beziehungen zu anderen Objekten. Prillinger schlägt vor, dieses Element für Trackback-URLs zu benutzen, für die vielfach trackback:about verwendet wurde.

Das Element dc:coverage

Den Inhalt von dc:coverage bilden die Angaben von Zeiträumen oder geografischen Räumen. Auch hier sollte auf ein kontrolliertes Vokabular zurückgegriffen werden, z. B. auf den Getty Thesaurus of Geographic Names.

Das Element dc:rights

dc:rights nimmt Angaben von Rechteinhabern auf. Vielfach handelt es sich dabei um Copyright-Vermerke.

Syndication Module

Das Syndikationsmodul ist das zweite der RSS 1.0-Standardmodule. Es dient dazu, Aggregatoren und ähnliche Programme darüber zu informieren, wie oft ein Feed aktualisiert wird. Seine Funktionen entsprechen also denen von skipHours und skipDays bei RSS 2.0. Es stützt sich auf das von Ian Davis entwickelte Open Content Syndication Format OCS. Der Namensraum des Moduls wird durch den URI "http://purl.org/rss/1.0/modules/syndication/" identifiziert, das Default-Präfix ist sy. Seine drei Elemente sind Nachfahren von channel:

Das Element sy:updatePeriod

Dieses Element beschreibt, in welchem Rhythmus ein Feed aktualisiert wird. Mögliche Werte sind hourly, daily, weekly, monthly und yearly.

Das Element sy:updateFrequency

Dieses Element erlaubt es, zusätzlich anzugeben, wie oft ein Feed in der angegebenen Aktualisierungsperiode aktualisiert wird, wenn z. B. zweimal am Tag ein Update erfolgt. Der Wert ist eine positive ganze Zahl. Wenn das Element fehlt, wird angenommen, dass der Feed einmal pro angegebener Periode aktualisiert wird.

Das Element sy:updateBase

In diesem Element wird mit den vom W3C empfohlenen Datumsformaten (W3C - Date and Time Formats) angegeben, auf welches Ausgangsdatum sich die Angaben in den beiden anderen Elementen beziehen.

Content Module

Das Content-Modul enthält Elemente, die den tatsächlichen Inhalt von Websites aufnehmen können. Dieses Element kann man verwenden, um nicht Markup in den Elementen rss:description unterbringen zu müssen. Es lässt sich jedoch auch für andere Inhaltsformate verwenden und hat damit ähnliche Aufgaben wie das Element enclosure bei RSS 2.0. Der URI des Namensraums ist "http://purl.org/rss/1.0/modules/content/", als Default-Präfix wird content benutzt.

Das Element content:items

Dieses Element ist ein Unterelement entweder von item oder von channel. Es dient dazu, eine ungeordnete Folge von content:item-Elementen aufzunehmen, die den eigentlichen Inhalt einschließen. Dazu muss wiederum ein RDF-Container verwendet werden, in diesem Fall ist er vom Typ rdf:Bag. rdf:Bag unterscheidet sich vom bereits vorgestellten Element rdf:Seq nur dadurch, dass die Reihenfolge der rdf:li-Elemente, die seinen Inhalt bilden, nicht festgelegt ist. Innerhalb jedes der Elemente des Typs rdf:li befindet sich dann ein Element des Typs content:item.

Das Element content:item

Dieses Element enthält den eigentlichen Inhalt. Es ist Nachkomme eines Elements rdf:li, das wiederum Nachkomme des Elements rdf:Bag ist, das auf content:items folgt. Wenn der Inhalt im Web identifizierbar ist, hat das Element ein Attribut rdf:about mit dem entsprechenden URI. Das Element content:item muss ein Element content:format enthalten. Außerdem muss es ein Element des Typs rdf:value enthalten, wenn der Inhalt nicht über den URI in rdf:about bezogen werden kann. Optional ist schließlich ein Element des Typs content:encoding.

Das Element content:format

Das Element content:format enthält die obligatorische Formatangabe für content:item. Es hat ein Attribut rdf:resource, dessen Wert der URI des entspechenden Formats ist. Empfohlen wird, die Liste der URIs zu verwenden, die sich auf der Website der Resource Directory Description Language findet. RDDL ist eine Sprache zur Beschreibung von Informationen über im Web verwendete Vokabulare. RDDL-Dokumente können sich unter den URIs von Namensräumen befinden und auf Dokumentationsmaterial zu dem entsprechenden Format hinweisen.

Das Element rdf:value

rdf:value enthält den Inhalt des content:item, falls nicht einfach mit einem URI auf ihn verwiesen wird. Wenn es sich bei dem Inhalt um nicht kodiertes XML handelt, sollte hier das Attribut rdf:parseType="literal" verwendet werden.

Das Element content:encoding

Dieses Element gibt an, wie der Inhalt kodiert ist. Mit der Kodierung ist hier eine Methode gemeint, den Inhalt in das Element einzuschließen; als Beispiel nennt die Spezifikation wohlgeformtes XML. Auch bei diesem Element erfolgt die Angabe, indem als Wert des Attributs rdf:resource ein URI angegeben wird. Im Fall von wohlgeformtem XML ist dieser URI "http://www.w3.org/TR/REC-xml#dt-wellformed", also der URI der XML-Spezifikation (mit einem zusätzlichem Fragment-Identifizierer). Wenn das Element content:encoding fehlt, soll davon ausgegangen werden, dass der Inhalt als Character Data (#PCDATA) vorliegt.

Das Element content:encoded

Bei diesem Element handelt es sich bisher lediglich um einen Vorschlag. Das Element soll dazu dienen, eine durch Entity-Referenzen kodierte oder in eine CDATA-Sektion eingeschlossene Version des Inhalts eines item-Elements aufzunehmen. Gegenüber den anderen Elementen würde das eine erhebliche Vereinfachung bedeuten.

Vorgeschlagene Module

Über die zahlreichen vorgeschlagenen Module informiert die Referenz zu den RSS 1.0-Modulen ausführlich. Von besonderer Bedeutung unter ihnen sind mod_aggregation, mit dem sich Feeds aggregieren lassen, und mod_dcterms, mit dem sich das qualifizierte Dublin Core Metadaten-Vokabular zur Beschreibung von Items verwenden lässt.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Newsfeeds mit RSS und Atom bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: