Zur Navigation

Das "url"-property von schema.org richtig verwenden

1 Martin

Hallo,
das url-property wird in der Regel verwendet, um dem top-level-item dessen URL mitzugeben, also den Sumas zweifelsfrei mitzuteilen, "wo" der betreffende Datentyp zu finden ist.

Habe ich einen Artikel als top-level-item und die URL des Artikels bzw. der Artikelseite lautet "http://www.example.com/artikel1", dann sieht das im JSON-LD also so aus:
"@type": "Article",
"url": "http://www.example.com/artikel1"


Kann es sein, dass ich mit "url" aber genau genommen jedem auch nur eingebetteten weiteren Datentyp seine "url" mitgeben kann, selbst wenn diese auf einer anderen Seite ist?

Wenn ich z.B. auf der Artikelseite im Footer neben dem Copyright meinen Namen angebe (was mich als Publisher meint) und der Publisher/Rechtliches auf einer ganz anderen Seite (.../copyright) ausführlich beschrieben ist, kann ich dann mit der publisher-url auf diese andere Seite verweisen:

"@type": "Article", 
"url": "http://www.example.com/artikel1"
"publisher": {
  "@type": "Person",
  "name": "Martin Kunterbunt", 
  "url": "http://www.example.com/copyright"
 }

22.02.2019 16:49 | geändert: 22.02.2019 16:58

2 Jörg

Aus der Struktur des Gesamtobjekts geht ja eindeutig hervor, dass diese Property zum Objekt "publisher" gehört; das Objekt "publisher" vom Typ "Person" kann der Definition zufolge die Property "url" enthalten, also spricht denke ich nichts dagegen.

22.02.2019 23:41

3 Martin

Url kann ich für "person" verwenden, ja. Es geht mir darum, dass die url selbst, also der "Wert" vom url-Property bei der "publisher-person" auf eine andere Seite verweist, auf die copyright-Seite.

Das ganze Markup dient der Artikelseite "/artikel1" und dann habe ich aber ein eingebettetes Objekt, dessen "url" auf eine ganz andere Seite verweist, nämlich auf die copyright-Seite (weil dort der Publisher ausführlich beschrieben ist und nicht nur kurz namentlich erwähnt wie auf der Artikelseite).

Normalerweise dient ein Markup doch der Beschreibung der betreffenden Seite und deren Inhalte, also im obigen Beispiel der Artikelseite. Die Publisher-Url zeigt aber woanders hin, auf die copyright-Seite.

23.02.2019 12:36

4 Jörg

Es geht mir darum, dass die url selbst, also der "Wert" vom url-Property bei der "publisher-person" auf eine andere Seite verweist, auf die copyright-Seite.

Das ist denke ich normal, dass die beiden URLs auf verschiedene Seiten verweisen.

Normalerweise dient ein Markup doch der Beschreibung der betreffenden Seite und deren Inhalte, also im obigen Beispiel der Artikelseite. Die Publisher-Url zeigt aber woanders hin, auf die copyright-Seite.

Ja, kann man vielleicht vergleichen mit einem Fremdschlüssel in einer Artikel-Tabelle einer SQL-Datenbank, welche auf einen Eintrag in einer Publisher-Tabelle verweist. Anderfalls müsste man die komplette Autoren-Info entweder unter jeden Artikel des Publishers kopieren oder auf die Info verzichten. Der Publisher existiert doch unabhängig vom einzelnen Artikel und hat von daher sinnvollerweise eine eigene URL.

24.02.2019 19:54 | geändert: 24.02.2019 19:54

1 Forenmitglied fand diesen Beitrag gut

5 Martin

Der Publisher existiert doch unabhängig vom einzelnen Artikel und hat von daher sinnvollerweise eine eigene URL.


Ja genau, als Publisher stelle ich mich auf einer extra Seite, meiner "legal page" vor, wo es um Rechtliches geht, also publisher und copyright. Dort stehen außerdem die Kontaktdaten (als Bild, für Sumas nicht lesbar, siehe anderer Thread).

Sagen wir mal, diese legal page hat die URL "..../copyright", wie oben schon angesprochen. Wie könnte nun das Markup für diese legal page aussehen, wenn ich ausdrücken will, dass diese legal page
- den publisher namentlich enthält
- den Copyrightholder namentlich nennt und
- eine "ContactPage" im Sinne von schema.org ist, die aber
- Kontaktdaten nicht auszeichnet (weil zwar vorhanden, aber als Bild nicht lesbar für Sumas)?

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


Müsste so passen, oder? Die Kontaktdaten habe ich weggeleassen, weil sie Google nicht lesen kann und ich sie auch gar nicht im Knowledge Graph haben will.

Bedeutet der publisher als einfaches property der ContactPage denn nun nicht, dass ich nur der publisher der vorliegenden ContactPage bin, anstatt "insgesamt"?
"publisher" ist doch eine Eigenschaft (nur) der ContactPage hier? Oder verstehe ich da das schema.org-System zu eng...

25.02.2019 11:53

6 Jörg

www.example.de/copyright behandelt ja schon (mindestens) zwei verschiedene Objekte, einmal "@type": "ContactPage" und einmal "@type": "Person" (falls Publisher und CopyrightHolder zwei verschiedene Personen sind, dann drei)

In diesem Thread auf stackoverflow wird beschrieben, wie man diese syntaktisch korrekt kombinieren kann:

https://stackoverflow.com/questions/48294593/how-do-you-combine-several-json-ld-markups

Das heißt, ContactPage und Person (Publisher/copyrightHolder) müssen auf einer Ebene angeordnet werden, in zwei Scripten, als Elemente eines Arrays oder in einem Graph

26.02.2019 10:55 | geändert: 26.02.2019 11:03

1 Forenmitglied fand diesen Beitrag gut

7 Martin

www.example.de/copyright behandelt ja schon (mindestens) zwei verschiedene Objekte, einmal "@type": "ContactPage" und einmal "@type": "Person" (falls Publisher und CopyrightHolder zwei verschiedene Personen sind, dann drei)


Danke für deine Geduld.

Interessant, ContactPage und Person nebeneinander, wenn man mehrere top-level-items will...

Verstehe ich dich richtig, dass dadurch ausgedrückt wird, dass ich nicht nur der Publisher der Kontaktseite, sondern generell bin, was bei einer Einbettung von Person in ContactPage nicht der Fall wäre?

Weil normalerweise ist ContactPage (wie alle "...page") ein sehr allgemeiner "Container-Datentyp", der immer irgendwelche weiteren Datentypen eingebettet hat, z.B. den publisher als Person oder Organization.

Folgendes Beispiel habe ich im Google-Forum gefunden. Unterschiedlich ist, dass der Publisher anders als bei mir eine Organization ist und die publisher-URL dann auf die Startseite verweist.

<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "ContactPage",
  "url" : "https://www.compareandchoose.com.au/contact_us",
  "text" : ...,
  "publisher" : {
    "@type" : "Organization",
    "name" : "Compare and Choose",
    "@id" : "https://www.compareandchoose.com.au/",
    "logo" : "https://www.compareandchoose.com.au/images/Compare-and-Choose-logo.png",
    "url" : "https://www.compareandchoose.com.au/",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Level 10, 239 George Street",
      "addressLocality": "Brisbane",
      "addressRegion": "Queensland",
      "postalCode": "4000" 
    },
    "email": "admin@compareandchoose.com.au",
    "sameAs" : [ ... ],
    "contactPoint" : {
      "@type" : "ContactPoint",
      "contactType" : "Customer Service",
      "telephone" : "+61 7 3041 1145"
    }
  }
}
</script>

26.02.2019 12:43

8 Jörg

Publisher ist eine Property einer einzelnen Webpage und muss (bzw. kann) dementsprechend für jede Webpage einzeln angegeben werden. Denkbar ist, dass einzelne Seiten auch verschiedene Publisher haben. Mit der URL kann auf die Webpage verwiesen werden, auf welcher die betreffende Person bzw. Organisation beschrieben wird. Dass die Person bzw. Organisation für einige Websiten die Rolle des Publishers innehat, wird dort nicht gekennzeichnet. Das geht ja bereits aus den Zuordnungen der einzelnen Webseiten hervor. Die Person kann ja auch noch andere Rollen ausfüllen, z.B. copyrightHolder. Die Zuordnung erfolgt immer unter den Webpages, für die diese Zuordnung gilt. Andersrum müsstem man ja unter der Person oder Organisation die Webpages aufzählen, für welche diese Zuordnung gilt, und das wäre unökonomisch.

27.02.2019 10:59 | geändert: 27.02.2019 11:08

1 Forenmitglied fand diesen Beitrag gut

9 Martin

Publisher ist eine Property einer einzelnen Webpage und muss (bzw. kann) dementsprechend für jede Webpage einzeln angegeben werden. Denkbar ist, dass einzelne Seiten auch verschiedene Publisher haben.


Verstehe ich. Und wird auch auf jeder page extra angegeben.

Mit der URL kann auf die Webpage verwiesen werden, auf welcher die betreffende Person bzw. Organisation beschrieben wird.


Auch das habe ich so vor, d.h., auf jeder page mit dessen publisher-Angabe setze ich auch den Verweis "url": "...copyright" dazu. Die Frage ist, wie nun genau die Person dort auf der copyright-page beschrieben wird.

Dass die Person bzw. Organisation für einige Websiten die Rolle des Publishers innehat, wird dort nicht gekennzeichnet. Das geht ja bereits aus den Zuordnungen der einzelnen Webseiten hervor.


Also kann bzw. muss ich auf der Copyright-page, wo ich mich als publisher (und auch copyright-Holder) vorstelle und für die der obige Code gelten soll, auch nicht mehr tun, als wie bei den anderen pages, obwohl ich dort überall auf die copyright-page verweise?

Was bringt dann der url-Verweis auf allen Einzelseiten zur copyright-page, wenn ich dort auch "nur" als normaler publisher der copyright-page selbst ausgezeichnet bin? (Deswegen eine "id" mit der copyright-url zusätzlich anlegen und auf allen Seiten vermerken?)

Oder wäre der Unterschied der, dass ich "person" als top-level-item neben der ContactPage wäre? Bin mir nicht sicher, ob publisher/person jetzt wie im obigen Forumsbeispiel in ContactPage eingebettet sein kann oder ein eigener top-level-item sein muss/soll.

27.02.2019 12:39

10 Jörg

Naja, vielleicht war mein Vergleich mit dem Fremdschlüsssel nicht ganz glücklich. In deinem Beispiel aus dem Google-Forum verweist die Publisher-URL auf die Startseite, ebenso in dem JSON-LD-Beispiel auf schema.org für die Property url. In diesen Fällen hat die URL vielleicht eher eine Funktion als ID, die eindeutiger ist wie z.B. ein Allerweltsname wie "Peter Meier". Man könnte vielleicht aber auch erwarten, unter der URL mehr über den Publisher zu erfahren, nicht zwangsläufig über das dortigen JSON-LD-Script, sondern über den Inhalt der betreffenden Webseite. Genauer definiert ist das ja nicht:

URL of the item.

Wenn der Publisher auf der Seite beschrieben wird, dann könntest du diese als top-level-item behandeln.

Darüberhinaus kann natürlich auch ContactPage über einen Publisher verfügen, dessen URL (in diesem speziellen Fall) auf die gleiche Seite verweist.

28.02.2019 17:39 | geändert: 28.02.2019 17:40

1 Forenmitglied fand diesen Beitrag gut