Thomas Mell: Fragen zu XML-Namensräume

Hallo,
ich habe ein Verständnisproblem in bezug auf Namensräume in XML-Dokumenten.
Gehen wir mal von folgenden Beispiel aus:
<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:valueXML</rdf:value>
       </rdf:Description>
    </dc:subject>
    dc:subject
       rdf:Description
          <taxo:topic rdf:resource="http://www.oreillynet.com/meerkat/?c=cat23" />
          rdf:valueData: XML</rdf:value>
       </rdf:Description>
    </dc:subject>
  </item>
...

Mich verwirrt nun z.B. rdf:Description in dc:subject steht, oder auch taxo:topic in rdf:Description, obwohl dies in keiner DTD spezifiziert ist.
Ist es etwa so das man beliebige Namensräume „mischen“ kann ohne dafür Regeln zu benennen?

Währe nett wenn mich jemand aufklären oder einen Link geben könnte.

Grüße
Thomas

  1. Hallo Thomas,

    ich habe ein Verständnisproblem in bezug auf Namensräume in XML-Dokumenten.

    Mich verwirrt nun z.B. rdf:Description in dc:subject steht, oder auch taxo:topic in rdf:Description, obwohl dies in keiner DTD spezifiziert ist.

    Namensrüme in DTD's sind auch nicht leicht zu verwirklichen: http://aktuell.de.selfhtml.org/artikel/xml/namensraeume/index.htm

    Ist es etwa so das man beliebige Namensräume „mischen“ kann ohne dafür Regeln zu benennen?

    Ja.

    An welche Art von Regel hättest du denn dabei geadacht?

    Grüße
    Thomas

    1. Hi Thomas,

      An welche Art von Regel hättest du denn dabei geadacht?

      Hallo,
      ich bin momentan dabei für Validome einen RSS/RDF – Validator zu proggen.
      In einigen Versionen (1.0, 2.0, Atom) gibt es Module um die Grundversionen um zusätzliche Funktionen zu bereichern. Das ganze läuft über ordinäres XML und die Module werden per Namensräume eingebunden. So weit so gut (oder eher schlecht).
      Da ich bisher keinen brauchbaren Schemaparser (DTD’s scheiden wegen teilweiser komplexer Regeln und zu prüfende Datentypen aus) gefunden habe der sowohl unter Linux als auch Windows läuft, der Mehrsprachig und auch noch mit PHP zu „bedienen“ ist, habe ich mir einen eigenen Schemaparser in PHP geschrieben (ist sogar recht schnell).
      Es handelt sich dabei um eine abgespeckte Version, der nur die Dinge unterstützt die für meine Bedürfnisse benötigt werden.
      Nun hänge ich an diesen blöden Modulen rum und weiß nicht so recht wie ich mit den Namenräumen umgehen soll. Es ist kein Problem zu sagen das Tag X aus Namensraum Y im Tag Z des Hauptdokumentes vorkommen darf/muss – einmal/mehrmals etc. blabla.
      Nun sind mir aber Beispiele untergekommen in denen mehrerer Namensräume verschachtelt sind, z.B. im ersten Beispiel bei http://web.resource.org/rss/1.0/modules/dc/.
      Kann man das überhaupt in Regeln fassen oder muss man jedes Namensraum-Tag in jeden anderen Namensraum-Tag erlauben? Ersteres dürfte kaum umzusetzen sein da es Unmengen von Möglichkeiten gibt, schließlich „kennen“ sich die Module (bzw. Namensräume) untereinander nicht. Wie soll ein Tag in Schema X auch „wissen“ das es in einem Tag in Schema Y erlaubt ist?  Das dumme ist auch das es zu fast allen Modulen keine Schemata existieren und ich mir die erst mal selber anlegen muss. In Bezug auf das Hauptdokument sind die Regeln klar aber wie verhält sich das in den Namensräumen untereinander?

      Grüße
      Thomas

      1. Hallo Thomas,

        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. Ich meine nicht, daß Du ihn unbedingt benutzen solltest
        (PHP vs. Python), aber vielleicht ist es für Dich eine Möglichkeit zu schauen,
        wie es »die anderen« machen.

        Nun hänge ich an diesen blöden Modulen rum und weiß nicht so recht wie ich
        mit den Namenräumen umgehen soll.

        Ich würde sie einfach ignorieren, wenn sie nicht gegen die XML-Regeln
        verstoßen. Im Prinzip gäbe es ja unterschiedlichste Namensräume, so zum
        beispiel <bla xmlns:tim="http://ns.tepasse.org/bla">.

        Kann man das überhaupt in Regeln fassen oder muss man jedes Namensraum-Tag
        in jeden anderen Namensraum-Tag erlauben?

        Das würde ich sagen. So wie ich die Spezifikation verstehe, sind die
        Namensräume nicht da, um neue Elemente und Attribute bereitzustellen,
        sondern nur, um die _Namen_ bereitzustellen, die man für neue Elemente
        und Attribute benutzen kann. Ein winziger, haarspalterischer Unterschied,
        ja, aber dennoch ein Unterschied. Soweit ich weiß gibt es keine Möglichkeit,
        da noch eine Struktur von Elementen und Attributen zu definieren. Sei froh,
        anders wäre es sicher eine Hölle. ;o)

        Tim

        1. Hi Tim,

          Der Feed Validator von Mark Pilgrim und Sam Ruby ist übrigens als Open Source

          Kenne ich, ist ziemlich voller Bugs - siehe http://www.validome.org/rdf/comparison/lang/ge/version/0.91

          ...Ich meine nicht, daß Du ihn unbedingt benutzen solltest

          Sehe ich auch so ;-))

          Nun hänge ich an diesen blöden Modulen rum und weiß nicht so recht wie ich
          mit den Namenräumen umgehen soll.

          Ich würde sie einfach ignorieren, wenn sie nicht gegen die XML-Regeln
          verstoßen. Im Prinzip gäbe es ja unterschiedlichste Namensräume, so zum
          beispiel <bla xmlns:tim="http://ns.tepasse.org/bla">.

          Ich glaube das werde ich auch tun, schon weil jeden Tag eine weitere Pappnase einen genialen Geistesblitz bekommt und ein Modul "erfindet" welches die Welt noch nicht gesehen hat.

          Soweit ich weiß gibt es keine Möglichkeit,
          da noch eine Struktur von Elementen und Attributen zu definieren. Sei froh,
          anders wäre es sicher eine Hölle. ;o)

          Genau so habe ich mir das vorgestellt - als Hölle.
          Na dann spare ich mir ja jede menge Arbeit und mach nen Haken an die Module ;-))

          Vielen Dank
          Thomas

          PS: Im ganzen hinterlässt der RSS/RDF - Plunder bei mir einen üblen Nachgeschmack der nach "Scriptkidi" aussieht. Eine Ansammlung von halbgaren Ideen und unpräzisen (und teilweise absolut fehlerhaften) Spezifikationen. Fehlende DTD's und Schemata, die man findet sind voller Fehler. Wird mal Zeit das der Mist von Profis in die Hand genommen wird.

          1. weil jeden Tag eine weitere Pappnase einen genialen Geistesblitz bekommt und ein Modul "erfindet" welches die Welt noch nicht gesehen hat.

            Thomas,
            Mit "Modul" meinst du wohl Vokabular?

            Du hast den Sinn nicht ganz durchschaut? Wenn's schon ein Vokabular gibt, um das, was du beschreiben willst, treffend zu beschreiben, nimmst du es halt (z.B. Dublin Core), wenn nicht, kreierst du halt dein eigenes. Welches du mit einem schon vorhandenen Vokabular (RDF Schema) beschreibst.

            So wird das semantische Netz gestrickt.

            Fehlende DTD's und Schemata,

            Das muss ja eben so sein (wenn du mit "Schemata" XML Schema meintest).

            Wird mal Zeit das der Mist von Profis in die Hand genommen wird.

            Du weißt nicht wirklich, wovon du sprichst?
            Gunnar

            --
            "Nobody wins unless everybody wins." (Bruce Springsteen)
            1. Hallo Gunnar,

              um erklärend einen Mißverständnis vorzubeugen:

              So wird das semantische Netz gestrickt.

              Thomas geht es weniger um das semantische Netz, ob es nun mit RDF oder mit
              anderen Zeug realisiert wird. Es geht ihm um einen Validator für Feeds der
              diversen RSS-Geschmacksrichtungen und Atom. Mit der Ausnahme von RSS 1.0
              handelt es sich hierbei weniger um beschreibendes semantisches Web sondern
              »nur« um XML-Dateien. Auch bei RSS 2.0 und soweit ich weiß Atom ist das
              Einbinden von zusätzlichem Markup mittels Namensräumen erlaubt.

              Fehlende DTD's und Schemata,
              Das muss ja eben so sein (wenn du mit "Schemata" XML Schema meintest).

              Und um XML-Dateien validieren zu können, wäre nun mal eine DTD oder ein
              Schema sinnvoll. »Offizielle« DTDs oder Schemata gibt es aber nicht. Die
              Geschichte von RSS ist da eine ziemlich chaotische Geschichte, ich habe
              hier im Forum schon öfters einiges dazu geschrieben.

              Wird mal Zeit das der Mist von Profis in die Hand genommen wird.
              Du weißt nicht wirklich, wovon du sprichst?

              Er dürfte nicht generell von dem von Dir so geliebten semantischen Web und
              RDF  sondern von den unterschiedlichen XML-Formaten namens RSS reden. Da ist
              der Begriff Mist durchaus angebracht.

              Tim

              1. Auch bei RSS 2.0 und soweit ich weiß Atom ist das
                Einbinden von zusätzlichem Markup mittels Namensräumen erlaubt. [snip]
                »Offizielle« DTDs oder Schemata gibt es aber nicht.

                Tim,
                Das eine widerspricht ja auch dem anderen.

                DTD heißt festgelegte Menge von Elementen. Nichts Zusätzliches.

                Keine Chance, z.B. MathML in (X)HTML Strict oder Transitional einzubauen. Dazu brauchst du eine DTD, die sowohl die Elemente von MathML als auch die von HTML enthält. (Gibt's ja für XHTML.)

                Wenn du aber nicht weißt, welches zusätzliche Markup es einzubinden gilt (die DCMI könnte ja z.B. die Meta-Angaben noch erweitern), kann es keine DTD geben (oder du müsstest sie ständig neu schreiben).

                Keine DTD heißt nicht "Mist".

                Gruß,
                Gunnar

                --
                "Nobody wins unless everybody wins." (Bruce Springsteen)
                1. Hi,

                  Wenn du aber nicht weißt, welches zusätzliche Markup es einzubinden gilt (die DCMI könnte ja z.B. die Meta-Angaben noch erweitern), kann es keine DTD geben (oder du müsstest sie ständig neu schreiben).

                  Es ist sehrwohl bekannt welche Markups einzubinden sind: http://web.resource.org/rss/1.0/ - http://web.resource.org/rss/1.0/modules/proposed.html.
                  Das hilft mir aber auch nicht weiter, da nirgends spezifiziert ist wie die unterschiedlichen Namensräume verschachtelt werden dürfen - und wie ich das bisher verstanden habe ist das wohl auch nicht möglich und/oder der benötige Parser währe ne Aufgabe für Mr. Spock?!

                  Grüße
                  Thomas

                  1. Hallo,

                    Es ist sehrwohl bekannt welche Markups einzubinden sind: http://web.resource.org/rss/1.0/ - http://web.resource.org/rss/1.0/modules/proposed.html.
                    Das hilft mir aber auch nicht weiter, da nirgends spezifiziert ist wie die unterschiedlichen Namensräume verschachtelt werden dürfen

                    Doch, natürlich?
                    Jedes der dortigen Module definiert, in welchen existierenden RSS-1.0-Elementen die neu definierten Elemente vorkommen dürfen. Die elemente der DCMI Metadata Terms dürfen bspw. in den Elementen channel, item, image und textinput vorkommen: http://web.resource.org/rss/1.0/modules/dcterms/#model.
                    Wenn du das alles summierst, lässt sich das durchaus auf ein XML-Schema oder ähnliches bringen.

                    Mathias

                    1. Hi Molily,

                      Die elemente der DCMI Metadata Terms dürfen bspw. in den Elementen channel, item, image und textinput vorkommen: http://web.resource.org/rss/1.0/modules/dcterms/#model.
                      Wenn du das alles summierst, lässt sich das durchaus auf ein XML-Schema oder ähnliches bringen.

                      Ja richtig, das mach ich auch schon die ganze Zeit ;-))
                      Mein Problem sind nicht die Module in Bezug auf das Hauptdokument, sondern die Module untereinander, da diese auch verschachtelt sein können - siehe http://web.resource.org/rss/1.0/modules/dc/ erstes Beispiel.
                      Ich habe mich nun zu folgender Vorgehensweise entschieden.
                      Die Schematas der "Hauptdokumente" werden an den entsprechenden Stellen (item, channel etc.) durch Schemafragmente der im Rootelement angegebenen Module erweitert.
                      Sollte innerhalb eines dieser Namensräume ein "fremder" Namensraum auftauchen, sehe ich nach ob dieser (fremde) Namensraum überhaupt bekannt ist (im Rootelement oder xmlns-Attribut definiert).
                      Wenn nicht, gibts eine Meldung (Hinweis oder Warnung?!).
                      Wenn ja, validiere ich diese Elemente auf Attribute und Datentypen, unabhängig von jeglicher Verschachtelungsregel.
                      Mit dieser Methode sollte man 99% aller RSS-Dokumente validiert bekommen, und ist um Meilen weiter als die existierenden RSS-Validatoren.
                      Verbesserungsvorschläge sind jederzeit herzlich willkommen;-))

                      Grüße
                      Thomas

                2. Hallo Gunnar,

                  DTD heißt festgelegte Menge von Elementen. Nichts Zusätzliches.

                  DTD ist eher eine in einer maschinenlesbaren formalen Sprache Beschreibung
                  von Elementen. Eine DTD ist nicht der Standard, z.B. der HTML Standard
                  besteht aus mehr, als nur einer Beschreibung der in der DTD festgelegten
                  Strukturen. Eine DTD ist da meiner Meinung nach eher als ein Hilfsmittel
                  zu betrachten.

                  Für RSS in den Versionen 0.9x und 2.0 gibt es nur geschriebene Spezifikationen,
                  das Hilfmittel DTD ist nicht vorhanden. Zum Ziel des klassischen Validierens
                  gegen eine DTD ist das dann doch relativ unpraktisch.

                  Wenn du aber nicht weißt, welches zusätzliche Markup es einzubinden gilt
                  (die DCMI könnte ja z.B. die Meta-Angaben noch erweitern), kann es keine DTD
                  geben (oder du müsstest sie ständig neu schreiben).

                  Ja, das ist meiner Meinung nach einer der Schwachpunkte der nachträglich zu
                  XML hinzugefügten Namensräume. Ich weiß allerdings nicht, inwieweit das
                  durch die Rückwärtskompabilität zu SGML bedingt ist, kann mir das als
                  Erklärung aber sehr gut vorstellen.

                  Keine DTD heißt nicht "Mist".

                  Das meine ich auch nicht, Du hast mich mißverstanden. Mein »Mist« bezog sich
                  eher auf die komplizierte Geschichte all der unterschiedlichen Formate, die
                  den Namen RSS tragen.

                  Du hast Dich jetzt doch etwas vom Ausgangsposting entfernt. Möchtest Du auf
                  etwas bestimmtes hinaus oder war das nur Widerposten um des Widerpostens
                  willen?

                  Tim

                  1. Hallo Tim,

                    Es geht [Thomas] um einen Validator für Feeds der

                    diversen RSS-Geschmacksrichtungen und Atom.

                    Das hat dir deine Glaskugel gesagt!

                    Er schrieb anfangs: ich habe ein Verständnisproblem in bezug auf Namensräume in XML-Dokumenten.
                    Gehen wir mal von folgenden Beispiel aus:
                    <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/"

                    ...

                    "XML-Namensräume" als Thema, kein Wort davon, dass es ihm speziell um RSS geht.

                    Ja, [dass es keine DTD gibt] ist meiner Meinung nach einer der Schwachpunkte der nachträglich zu XML hinzugefügten Namensräume.

                    Und eine der Stärken.

                    Ich weiß allerdings nicht, inwieweit das durch die Rückwärtskompabilität zu SGML bedingt ist,

                    ?? Das ist bedingt durch das Konzept, eigene Vokabularien erstellen zu können.

                    Wieviel die verarbeitende Software dann davon "versteht", ist eine andere Sache. RSS-Reader z.B. werden nicht alle DC-Meta-Angaben interpretieren, sie stören aber auch nicht.

                    Gruß,
                    Gunnar

                    --
                    "Nobody wins unless everybody wins." (Bruce Springsteen)
                3. Hallo,

                  Tim,
                  Das eine widerspricht ja auch dem anderen.

                  DTD heißt festgelegte Menge von Elementen. Nichts Zusätzliches.

                  Keine Chance, z.B. MathML in (X)HTML Strict oder Transitional einzubauen. Dazu brauchst du eine DTD, die sowohl die Elemente von MathML als auch die von HTML enthält. (Gibt's ja für XHTML.)

                  In XHTML 1.1 ist das kein Poblem http://www.w3.org/TR/MathML2/appendixa.html#parsing.module
                  Auch XHTML 1.1, MathML und SVG geht zusammen: http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd

                  Grüße
                  Thomas

            2. Hi

              Mit "Modul" meinst du wohl Vokabular?

              Nein, siehe Posting weiter unten.

              Fehlende DTD's und Schemata,

              Das muss ja eben so sein (wenn du mit "Schemata" XML Schema meintest).

              "Schemata" ist die Mehrzahl von Schema, ich brauche für jede Version und Modul eins.

              Wird mal Zeit das der Mist von Profis in die Hand genommen wird.

              Du weißt nicht wirklich, wovon du sprichst?

              Doch, zu gut - schließlich ärgere ich mich seit Wochen mit diesen "Spezifikationen" rum. Größtenteils muß man raten ob bestimmte Tags und/oder Attribute vorkommen können oder müssen, ganz zu schweigen von deren Inhalte... Das ganze ist Schrott hoch 3. Jedem halben Profi dreht sich da der Magen um.
              Das Zeug befindet sich auf einer Stufe wie HTML vor dem Auftauchen das W3C. Dort gibt es jetzt zwar "richtige" Spezifikationen, die nur leider keiner versteht (ausser man hat Informatik studiert), aber immerhin es gibt sie.

              Grüße
              Thomas

              1. Du weißt nicht wirklich, wovon du sprichst?
                Doch, zu gut - schließlich ärgere ich mich seit Wochen mit diesen "Spezifikationen" rum

                Sorry Thomas,
                Aber wenn's dir speziell um RSS und nicht allgemein um XML geht, dann sag das doch gleich.
                Gruß,
                Gunnar

                --
                "Nobody wins unless everybody wins." (Bruce Springsteen)
          2. Hallo Thomas,

            PS: Im ganzen hinterlässt der RSS/RDF - Plunder bei mir einen üblen
            Nachgeschmack der nach "Scriptkidi" aussieht. Eine Ansammlung von halbgaren
            Ideen und unpräzisen (und teilweise absolut fehlerhaften) Spezifikationen.
            Fehlende DTD's und Schemata, die man findet sind voller Fehler. Wird mal
            Zeit das der Mist von Profis in die Hand genommen wird.

            Für RSS 0.9x und 2.0 von Dave Winer und seinen etwas wackeligen Spezifikationen
            gebe ich Dir gerne recht, bei der 1.0 stört mich persönlich das meiner
            Meinung nach unnötige RDF-Zeugs. Aber Dir ist bewußt, daß die Initiative
            für Atom genau wegen der Unzufriedenheit mit der RSS 2.0 Spezifikation
            gegründet wurde? Atom soll sozusagen RSS made right sein.

            Tim

            1. Hallo Tim,

              Ganz OT: https://forum.selfhtml.org/?t=93256&m=563612

              Grüße
              Thomas

              1. Hallo,

                Ganz OT:

                Ich sehe alles und schäme mich entsprechend. ;o) Dummerweise sehe ich auch die
                Uhrzeit - sorry, läuft alles etwas verquer hier im Moment.

                Tim

        2. Hallo,

          Das würde ich sagen. So wie ich die Spezifikation verstehe, sind die
          Namensräume nicht da, um neue Elemente und Attribute bereitzustellen,
          sondern nur, um die _Namen_ bereitzustellen, die man für neue Elemente
          und Attribute benutzen kann. Ein winziger, haarspalterischer Unterschied,

          Eher ein großer Unterschied ;-)
          "In Dokumenten, die unterschiedliches Markup-Vokabular enthalten, können Probleme mit der Erkennung und Kollisionen auftreten. Software-Module müssen die Tags und Attribute erkennen, für deren Verarbeitung sie geschaffen wurden, auch im Fall einer Kollision, wenn Markup, das für eine andere Software geschrieben wurde, die gleichen Elementtypen und Attributnamen verwendet."
          [link_http://www.schumacher-netz.de/TR/1999/REC-xml-names-19990114-de.html]

          Grüße
          Thomas

        3. 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

          1. molily,

            Ich kenne zumindest nur den RDF Validator des W3Cs, dessen Arbeitsweise mir unklar ist. Letztlich sammelt er die Triples zusammen (die Einzelaussagen),

            die er dann prüfen kann, ob es auch immer Subjekt, Prädikat, Objekt ist.

            <Subjekt>
                  <Prädikat>
                    <Objekt/>
                  </Prädikat>
                </Subjekt>

            und

            <Subjekt>
                  <Prädikat>Objekt</Prädikat>
                </Subjekt>

            und

            <Subjekt Prädikat="Objekt"/>

            ist valide,

            <Subjekt>
                  <Objekt/>
                </Subjekt>

            und

            <Subjekt>
                  <Objekt/>
                    <Prädikat>
                  </Objekt>
                </Subjekt>

            hingegen nicht.

            RSS 1.0 ist nun einmal ein Schuss in den Ofen.

            ?? Find ich nicht.

            Gruß,
            Gunnar

            --
            "Nobody wins unless everybody wins." (Bruce Springsteen)
            1. Hallo,

              RSS 1.0 ist nun einmal ein Schuss in den Ofen.

              ?? Find ich nicht.

              RSS auf RDF-Basis hat das Problem, dass niemand in der Realität die vielfältigen Möglichkeiten von RDF und Semantic Web für einfache Syndication-Aufgaben braucht. Usus ist daher, beim Schreiben/Generieren und beim Verarbeiten von RSS 1.0 allen denkbaren Semantic-Web-Kram wegzulassen bzw. zu ignorieren. Die Welt brauchte ein einfaches Syndication-Format, daher entstanden, wie Tim beschrieb, RSS 2.0 und Atom, bei ohne den Semantic-Web-Overhead von RDF.
              Sicherlich kann man RSS 1.0 gut als Containerformat benutzen, um gehaltvolle Metainformationen sowie Informationsbeziehungen auszudrücken (die restlichen Simple-Syndication-Formate sind nicht wirklich »Semantic« im Sinne des Semantic Web), aber das kann dann nur ein vollständiger RDF-Prozessor lesen, nicht der Aggregator von Otto und Ottilie Normallsurfer, für die Syndication das einfache Abonnieren von Weblogs bedeutet.

              Mathias

          2. Hallo Mathias,

            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,

            Irgendwann landet man dann tief in der Prädikatenlogik.

            sondern die entstehenden Aussagen stimmig sind.

            Du meinst aber schon die durch RDF ausgedrückten Aussagen, nicht eventuelle
            Folgerungen? Letzteres dürfte schlimm sein, angesichts der verschiedenen
            Methoden aus einer bekannten Wissensbasis etwas neues zu folgern.

            Das sieht man dann höchstens im generierten Graphen, bei dem keine klaren
            Strukturen erkennbar sind und ein Durcheinander herrscht.

            Vor einem Jahr habe ich selber noch semantische Netze gezeichnet. Muß ich
            mal wieder rauskramen, das Zeug.

            Ein einfaches Prüfprogramm wie der Feed-Validator ist das einzig
            praktikable, auch wenn das mit echter Validierung nichts zu tun hat.

            XML-Validierung im Sinne des W3C-Validators. In gewisser Weise validiert der
            Feed Validator aber auch näher am Standard, schließlich kümmert er sich
            nicht nur um das Markup sondern auch um den Inhalt der entsprechenden
            Elemente, bespielsweise auf RFC 822 Konformität des Datums in RSS 0.9x und
            RSS 2.0. So eine Validierung ziehe ich gegenüber einer bloßen XML-Validierung
            gegenüber einer DTD dann doch vor.

            Tim

            1. Hallo,

              Ein einfaches Prüfprogramm wie der Feed-Validator ist das einzig praktikable, auch wenn das mit echter Validierung nichts zu tun hat.

              XML-Validierung im Sinne des W3C-Validators. In gewisser Weise validiert der Feed Validator aber auch näher am Standard, schließlich kümmert er sich nicht nur um das Markup sondern auch um den Inhalt der entsprechenden Elemente, bespielsweise auf RFC 822 Konformität des Datums in RSS 0.9x und RSS 2.0. So eine Validierung ziehe ich gegenüber einer bloßen XML-Validierung gegenüber einer DTD dann doch vor.

              DTDs wären sowieso unpassend, und das nicht nur, weil nahezu jedes Syndication-Format über Namespaces beliebig erweiterbar ist. XML-Schemas wären eine Basis, auf der man arbeiten könnte. Das heißt, man vergisst jegliches RDF-Gedöhns bei RSS 1.0 und schreibt ein Schema, dass die gängigen RSS-1.0-Module unterstützt. Wenn dann noch Elemente aus anderen Namespaces an den einschlägigen Stellen auftauchen, kann man eine Warnung als »User Check« ausgeben.
              Das wäre keine Validierung, aber es spiegelt vermutlich die Möglichkeiten der gängigen Aggregatoren ab. Als Selbstbeschränkung halte ich das durchaus für sinnvoll und würde es begrüßen, wenn jemand solches ein Prüfprogramm anböte. (Allerdings, wer will schon RSS 1.0 schreiben. Das Grundproblem ist aber bei RSS 2.0 und Atom dasselbe, wenn ich mich nicht irre.)

              Mathias

      2. Hallo,

        An welche Art von Regel hättest du denn dabei geadacht?

        Hallo,
        ich bin momentan dabei für Validome einen RSS/RDF – Validator zu proggen.

        RDF ist nicht schuld. RDF ist mehr als genügen beschrieben, definiert,  etc.
        An der RSS Misäre sind die Opensourcler selber schuld. Sie machen genau das was sie u.a. M$ vorverfen. Jeder kocht sein eigenes Süpchen.

        Nun hänge ich an diesen blöden Modulen rum und weiß nicht so recht wie ich mit den Namenräumen umgehen soll. Es ist kein Problem zu sagen das Tag X aus Namensraum Y im Tag Z des Hauptdokumentes vorkommen darf/muss – einmal/mehrmals etc. blabla.

        Dan belasse es dabei. Überprüf nur ob die Namensräume richtig verschachtelt sind, dabei auf den (jeweiligen) default Namensraum achten und fertig.

        Kann man das überhaupt in Regeln fassen

        Nein. Nicht so wie du es möchtest.

        »»oder muss man jedes Namensraum-Tag in jeden anderen Namensraum-Tag erlauben?

        Müssen muss man es nicht, aber es kann natürlich vorkommen ;-)

        »»Ersteres dürfte kaum umzusetzen sein da es Unmengen von Möglichkeiten gibt,

        Genau.

        Grüße
        Thomas

        1. Hi Thomas,

          An der RSS Misäre sind die Opensourcler selber schuld. Sie machen genau das was sie u.a. M$ vorverfen. Jeder kocht sein eigenes Süpchen.

          ...wobei bei M$ nur einer kocht...

          Nun hänge ich an diesen blöden Modulen rum und weiß nicht so recht wie ich mit den Namenräumen umgehen soll. Es ist kein Problem zu sagen das Tag X aus Namensraum Y im Tag Z des Hauptdokumentes vorkommen darf/muss – einmal/mehrmals etc. blabla.

          Dan belasse es dabei. Überprüf nur ob die Namensräume richtig verschachtelt sind, dabei auf den (jeweiligen) default Namensraum achten und fertig.

          Dachte ich mir schon das es darauf hinausläuft, alles andere ist ein Aufwand wofür vieleicht M$ genug Leute, Zeit und Knete hat; und ich wollte noch in diesem Jahrzehnt fertig werden ;-))

          Dank Dir
          Thomas

  2. Mich verwirrt nun z.B. rdf:Description in dc:subject steht, oder auch taxo:topic in rdf:Description, obwohl dies in keiner DTD spezifiziert ist.

    Thomas,
    Kann auch nicht.

    "Aufgrund der durch RDF bewusst nicht festgelegten syntaktischen Darstellung können im WWW eingeführte Grammatiksprachen zur Struktur- und Inhaltsbeschreibung wie die dem klassischen HTML zugrunde liegenden Dokumenttypdefinitionen (DTD) oder die im XML-Umfeld gebräuchlichen XML-Schemata nicht eingesetzt werden, da diese jeweils genau eine festgelegte Syntax zur Darstellung der Grammatikinstanzen vorsehen. Überdies sind sowohl DTDs als auch XML-Schemata einerseits zu restriktiv, andererseits in den formulierbaren Aussagen zu schwach, um RDF-Strukturen ausdrücken zu können." [Dostal, Jeckle, Kriechbaum: Semantic Web Services Teil 3]

    Ist es etwa so das man beliebige Namensräume „mischen“ kann ohne dafür Regeln zu benennen?

    Mischen ja.

    Namensräume sind üblicherweise durch RDF Schema beschrieben, unter dem URI, der auch der Namensraumbezeichner ist.

    Regeln gibt's auch in RDF einige, andere können mit OWL angegeben werden.

    Wenn du tiefer einsteigen willst, lies den RDF Primer.

    Gruß,
    Gunnar

    --
    "Nobody wins unless everybody wins." (Bruce Springsteen)