Wurde gestern Abend Nix mehr. Mein Computer musste gestern Abend in der Firma bleiben. Daher jetzt.
Vielleicht wird es einfacher, wenn ich zu dem Beispiel oben ein Parallelbeispiel bringe. Ich hoffe, Du kannst ein Bisschen programmieren. Das folgende Beispiel ist grob an php angelehnt, könnte aber ganz ähnlich auch in c++, c# oder java geschrieben werden. Zunächst noch mal das Beispiel in html:

<div itemscope itemtype=”http://schema.org/Person”>
<a href=”alice.html” itemprop=”name”>Alice Jones</a>
</div>

Ich hab das itemprop gleich mal berichtigt. Jetzt die gleiche Aussage als Klasse:

class Person {
name = Alice Jones;
}

Hier ist, genau wie oben, „Person“ der Container. Alles da drin ist eine Property von Person. Ich habe das an php angelehnt, weil ich aus Gründen der Übersichtlichkeit auf streng typisierte Properties verzichten will. In html gibt es (derzeit?) keine strenge Typisierung.

Also, warum schreibe ich itemprop=“name“? Weil sonst zwar klar wäre, dass „Alice Jones“ eine Property von Person ist, aber nicht, was für eine. Du erinnerst Dich an „semantisch nähere Spezifikation“? Genau das greift hier. Aber wir sind mit dem Beispiel noch nicht am Ende:

class Person {
name = Alice Jones;
url = alice.html;
}

Warum ist das zulässig, ohne itemprop=“url“? Weil „alice.html“ eine Property von Person ist, und weil das href Attribut, dessen Inhalt „alice.html“ ist, _immer_ eine url ist. „alice.html“ ist also bereits komplett semantisch spezifiziert.

Es gibt Möglichkeiten, das noch näher zu spezifizieren. In xml gibt es dazu xlink. Für html hat man immerhin hreflang, rel und rev. Aber all Das ändert Nix daran, dass „alice.html“ eine url zu der Person ist.

Etwas Anderes wäre noch anzumerken. Es gibt nicht _die_ url zu einer Person. Es ist immer möglich, einer Person mehrere urls zuzuordnen. Genauso, wie man einer Person mehrere Namen zuordnen kann. Im Grunde sind also alle Properties dieser Klasse Arrays.