Output itc-ToolBox: TC-Merge
person
Eine TC-Merge-Datei ist stets eine Liste von Personen.
group
: ID der Gruppe laut Testtaker-Xmllogin
: Name des Logins laut Testtaker-Xmlcode
: Code innerhalb des Booklet-Tags in der Testtaker-Xml (ggf. leer)booklets
: Liste der Booklets - s. u.
[
{
"group": "cxz7hpwr",
"login": "cxz7hpwr",
"code": "1dpe",
"booklets": [ ]
},
{
"group": "cxz7hpwr",
"login": "cxz7hpwr",
"code": "1fud",
"booklets": [ ]
}
]
Die itc-ToolBox ist darauf ausgerichtet, bei hohen Datenmengen pro Testtaker-Gruppe eine Datei anzulegen. Möchte man die gesamte Datenmenge einlesen, müssen diese einzelnen Listen zusammengeführt werden. Da die JSON-Datei formatiert ist, kann man entsprechend die erste bzw. letzte Zeile einer Datei löschen bzw. ersetzen.
booklet
id
: ID des Booklets laut Booklet-Xmllogs
: Liste von Log-Einträgen (Ereignissen), bezogen auf das Bookletts
: Zeitstempel des Ereignisses (numerisch)key
: Schlüsselwort, das das Ereignis kennzeichnet (Typ), z. B.CURRENT_UNIT_ID
,LOADCOMPLETE
oderFOCUS
parameter
: Weitere Informationen als String zum Ereignis, abhängig vom Typ
units
: Liste der Units - s. u.sessions
: Liste von gestarteten Bearbeitungen des Bookletsbrowser
: Name und Version des verwendeten Browsers, z. B.Chrome 123.0.0.0
os
: Name und Version des Betriebssystem, z. B.Windows 10
screen
: Maße des Bildschirmes in Pixel, z. B.1280 x 720
,ts
: Zeitstempel der Ermittlung der Parameter (numerisch), z. B.1715593740477
loadCompleteMS
: Dauer des Ladeprozesses der Testinhalte (Player, Units, Booklet) in ms (numerisch), z. B.798
Eine neue Session wird angenommen, wenn in den Logs das Ereignis LOADCOMPLETE
gefunden wurde. Dies zeigt einen abgeschlossenen Ladeprozess der Testinhalte an. Der Startzeitpunkt einer Session kann angenommen werden, wenn man vom Zeitstempel ts
den Wert in loadCompleteMS
subtrahiert.
{
"id": "ABIEVALBOOKLET_BE_FRANZOESISCH_GN_LONG",
"logs": [
{
"ts": 1719466289261,
"key": "CONNECTION",
"parameter": "POLLING"
},
{
"ts": 1719466289253,
"key": "CONTROLLER",
"parameter": "RUNNING"
},
{
"ts": 1719466289361,
"key": "CURRENT_UNIT_ID",
"parameter": "Unit1"
},
{
"ts": 1719466289672,
"key": "CONNECTION",
"parameter": "WEBSOCKET"
}
],
"units": [ ],
"sessions": [
{
"browser": "Chrome 103.0.0.0",
"os": "Mac OS 10.12.6",
"screen": "1440 x 900",
"ts": 1719466289928,
"loadCompleteMS": 1805
},
{
"browser": "Chrome 103.0.0.0",
"os": "Mac OS 10.12.6",
"screen": "1440 x 900",
"ts": 1719485971651,
"loadCompleteMS": 1858
}
]
}
unit
id
: ID der Unit laut Booklet-Xml; wird benötigt, wenn man die Definition, das Kodierschema oder andere Daten der Unit benötigtalias
: Alias der Unit- dieser kann in der Booklet-Xml vergeben werden oder er wird automatisch erzeugt, sollte eine Unit mehrfach in einem Booklet vorkommen
- wird kein Alias vergeben, wird hier automatisch die ID der Unit gesetzt
- alle Bezüge in den Logs und Antwortdaten beziehen sich auf den Alias
laststate
: Liste vonkey
/value
-Paaren, um bestimmte für das Zurückblättern wichtige Unit-Zustände zu rekonstruierensubforms
: Liste der Antworten - s. u.chunks
: Liste der Pakete der Antworten; die Verona-Spezifikation erlaubt es, dass Antworten nicht einzeln, sondern gebündelt indataparts
geschickt werdenid
: jeder Chunk/datapart
muss eine ID habentype
: Datentyp der Antworten; bei IQB-Daten stetsiqb-standard@1.0
bzw. andere Versionts
: Zeitstempel der Speicherung (numerisch)variables
: Liste von IDs von Variablen, die mit dem Paket geschickt wurden; sollten Unterformulare genutzt worden sein, wird als Präfix der Wert vonsubform
gesetzt, gefolgt von einem Trenner, z. B.examineecount_0##choice1
logs
: Liste von Log-Einträgen (Ereignissen), bezogen auf die Unitts
: Zeitstempel des Ereignisses (numerisch)key
: Schlüsselwort, das das Ereignis kennzeichnet (Typ), z. B.RESPONSE_PROGRESS
oderCURRENT_PAGE_ID
parameter
: Weitere Informationen als String zum Ereignis, abhängig vom Typ
{
"id": "MP_motivation1",
"alias": "MP_motivation1_start",
"laststate": [
{
"key": "PLAYER",
"value": "RUNNING"
},
{
"key": "PRESENTATION_PROGRESS",
"value": "complete"
},
{
"key": "RESPONSE_PROGRESS",
"value": "complete"
}
],
"subforms": [ ],
"chunks": [
{
"id": "elementCodes",
"type": "iqb-standard@1.0",
"ts": "1715593741455",
"variables": [
"text_4",
"image_1",
"button_2"
]
}
],
"logs": [
{
"ts": 1715593739823,
"key": "PLAYER",
"parameter": "LOADING"
},
{
"ts": 1715593740340,
"key": "PLAYER",
"parameter": "RUNNING"
},
{
"ts": 1715593741013,
"key": "PRESENTATION_PROGRESS",
"parameter": "complete"
},
{
"ts": 1715593741013,
"key": "RESPONSE_PROGRESS",
"parameter": "complete"
}
]
}
subform
, response
Eine Antwort nach IQB-Standardformat enthält ein optionales Attribut subform
. Für die Datenverarbeitung ist es günstiger, diese Information - die z. B. in Befragungen genutzt wird - zu extrahieren und alle Variablen eines Unterformulars zu bündeln. Aus diesem Grund ist das Datenobjekt für die Antworten nocheinmal strukturiert:
id
: ID des Unterformulars bzw. leerresponses
: Liste der Antwortdatenid
: Variablen-IDstatus
: Status der Beantwortung; z. B.DISPLAYED
oderVALUE_CHANGED
value
: Antwortwert als String
{
"id": "examineecount_0",
"responses": [
{
"id": "sex",
"status": "VALUE_CHANGED",
"value": "2"
},
{
"id": "choice1",
"status": "VALUE_CHANGED",
"value": "1"
},
{
"id": "task11grade",
"status": "VALUE_CHANGED",
"value": "14"
},
{
"id": "choice2",
"status": "VALUE_CHANGED",
"value": "2"
},
{
"id": "task22grade",
"status": "VALUE_CHANGED",
"value": "14"
}
]
},
{
"id": "examineecount_1",
"responses": [
{
"id": "sex",
"status": "VALUE_CHANGED",
"value": "2"
},
{
"id": "choice1",
"status": "VALUE_CHANGED",
"value": "1"
},
{
"id": "task11grade",
"status": "VALUE_CHANGED",
"value": "9"
},
{
"id": "choice2",
"status": "VALUE_CHANGED",
"value": "2"
},
{
"id": "task22grade",
"status": "VALUE_CHANGED",
"value": "9"
}
]
}
In streng typisierten Computersprachen ist die offene IQB-Datenspezifikation des Antwortwertes problematisch. Daher werden hier die Werte in String transformiert. Der Datenwert null
ist hierbei in einen reservierten Wert "#null#"
übersetzt. Auch Array-Werte müssen entsprechend vor der Kodierung transformiert werden.
Wenn ein Wert mit den Zeichen data:application/octet-stream;base64
beginnt, handelt es sich meist um die Speicherung einer binären, nicht automatisch kodierbaren Antwort. Um die Datenmenge zu reduzieren, ermöglicht die itc-ToolBox, den Wert als separate Datei zu speichern:
- Der Dateiname wird folgendermaßen gebildet:
- Daten der Person Gruppe, Login-Name und Code - hintereinander ohne Trennzeichen
- Trennzeichen
_
- numerischer Hash-Wert der Datei (ganzzahlig positiv oder negativ)
- Dateiendung
.base64
- Beispiel:
b7tr7svhb7tr7svh7rbr_-611842233.base64
- Der Antwortwert wird ersetzt durch die Zeichenfolge
data:application/octet-stream;base64 Filename: '<Dateiname>'