metadata-profile
Funktion und Struktur
Datenobjekte sollen keine beliebigen Metadaten haben. Statt dessen muss eine genaue Spezifizierung erfolgen, welche Metadaten ein Datenobjekt haben kann. Diese Funktion übernimmt das Metadaten-Profil.
Die Spezifikation erfolgt nicht nur inhaltlich (Datentyp, mögliche Werte). Zusätzlich enthält ein Metadatenprofil Festlegungen für die Darstellung und die Interaktion für die Eingabe bzw. Änderung durch den User. Durch diese Festlegungen wird ein einheitliches Verständnis der Metadaten eines Objektes über Anwendungen hinaus erreicht.
Es gibt Standards für die Definition von Metadaten-Profilen, wie z. B. schema.org und SKOS. Für die Datenobjekte des IQB sollen jedoch sehr viel einfachere Datenstrukturen genutzt werden. Beipielsweise gibt es nur eine Hierarchie-Ebene: Ein Dateneintrag kann keine “Kinder” haben. Ein Eintrag “Adresse” hat also keine nachgelagerten Objekte “Straße” und “Ort” usw. Dies ist erforderlich, um die Programmierungen und auch das User Interface schlank zu halten.
{
"id": "https://raw.githubusercontent.com/iqb-vocabs/p60/master/item.json",
"label": [{
"lang": "de",
"value": "BT Fragebögen - Item"
}],
"groups": [
{
"label": [
{
"lang": "de",
"value": "Item"
}
],
"entries": [
{
"id": "iqb_var_name",
"label": [
{
"lang": "de",
"value": "Variablenbezeichnung"
}
],
"type": "text",
"parameters": {
"format": "multiline"
}
},
{
"id": "w1",
"label": [
{
"lang": "de",
"value": "Konstrukt"
}
],
"type": "vocabulary",
"parameters": {
"url": "https://w3id.org/iqb/v87/cq/",
"allowMultipleValues": false,
"hideNumbering": true
}
}
]
}
]
}
Basisdaten
Ein Profile muss eine id
zur Identifikation haben und ein label
für die Darstellung z. B. in einer Profil-Liste. Das Label ist mehrsprachig, d. h. es handelt sich um “Sprachenkodierten Text”: Eine Liste von Objekten jeweils mit den Properties lang
für die ISO-kodierte Sprachangabe und value
für den sprachspezifischen Text.
Danach folgen die Profil-Einträge. Sie sind gruppiert in groups
, damit die UI bei großen Profilen strukturieren kann (z. B. in einem Accordeon). Eine Gruppe hat jeweils ein label
(sprachenkodierter Text) und dann ein Array mit den Einträgen.
Eintrag
Jeder Profil-Eintrag hat folgende Daten:
id
: Ein ID-fähiger String, der unique im Profil sein muss. Sollten verschiedene Profile denselben Eintrag haben, sollte man ihn mit der gleichen ID benennen, um Datenverlust bei einem späteren Wechsel des Profils zu vermeiden.label
: sprachenkodierter Texttype
: Hier sind die Wertetext
,vocabulary
,boolean
undnumber
möglichparameters
: Je nach Typ definieren unterschiedliche Parameter den Inhalt und die Darstellung des Eintrags (s. u.)
Parameter für text
Bei diesem Eintragstyp wird Text eingegeben.
format
: Hier sind die Wertesingle
undmultiline
möglich1textLanguages
: Hier wird festgelegt, ob der Dateneintrag in mehreren Sprachen erfolgen soll. Beispielsweise kann ein Datenobjekt “Studie” den Eintrag “Beschreibung” enthalten, und diese Beschreibung soll aber auf Deutsch und Englisch verfügbar sein, um das Datenobjekt in einem Webauftritt mit Sprachumschaltung sinnvoll verwenden zu können. Es wird hier eine ISO-kodierte Sprachangabe (2 Kleinbuchstaben) erwartet. Wenn die Liste leer ist, wird als Default["de"]
benutzt.pattern
: Dieser reguläre Ausdruck kann verwendet werden, um die Eingabe zu validieren.
Parameter für vocabulary
Bei diesem Eintragstyp wird stets ein Vokabular geladen und eine Auswahl angeboten.
url
: Die URL des VokabularsallowMultipleValues
: gibt an, ob mehrere Vokabular-Einträge ausgewählt werden könnenselectionMode
: Die UI soll eine bestimmte Darstellung wählen:in-form
bedeutet, dass es nur wenige Einträge gibt, die man in ein Formular integrieren kann (Radio-Controls bzw. Checkboxes);dialog
bedeutet, dass es sich um eine größere Anzahl handelt, die besser in einer separaten Dialogbox dargestellt wirdmaxLevel
: Bei hierarchischen Vokabularen ist manchmal gewünscht, die Auswahl auf eine bestimmte Hierarchiebene zu begrenzen.hideNumbering
: Vokabular-Einträge können Kurzbezeichnungen haben (z. B. Nummerierung). Deren Anzeige kann man hierüber unterdrücken.hideDescription
: Vokabular-Einträge können Langbezeichnungen haben (nähere Erläuterung). Deren Anzeige kann man hierüber unterdrücken.hideTitle
: Vokabular-Einträge haben einen Titel. Dessen Anzeige kann man hierüber unterdrücken, um z. B. nur die Nummer anzuzeigen.addTextLanguages
: Wenn hier eine ISO-kodierte Sprachangabe (2 Kleinbuchstaben) gefunden wird, kann der User bei Auswahl eines Vokabular-Eintrages zusätzlichen Text in der bzw. den angegebenen Sprache(n) hinzufügen. Das kann eine Erläuterung oder eine Literaturangabe sein.
Parameter für boolean
Bei diesem Eintragstyp ist stets eine Auswahl zwischen zwei Optionen zu wählen.
trueLabel
,falseLabel
: Jeweils sprachenkodierter Text mit der Bezeichnung der Optionen
Parameter für number
Bei diesem Eintragstyp ist stets eine Zahl einzugeben.
digits
: Anzahl NachkommastellenminValue
,maxValue
: Mindest- bzw. MaximalwertisPeriodSeconds
: Besonderes Eingabeformat für Sekunden: Wenn dieser Parametertrue
ist, dann soll die Eingabe in der Form00:00
erfolgen.
Fußnoten
Die Spezifikation sieht auch das Format
html
vor. Dies wird aktuell nicht unterstützt in den Programmierungen des IQB.↩︎