Hallo,
ich bin momentan dabei für Validome einen RSS/RDF – Validator zu proggen.
Der Feed Validator von Mark Pilgrim und Sam Ruby ist übrigens als Open Source veröffentlicht. Zusätzlich zu den Standardvorgaben der diversen RSS- und Atom-Versionen soll dieser Validator auch Support für einige häufig benutzte Namensräume haben.
Vielleicht sollte man dazu sagen, dass der Feed-Validator jedes noch so unsinnige und kaputte RSS-1.0-Dokument als valide einstuft. Es werden nur ein paar Merkmale überprüft. Dazwischen können alle möglichen Elemente aus anderen Namespaces auftauchen und es können alle denkbaren RDF-Perversitäten richtig und falsch durchgespielt werden. Den Feed-Validator interessiert das nicht, der prüft lediglich, ob eine gewisse Grundstruktur eingehalten wird, die darauf schließen lässt, dass der Feed von den gängigen Feedreadern zumindest grob geparst werden kann. Von RDF versteht der Feed-Validator kein Wort. Mit syntaktischer Prüfung über DTDs, XML-Schemas, RDF-Schemas, Ontologien usw. hat er nichts am Hut. Die RDF-Natur von RSS 1.0 wird zurecht gerne außen vor gelassen, aber RSS 1.0 lässt strenggenommen die gesamte in RDF ausdrückbaren Logik zu, wie die Beispiele in der Spezifikation andeuten. Natürlich benutzt das kein Feed der Welt, dementsprechend kann auch kein gwöhnliches den Feed verarbeitendes Programm etwas mit echten RDF-Strukturen anfangen.
Generisches RDF zu validieren, etwa über RDF-Schemas und Ontologien, ist wahrscheinlich »rocket science«. Ich habe keine Ahnung, was für komplexe Überprüfungen nötig und möglich sind, um zu sagen, dass ein RDF-Dokument »Sinn ergibt«, also nicht nur die Syntax stimmt, sondern die entstehenden Aussagen stimmig sind. Möglicherweise lässt sich das nicht maschinell prüfen. Ich kenne zumindest nur den RDF Validator des W3Cs, dessen Arbeitsweise mir unklar ist. Letztlich sammelt er die Triples zusammen (die Einzelaussagen), wie es auch z.B. mit der RDF API für PHP möglich ist. Die XML-Struktur ist dabei reichlich egal, es werden keine Verschachtelungsregeln überprüft. Und selbst wenn alle Triples problemlos ausgelesen werden konnten, können die Aussagen aufgrund konzeptioneller Fehler widersinnig sein. Das sieht man dann höchstens im generierten Graphen, bei dem keine klaren Strukturen erkennbar sind und ein Durcheinander herrscht.
Ich würde den RDF-Teil bei der RSS-1.0-Validierung völlig außen vor lassen. Ein einfaches Prüfprogramm wie der Feed-Validator ist das einzig praktikable, auch wenn das mit echter Validierung nichts zu tun hat. RSS 1.0 ist nun einmal ein Schuss in den Ofen.
Mathias