Closed akuckartz closed 10 years ago
@akuckartz Was sind Attributnamen?
@sterni24 Namen von Eigenschaften, also z.B. "meeting" (statt "meetings"), "paper" (statt "papers") etc.
Die Vereinheitlichung der Terminologie in der Spezifikation ist auch noch eine Aufgabe (mit Properties, Eigenschaften, Attributen ist das selbe gemeint).
@akuckartz OK, dann meinen wird das Gleiche. Ich hatte das im Beitrag #117 schon einmal in ähnlicher Richtung angeregt:
'Da das Ganze auch irgendwann programmiert werden muss, wäre es eine weitere Optimierung, wenn die Objektbezeichnungen gemäß den URL-Pfaden angepasst würden oder umgekehrt. Beispiel: oparl:Person -> oparl:person "http://oparl.beispielris.de/bodies/0/person/" oder oparl:Person -> oparl:peoples "http://oparl.beispielris.de/bodies/0/peoples/"'
Im Hinblick auf die Verwendung der URLs sollte hier die Empfehlung ihrerseits ausgesprochen werden, die selben Namen (lt. Ihrem Vorschlag "singular") zu verwenden. Das würde ich auch so konsequent in den Beispielen durchziehen!
@sterni24 Bezüglich der Beispiele der Hinweis, dass ich für einen Anhang der Spezifikation die Erstellung eines vollständigen zusammenhängenden Satzes von Objekten einer nicht existierenden Kommune plane (oder einer Kommune die kein kommerzeil vertriebenes RIS verwendet). Das wird aber voraussichtlich erst im Laufe des Mai 2014 erfolgen.
Ist in den Abschnitten 8xxx eingearbeitet. Deshalb schliesse ich dieses Issue.
@akuckartz Sie können sich auch gern an unserer Musterstadt versuchen!
Ich muss sagen, ich finde das furchtbar, wenn die Eigenschaft einer Körperschaft, die auf alle Sitzungen zeigen soll, "meeting" statt "meetings" heißt und alle Mitglieder einer Gruppierung "participant" statt "participants". Das ist gegen jede Intuition.
Ich möchte das rückgängig machen.
Eine erste schnelle Antwort mit ein paar unsortierten Gründen:
members
als "legacy spelling" deklariert und durch member
ersetzt: http://schema.org/members (Dass Google, Microsoft und Yahoo für Singular sind wäre alleine kein ausreichendes Argument.)participant
z.B. ist jedes Objekt (ob alleine oder als Element einer Liste) ein participant
der Gruppierung.Ich werde das aber noch ausführlicher (und hoffentlich verständlicher) begründen.
Mag sein, dass man das in relationalen Datenbanken so machen würde. Da werden 1:n Beziehungen ja auch über einen Fremdschlüssel modelliert, der auf genau ein Objekt zeigt. Das lässt sich nicht gut übertragen. Tabellennamen hingegen werden gerne "documents", "posts", "comments" genannt, seltener "document", "post", "comment".
Wenn ich beispielsweise in einer Dokumenten-DB einen Blogbeitrag modellieren will, nenne ich die Tags-Eigenschaft "tags" und nicht "tag". Und die Kommentare heißen "comments" und nicht "comment". Aus Tutorials und Artikeln kann ich bestätigen, dass andere das ebenso machen.
ORM-Bibliotheken, beispielsweise für Ruby on Rails (AcitveRecord) oder für Python (SQLAlchemy), geben sich große Mühe, Objekt-Eigenschaften, die in der relationalen Datenbank mit Singular-Bezeichnung stehen, zu pluralisieren. Das machen sie, damit es ein Entwickler leichter hat, mit dem Objekt zu arbeiten.
Im Sinne der Selbstbeschreibungsfähigkeit bin ich weiterhin dafür, dort Plural anzuwenden, wo die Eigenschaft eine Liste von Objekten ist.
In Graph-Datenbanken ist es noch einfacher als bei relationalen Datenbanken - und entsprechend in den Linked Data und JSON-LD Welten. Auch aufgrund der Verwendung von org:Organization
käme es zu Inkonsistenzen, denn darin wird durchgehend Singular verwendet.
Ein Beispiel anhand von "member" / "members".
In einem Tripel financialCommittee member John_Doe
ist die Eigenschaft immer Singular, nie plural.
Dies:
"@id": "einKleinesGremium",
"member": "marian",
ist "nur" eine kompakte Schreibweise für ein Tripel:
"einKleinesGremium" "member" "marian"
während dies:
"@id": "einKleinesGremium",
"member": [ "marian", "andreas"],
"nur" eine kompakte Schreibweise für diese zwei Tripel ist (deren Reihenfolge irrelevant ist):
"einKleinesGremium" "member" "marian" .
"einKleinesGremium" "member" "andreas"
Es gibt keinen Unterschied zwischen
"@id": "einKleinesGremium",
"member": "marian",
und
"@id": "einKleinesGremium",
"member": ["marian"],
D.h. das an der einen Stelle eine JSON-Liste steht und an der anderen nicht ist nur eine Frage der Schreibweise. Der Gehalt an Daten und Informationen ist identisch.
Ich bin sehr für Selbstbeschreibung und da auch im Rahmen von #18 dran. Aber die Verwendung von Plural würde das wirklich nicht fördern. Ich habe mich davon allerdings auch erst vor ein paar Wochen überzeugt.
@marians Ich reiche das Issue an dich weiter. Meine Haltung habe ich ja erklärt, dass sie nachvollziehbar ist hoffe ich.
Wie auch immer das Ergebnis aussieht: da sich mehrere Welten mit unterschiedlichen und gut begründeten Konventionen überlappen ist es unvermeidbar, dass es zu Konventions- oder Regelbrüchen kommen wird. (Mit Rechts- oder Linksverkehr ist das insoweit nicht vergleichbar, denn die Regeln dafür sind beide nicht gut begründet - wenn überhaupt.)
Ein Beispiel auf das ich bei der Suche nach etwas anderem (zusätzliches Angebot von einfachem JSON) gestoßen bin. Metadaten der US Regierung: http://project-open-data.github.io/schema/
Auch dort wird durchgängig Singular verwendet, mit der interessanten aber korrekten Ausnahme von 'references'.
Es gibt hierfür wahrscheinlich eine ziemlich einfache Lösung, die eine JSON-LD Serialisierung mit Plural-Formen ermöglicht und gleichzeitig auf einer Singular-Form für RDF aufbaut - und zudem die Komplexität fast nicht vergrößert. Dies wird offenbar auch von Popolo so gemacht.
Der Vollständigkeit halber ein entsprechendes Issue der Hydra CG, die zunächst Plural für Eigenschaften verwendet hatte, aber dann einstimmig zu Singular gewechselt ist: https://github.com/HydraCG/Specifications/issues/25
Die beiden scheinbar unvereinbaren Anforderungen können mittels Kontext gleichzeitig erfüllt werden. Die Eigenschaft org:hasMembership
kann in dem JSON-LD Kontext z.B. als memberships
serialisiert werden. Bei einer Deserialisierung, wie sie in Clients bei der Konvertierung in RDF-Tripel erfolgt, wird dann automatisch die Singular-Form verwendet. Wer stattdessen die Plural-Form bevorzugt, der erhält diese in dem JSON-LD-Dokument als Eigenschaftsname. Damit erhalten die beiden Gruppen von Anwendungs-Entwicklern nahezu automatisch die jeweils bevorzugte Form.
Hier gibt es nichts mehr zu tun.
Konvention: Attributnamen sollten einheitlich singular statt plural sein.