SilentHunter: Mikrodaten

Hallo zusammen,

ich habe mich einmal mit dem schema.org-System befasst. Dabei ist mir noch nicht klar:

  • Was bedeutet itemprop nun genau? Wann und wo sollte itemprop verwendet / nicht verwendet werden, speziell im Gegensatz zu oder in Verbindung mit itemtype? Oder umgekehrt: Was bedeutet itemtype nun genau? Wann und wo sollte itemtype verwendet / nicht verwendet werden, speziell im Gegensatz zu oder in Verbindung mit itemprop?

  • Können die Werte beliebig kombiniert werden? Oder muss die Hierarchie eingehalten werden? (Werte nur in bestimmtem Kontext mit bestimmten Werten erlaubt?)

  • Ist z.B. <img itemprop="image"> nicht doppelt gemoppelt?! Also wozu itemprop="image", wenn img eh "Bild!" deklariert?

Danke euch im Voraus!

  1. Hallo

    Mit itemscope wird ein mit Microdaten versehener Bereich bestimmt. Das wird in der Regel also einem Container mit Inhalt zugewiesen.

    Zusätzlich kann (und sollte) mit itemtype demselben Container mitgeteilt werden, worum es überhaupt geht, zum Beispiel ein Produkt oder eine Person oder...

    Mit itemprop werden die einzelnen Eigenschaften innerhalb des Containers beschrieben, zum Beispiel eine Bezeichnung oder eine Beschreibung oder das Gewicht oder der Preis oder Verkaufsmengen. In der Regel sind das mehrere Eigenschaften.

    Ist z.B. <img itemprop="image"> nicht doppelt gemoppelt?!

    Nicht wenn du dir klarmachst worum es überhaupt geht.

    Die Daten sind nicht für Menschen, sondern nur für digitale Empfangsgeräte gedacht, zum Beispiel für Suchmaschinen. Denen wird dadurch ermöglicht automatisch genau die relevanten Daten der Seite zu erkennen und richtig zuzuordnen. Wenn es mehrere Bilder gibt kann so genau das entscheidende oder wichtigste oder schönste bestimmt werden.

    Deshalb sollte nur genau ein Bild auf einer Webseite mit Microdaten versehen werden, welches zum Beispiel bei Suchergebnissen angezeigt wird. Wenn mehrere Preise oder Bilder oder ... mit Microdaten versehen werden können die Suchmaschinen damit nichts mehr anfangen und müssen genau wie bei Webseiten ohne Microdaten raten, was wichtig sein könnte.

    Wer Webseiten mit Microdaten zuballert hat den Sinn von Microdaten nicht verstanden und verschlimmbessert seine Seite sogar.

    Gruss

    MrMurphy

  2. @@SilentHunter

    ich habe mich einmal mit dem schema.org-System befasst. Dabei ist mir noch nicht klar:

    • Was bedeutet itemprop nun genau? […] Was bedeutet itemtype nun genau?

    itemprop/itemtype haben nicht direkt was mit Schema.org zu tun.

    Schema.org ist ein Vokabular, d.h. es definiert Typen (types) und Eigenschaften (properties), die Maschinen (bspw. Suchmaschinen) „verstehen“ können.

    Schema.org kann mit verschiedenen Syntaxen angewandt werden: bspw. RDF/XML, JSON-LD, oder in HTML mit RDFa (Lite) oder Microdata.

    itemprop/itemtype ist Microdata-Syntax. Ich rate von Microdata ab; das sollte es überhaupt nicht geben. Stattdessen: RDFa Lite verwenden; die entsprechenden Attribute heißen property und typeof.

    Wann und wo sollte itemtype verwendet / nicht verwendet werden, speziell im Gegensatz zu oder in Verbindung mit itemprop?

    itemtype bzw. typeof gibt einen Typen an. (Typen haben in Schema.org einen großen Anfangsbuchstaben.) itemprop bzw. property gibt eine Eigenschaft an. (Eigenschaften haben in Schema.org einen kleinen Anfangsbuchstaben.)

    • Können die Werte beliebig kombiniert werden? Oder muss die Hierarchie eingehalten werden?

    Letzteres. Es sollten immer Tripel Subjekt–Prädikat–Objekt rauskommen.

    Beispiel: Das Buch „Der geteilte Himmel“ wurde geschrieben von Christa Wolf.

    Subjekt–Prädikat–Objekt-Tripel:

    • Dieses Buch hat den Titel „Der geteilte Himmel“.
    • Dieses Buch wurde geschrieben von einer Person.
    • Diese Person hat den Namen Christa Wolf.

    Schema.org in JSON-LD:

    {
    	"@context": "http://schema.org",
    	"@type": "Book",
    	"title": "Der geteilte Himmel",
    	"author": {
    		"@type": "Person",
    		"name": "Christa Wolf"
    	}
    }
    

    In HTML sähe das mit RDFa Lite so aus:

    <html lang="de" vocab="http://schema.org/"><p typeof="Book">
    		Das Buch „<span property="name">Der geteilte Himmel</span>“ wurde geschrieben von
    		<span property="author" typeof="Person"><span property="name">Christa Wolf</span></span>.
    	</p>
    

    Mit Microdata (*würg*):

    <html lang="de"><p itemscope itemtype="http://schema.org/Book">
    		Das Buch „<span itemprop="name">Der geteilte Himmel</span>“ wurde geschrieben von
    		<span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Christa Wolf</span></span>.
    	</p>
    
    • Ist z.B. <img itemprop="image"> nicht doppelt gemoppelt?!

    Nein.

    Also wozu itemprop="image", wenn img eh "Bild!" deklariert?

    HTML-Elementtypen sind für RDFa bzw. Microdata irrelevant.

    Bei Interesse kannst du dir einen Vortrag von mir zu diesem Thema ansehen: nuqjatlh (What does it mean?) VideoFolien

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Hallo Gunnar,

      danke für die Erläuterung!

      Typen haben in Schema.org einen großen Anfangsbuchstaben.

      Hmm, also wäre es nicht erlaubt, Typen- als Eigenschaftswerte zu verwenden, obwohl sie in ihrer Spezifizierung und eben als Eigenschaftswerte bspw. besser passen? Sowas wie: <span property="Book">Der geteilte Himmel</span>

      Ginge im Übrigen nicht auch:

      • <span typeof="Book" property="name">Der geteilte Himmel</span>“

      • Oder <span property="Book name">Der geteilte Himmel</span>? Mehrere Werte?

      Irgendwie ist mir immer noch nicht klar, wann und wo property/typeof im Gegensatz zu- / in Verbindung miteinander verwendet / nicht verwendet werden sollten :-/

      1. Hallo

        Die unterschiedlichen Mikroformate haben jeweils eine eigene Syntax (Schreibweise, Vokabular, Grammatik, ...) die strikt eingehalten werden muss, damit die Software, welche die Daten einliest, sie auch richtig verwerten kann.

        Mit eigenen Konstruktionen kannst du die Mikroformate gleich komplett weglassen. Zumal du von der Empfängersoftware nie eine Fehlermeldung erhalten wirst. Damit hast du dann viel Arbeit für keinen Erfolg.

        Deine Fragen lassen zudem darauf schließen, dass du den Sinn von Mikroformaten überhaupt noch nicht verstanden hast. Für das Suchmaschinenranking spielen Mikroformate zum Beispiel nur eine vollkommen untergeordnete Rolle. Schon gar nicht sorgen sie dafür, dass ansonsten schlechte Webseiten besser überhaupt besser werden oder viel besser bewertet werden.

        Mit deinem Vorgehen "Ich will möglichst wenig Arbeit haben und denke mir eigene Konstruktionen aus." funktionieren Mikroformate nicht.

        Gruss

        MrMurphy

        1. @@MrMurphy1

          Die unterschiedlichen Mikroformate haben jeweils eine eigene Syntax (Schreibweise, Vokabular, Grammatik, ...)

          Ähm nein, „Vokabular“ gehört da nicht in die Klammer. Vokabular und Syntax sind zwei verschiedene Dinge.

          Wie ich schon sagte, kann ein Vokabular (z.B. Schema.org) in verschiedenen Syntaxen (z.B. RDFa, JSON-LD usw.) notiert werden. Und eine Syntax (bspw. RDFa) kann für verschiedene Vokabulare (z.B. Schema.org, Dublin Core usw.) verwendet werden.

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      2. @@SilentHunter

        Hmm, also wäre es nicht erlaubt, Typen- als Eigenschaftswerte zu verwenden

        Nein.

        obwohl sie in ihrer Spezifizierung und eben als Eigenschaftswerte bspw. besser passen?

        Wieso sollten sie?

        Sowas wie: <span property="Book">Der geteilte Himmel</span>

        „Buch“ ist keine Eigenschaft. „Ist ein Buch“ wäre eine Eigenschaft. Ich hatte die Beziehungen auch etwas vereinfacht. Genaugenommen sähe das eher so aus:

        • Dieses Ding (identifiziert druch einen URI wie http://meinedinge.example/dgt) ist ein Buch.
        • Dieses Ding hat den Titel „Der geteilte Himmel“.
        • Dieses Ding wurde geschrieben von einem anderen Ding (identifiziert druch einen URI wie http://meinedinge.example/cw)
        • Dieses andere Ding ist eine Person.
        • Dieses andere Ding hat den Namen Christa Wolf.

        Ginge im Übrigen nicht auch:

        • <span typeof="Book" property="name">Der geteilte Himmel</span>“

        Nein. Das hieße ja, die Zeichenkette „Der geteilte Himmel“ wäre ein Buch. Ist es aber nicht, es ist eine Zeichenkette. Das Buch hat die Eigenschaft „hat Titel“ (name) mit dem Wert dieser Zeichenkette.

        So geht’s:

        <span typeof="Book"><span property="name">Der geteilte Himmel</span></span>
        

        Und da – wie gesagt – die Elementtypen für RDFa (bzw. Microdata) egal sind, kann das äußere Element auch wie ich’s hatte ein p-Element sein:

        <p typeof="Book"><span property="name">Der geteilte Himmel</span></p>
        

        (Im p-Tag oder irgendwo weiter oben muss [bei RDFa] noch vocab="http://schema.org/" stehen; ich hatte es ganz oben beim html-Element.)

        typeof und property bei einem Element (bzw. itemtype, itemscope und itemprop bei Microdata) geht auf der anderen Seite der Relation: beim Objekt. So wie ich es hatte bei

        <span property="author" typeof="Person"><span property="name">Christa Wolf</span></span>
        

        was äquivalent ist zu

        <span property="author"><span typeof="Person"><span property="name">Christa Wolf</span></span></span>
        

        Irgendwie ist mir immer noch nicht klar, wann und wo property/typeof im Gegensatz zu- / in Verbindung miteinander verwendet / nicht verwendet werden sollten :-/

        Typen und Eigenschaften sind in RDFa (bzw. Microdata) immer ineinander geschachtelt, d.h. sie wechseln sich ab. Mit der eben gezeigten Schreibweise mit einem span mehr sähe es so aus:

        p[typeof="Book"]  
        ├ span[property="name"]  
        │ └ Der geteilte Himmel  
        └ span[property="author"]  
          └ span[typeof="Person"]  
            └ span[property="name"]  
              └ Christa Wolf
        

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory