Zur Navigation

Das "url"-property von schema.org richtig verwenden [2]

11 Martin

Der per url-property referenzierte item sollte auf der verlinkten Seite sicher eine große Rolle spielen, auf der Seite selbst und warum dann nicht auch im JSON-LD-Code.

Das ist auch der Fall bei meinem publisher-Verweis, denn auf meiner "legal page" (.../copyright) geht es nur um drei Sachen, nämlich Kontaktdaten, Copyright und eben der Publisher. Wenn andere beim Publisher auf die Startseite verweisen, steht dort sicher noch einiges mehr als nur die Firma als verantwortlicher Publisher. Also ich denke schon, dass der Publisher auf der legal page wichtig genug ist.

Wichtiger als der url-Verweis erscheint mir aber, wie ich nun der "Person" als "Publisher" im schema-Code der legal page angemessen Rechnung trage. Zumal, wenn die Seite auch als "ContactPage" ausgezeichnet werden soll und "Publisher" kein Datentyp ist, sondern nur property irgendeiner "CreativeWork". Du sagst, der Publisher könnte auf der ContactPage (legal page) top-level-item sein. Wie soll das funktionieren?

Ich sehe nach wie vor nur die schon erwähnte Möglichkeit, die den Publisher zunächst nur für die ContactPage selbst festlegt. Und mit einer extra "id" erklärt, dass dieser Publisher derselbe wie auf allen anderen Seiten ist:

"@type": "ContactPage",
  "url": "http://www.example.de/copyright",
  "publisher": {
     "@type": "Person",
     "@id": "http://www.example.de/publisher",
     "name": "mein Name",
     "url": "http://www.example.de/copyright",
     "isicv4": "8620",
  },
  "copyrightHolder": {
     "@type": "Person",
     "name": "mein Name"
  }


Auf allen anderen Seiten:
  "publisher": {
     "@type": "Person",
     "@id": "http://www.example.de/publisher",
     "name": "mein Name",
     "url": "http://www.example.de/copyright"


28.02.2019 22:49

12 Jörg Kruse

Du sagst, der Publisher könnte auf der ContactPage (legal page) top-level-item sein. Wie soll das funktionieren?

Als "Person", ähnlich wie in dem von mir verlinkten Thread auf stackoverflow.com, nur dass dort "Organization" top-level-item ist. Wenn "name" und "@id" übereinstimmen mit "name" und "@id" des Publishers der einzelnen Webpages, dann ist die Zuordnung denke ich eindeutig.

Du kannst natürlich auch (zusätzlich) für "ContactPage" einen Publisher definieren, aber diese Property-Angabe bezieht sich eben nur auf das Item ContactPage.

PS: wenn "copyrightHolder" die gleiche Person bezeichnet wie "publisher", sollte das Item auch die gleiche ID ("@id") haben und auf die gleiche URL verweisen.

01.03.2019 22:17 | geändert: 01.03.2019 22:20

1 Forenmitglied fand diesen Beitrag gut

13 Martin

Als "Person", ähnlich wie in dem von mir verlinkten Thread auf stackoverflow.com, nur dass dort "Organization" top-level-item ist. Wenn "name" und "@id" übereinstimmen mit "name" und "@id" des Publishers der einzelnen Webpages, dann ist die Zuordnung denke ich eindeutig.


Das heißt, ich verwende das publisher-property gar nicht auf der legal page bzw. nur für die parallel als zweites top-level-item angeordnete, zusätzliche "ContactPage"? Aber dank der id ist trotzdem klar, dass das der publisher (und copyrightHolder) ist?

Dann würde das auf der legal page (.../copyright) so aussehen:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
[ {
"@type": "Person",
  "name": "mein Name"
  "@id": "http://www.example.de/copyright", 
  "url": "http://www.example.de/copyright"
   },

{
  "@type": "ContactPage",
  "url": "http://www.example.de/copyright",
  "publisher": {
     "@type": "Person",
     "@id": "http://www.example.de/copyright",
     "name": "mein Name",
     "url": "http://www.example.de/copyright",
     "isicv4": "8620",
  },
  "copyrightHolder": {
     "@type": "Person",
     "name": "mein Name",
     "@id": "http://www.example.de/copyright"
  }
  }
]
}
</script>


Wenn ich die URL der legal page gleichzeitig als id verwende, kommt diese URL halt inflationär oft vor...

Kann ich die obigen zwei Teile der legal page, also "Person" und "ContactPage" in einem script abhandeln oder müssen das zwei eigene scripte sein? Ersteres wäre mir lieber, aber mit der Auzählungsklammer habe ich das wohl falsch gemacht.

Auf den Einzelseiten sähe es dann immer so aus:

  "publisher": {
     "@type": "Person",
     "name": "mein Name",
     "url": "http://www.example.de/copyright",
    "@id": "http://www.example.de/copyright"
	 
	 
  "copyrightHolder": {
     "@type": "Person",
     "name": "mein Name",
     "url": "http://www.example.de/copyright" 
     "@id": "http://www.example.de/copyright"
  }

02.03.2019 14:04 | geändert: 02.03.2019 14:06

14 Jörg Kruse

Wenn "@context" für beide Items gelten sollen, dann muss das Array der Property "@graph" zugeordnet werden. Außerdem fehlte noch ein Komma. Ich habe das ganze mal sauber eingerückt, damit die Struktur und etwaige Fehler besser zu erkennen sind:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "name": "mein Name",
      "@id": "http://www.example.de/copyright",
      "url": "http://www.example.de/copyright"
    },
    {
      "@type": "ContactPage",
      "url": "http://www.example.de/copyright",
      "publisher": {
        "@type": "Person",
        "@id": "http://www.example.de/copyright",
        "name": "mein Name",
        "url": "http://www.example.de/copyright",
        "isicv4": "8620"
      },
      "copyrightHolder": {
        "@type": "Person",
        "name": "mein Name",
        "@id": "http://www.example.de/copyright"
      }
    }
  ]
}
</script>

02.03.2019 15:53 | geändert: 02.03.2019 15:53

1 Forenmitglied fand diesen Beitrag gut

15 Martin

Okidoki.

Der Unterschied dieses Codes im Vergleich zu dem von mir in post 11 genannten liegt darin, dass bei deinem obigen Code Person top-level-item ist (genauer gesagt einer von insgesamt zwei top-level-items) und zwar - dank id - als Publisher und CopyrightHolder.

Bei meinem in post 11 genanten Code hingegen ist "ContactPage" alleiniger top-level-item und "publisher(Person)" wird zwar explizit genannt, ist aber nur auf der zweiten Ebene. So gesehen also etwas weniger prominent für diese Seite (soweit es schema angeht).

Für den Code der Einzelseiten hat dieser Unterschied keine weitere Auswirkung. Der bleibt wie in meinem letzten post (unten).

Verstehe ich das soweit alles richtig?

Wenn ich den obigen Code mit den zwei top-level-items in das SD testing tool von G eingebe, erkennt das tool übrigens rechts dann nur die ContactPage, nicht die Person. Bringt aber keine Fehlermeldung.
Ist das eine Eigenart oder bug des SDTT? Letztlich soll es ja nicht zuletzt G richtig erkennen...

02.03.2019 22:27 | geändert: 02.03.2019 22:28

16 Jörg Kruse

Wenn ich den obigen Code mit den zwei top-level-items in das SD testing tool von G eingebe, erkennt das tool übrigens rechts dann nur die ContactPage, nicht die Person.

Ja, ich habe mal etwas getestet. Wenn man die Properties "publisher" und "copyrightHolder" testweise weglässt:

{
  "@context": "http://schema.org",
  "@graph": [
    {
      "@type": "ContactPage",
      "url": "http://www.example.de/copyright"
    },
    {
      "@type": "Person",
      "name": "mein Name",
      "@id": "http://www.example.de/copyright",
      "url": "http://www.example.de/copyright"
    }
  ]
}

... dann erkennt das Tool zwei Items auf Top-Level. Es scheint so, dass das Tool erkennt, wenn Person als Property weiter oben bereits eingebaut ist und deswegen kein zweites mal als Top Level Item aufführt.

Wenn man nämlich "publisher" und "copyrightHolder" belässt, aber einen Teil ihrer Properties in das Item Person verschiebt:

{
  "@context": "http://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "@id": "http://www.example.de/copyright",
      "name": "mein Name",
      "url": "http://www.example.de/copyright",
      "isicv4": "8620"
    },
    {
      "@type": "ContactPage",
      "url": "http://www.example.de/copyright",
      "publisher": {
        "@type": "Person",
        "@id": "http://www.example.de/copyright" 
      },
      "copyrightHolder": {
        "@type": "Person",
        "@id": "http://www.example.de/copyright"
      }
    }
  ]
}

... dann erkennt das Tool anhand von "@id" die Verknüpfung und ergänzt die fehlenden Properties von "publisher" und "copyrightHolder" entsprechend aus dem (nicht aufgeführten) Top Level Item Person. "@id" ist für die Verknüpfung anscheinend ausreichend. Ich weiß aber nicht, ob das auch seitenübergreifend so funktioniert...

04.03.2019 14:15 | geändert: 04.03.2019 14:20

1 Forenmitglied fand diesen Beitrag gut

17 Martin

... dann erkennt das Tool anhand von "@id" die Verknüpfung und ergänzt die fehlenden Properties von "publisher" und "copyrightHolder" entsprechend aus dem (nicht aufgeführten) Top Level Item Person. "@id" ist für die Verknüpfung anscheinend ausreichend. Ich weiß aber nicht, ob das auch seitenübergreifend so funktioniert...


Hm, das macht mir die Entscheidung, welche der beiden Grundvarianten (ContactPage mit Person-Publisher-property oder ContactPage und Person als zwei top-level-items) ich nehmen soll, nicht gerade leichter.

Ist es bezüglich der Wichtigkeit im Sinne von schema.org wirklich ein großer Unterschied, ob "Publisher-Person"
a) property des einen top-level-items "ContactPage" ist und eine id hat (s. post 11) oder
b) einer von zwei top-level-items ist?

Wenn man bedenkt,
- dass es bei Lösung a) nur zwei properties gibt und publisher so gesehen relativ "wichtig" ist (wenngleich nur für diese Seite gültig) und über die @id bei der Publisher-Person eindeutig wird, dass es die gleiche Person wie auf allen anderen Seiten ist,
- auf der Seite selbst alle drei Elemente (publisher, copyrightHolder, Kontaktdaten) in etwa gleich wichtig sind
- ich gerne zuverlässig seitenübergreifend funktionierende Codes hätte
- "ContactPage" als "page"-Item in der schema-Theorie mehr so einen Container-Character hat, der als "Seitenart" seinen eigentlichen Inhalten durchaus Raum lässt
- ein(!) top-level-item eine übliche, empfehlenswerte und für mich verständliche Codierung darstellt,
-zwei top-level-items die Bedeutung der Publisher-Person ebenfalls einschränken und
- dass der Publisher-Code auf allen anderen Seiten unabhängig von Lösung a) oder b) dort immer der Gleiche ist ...

... dann spricht auch nichts gegen Lösung a), wie im post 11. Oder was meinst du?

04.03.2019 20:15

18 Jörg Kruse

Hm, das macht mir die Entscheidung, welche der beiden Grundvarianten (ContactPage mit Person-Publisher-property oder ContactPage und Person als zwei top-level-items) ich nehmen soll, nicht gerade leichter.

Du kannst beides nehmen. Das Tool zeigt dir das Top-Level-Item Person bei gleicher ID nur nicht mehr separat an, weil es hier schon (korrekt) kombiniert. Das zeigen ja meine Tests: das nicht angezeigte Top-Level-Item Person wird nicht ignoriert, sondern ausgewertet, indem deren zusätzliche Properties ("name", "url" und "isicv4") auch in der Property publisher angezeigt wird, obwohl dort nicht vorhanden, siehe den zweiten Code in meinem letzten Post.

- ein(!) top-level-item eine übliche, empfehlenswerte und für mich verständliche Codierung darstellt,

Ja, aber die URLs der publisher Properties der verschiedenen Seiten verweisen alle auf diese Seite, woraus doch ableitbar ist, dass der Publisher hier auch Thema der Seite sein sollte? Die Publisher-Property von ContactPage bezieht sich nur auf den Publisher der ContactPage. Wenn die Seite nur ein Topic haben soll, dann sollte der Publisher der gesamten Webbsite vielleicht eine eigene Seite erhalten (z.B. http://www.example.de/publisher), was dann auch seine Wichtigkeit unterstreichen würde?

05.03.2019 15:59 | geändert: 05.03.2019 16:05

1 Forenmitglied fand diesen Beitrag gut

19 Martin


Ja, aber die URLs der publisher Properties der verschiedenen Seiten verweisen alle auf diese Seite, woraus doch ableitbar ist, dass der Publisher hier auch Thema der Seite sein sollte?


Ist er ja. Es ist die "legal page", wo ich Impressum und Rechtliches behandle: Kontaktdaten, Copyright und eben den Publisher.
Ist er denn kein "Thema" mehr im Sinne von schema, wenn er "nur" property einer "ContactPage" ist und per id deutlich wird, dass es dieselbe Person ist wie auf den anderen Seiten? Vermutlich wirst du sagen "So ist es."

Ich habe schon verstanden, dass das property nur für die ContactPage gilt und formal gesehen ist der publisher dann wohl tatsächlich kein "Thema" mehr der legal page. Auch wenn die "ContactPage" als top-level-item vermutlich ein nur schwaches "Thema" darstellt, das primär von seinen properties lebt, die den eigentlichen Inhalt beschreiben. ContactPage ist ein Unterfall von Webpage und besagt inhaltlich für sich alleine für Sumas nicht sehr viel.

Na ja und wenn Publisher-Person als top-level-item auch nur eines von zwei top-level-items ist, dachte ich, ist der Unterschied zwischen beiden Grundvarianten vielleicht nicht so groß.

Wenn die Seite nur ein Topic haben soll, dann sollte der Publisher der gesamten Webbsite vielleicht eine eigene Seite erhalten (z.B. http://www.example.de/publisher), was dann auch seine Wichtigkeit unterstreichen würde?


Theoretisch hast du Recht, aber eine Seite alleine für die "Publisher-Person" ist praktisch kaum sauber umsetzbar und sinnvoll. Unabhängig von schema-Überlegungen hat man halt sinnvollerweise nur eine Seite, die sich dem Rechtlichen widmet. Und ein Aspekt ist der Publisher.

Es ist auch nicht zwingend, überall die Seite für den publisher zu verlinken im schema-code. Ich dachte halt, es wäre sinnvoll und informativ, wenn es dann eine Seite gibt, wo der Publisher einen gewichtigen Teil einnimmt.

Würdest du empfehlen, auf die Publisher-Verlinkungen auf allen Seiten zu verzichten, wenn der Publisher auf seiner Seite "nur" property einer farblosen ContactPage ist und dieselbe id angibt?

Das Tool zeigt dir das Top-Level-Item Person bei gleicher ID nur nicht mehr separat an, weil es hier schon (korrekt) kombiniert.

Verstehe, aber du sagtest auch, man wüsste nicht sicher, ob das seitenübergreifend so funktionere.

06.03.2019 12:09

20 Martin

Letztlich geht es einfach darum, dem Rechnung zu tragen, was in den QRG steht: "Who is responsible for the website" (die ganze Website, nicht nur einzelne pages!). Faktisch ist das der "Publisher", eine "Person".

Und das so zu machen mit Hilfe von schema, dass es eindeutig zu verstehen ist für Google.

09.03.2019 11:27