Änderungslog¶
0.8.0 _ 15. Oktober 2026¶
Hinzugefügt:
-
Breaking Change: Die neue, verpflichtende Eigenschaft
schedule.timeZonelegt die Zeitzone des Stundenplans fest. Verwendet werden Zeitzonenbezeichner aus der IANA Time Zone Database (z. B.Europe/Berlin).- Begründung: Für die korrekte Berechnung wiederkehrender Termine und die Berücksichtigung von Sommer- und Winterzeit wird eine eindeutige Zeitzone benötigt.
-
Die neue Schemadefinition
localTimebeschreibt lokale Uhrzeiten ohne Zeitzonenoffset.
Geändert:
-
Breaking Change: Die Eigenschaften
timeFrame.timeSlots[].startTimeundtimeFrame.timeSlots[].endTimeverwenden jetzt lokale Uhrzeiten ohne Zeitzonenoffset.- Begründung: Zeitfenster eines Stundenrasters sollen unabhängig von Sommer- und Winterzeit immer dieselben lokalen Uhrzeiten beschreiben.
-
Breaking Change: Das Array
temporalExpressionsmuss jetzt mindestens einen zeitlichen Ausdruck enthalten.- Begründung: Ein Zeitelement ohne konkrete Zeitangaben macht keinen Sinn.
-
Breaking Change: Die zeitliche Interpretation von
weeklyExpressionwurde geändert und präzisiert. Die bisherigen EigenschaftenstartTimepointundendTimepointbleiben erhalten und definieren eine Referenzveranstaltung durch zwei absolute Zeitpunkte. Aus dieser werden der lokale Wochentag, die lokalen Uhrzeiten und gegebenenfalls der Tagesversatz inschedule.timeZoneabgeleitet. Wöchentliche Wiederholungen werden anhand lokaler Kalendertage und Uhrzeiten berechnet, nicht durch Addition einer festen Dauer von 168 Stunden.- Begründung: Wöchentlich wiederkehrende Veranstaltungen sollen unabhängig von Sommer- und Winterzeit immer zur gleichen lokalen Uhrzeit stattfinden. Gleichzeitig bleibt das bisherige Modell einer Referenzveranstaltung erhalten.
-
Die optionalen Eigenschaften
weeklyExpression.validFromundweeklyExpression.validTobegrenzen ausschließlich den Gültigkeitszeitraum der Wiederholung. Sie können sowohl Kalenderdaten als auch absolute Zeitpunkte enthalten. Die Referenzveranstaltung darf auch außerhalb dieses Gültigkeitszeitraums liegen. -
Die Gültigkeitsprüfung wöchentlicher Wiederholungen wurde präzisiert. Maßgeblich ist der Startzeitpunkt des jeweiligen Vorkommens. Der tatsächlich gültige Zeitraum ergibt sich aus der Schnittmenge der Gültigkeitszeiträume von
scheduleundweeklyExpression. -
Die zeitliche Interpretation wurde vereinheitlicht:
oneTimeExpressionverwendet weiterhin absolute Zeitpunkte mit Zeitzonenoffset.weeklyExpressionverwendet absolute Zeitpunkte als Referenzveranstaltung, berechnet die Wiederholungen jedoch anhand lokaler Uhrzeiten inschedule.timeZone. AuchtimeFrame.timeSlotsverwendet lokale Uhrzeiten. -
Die Gültigkeitsgrenzen wurden präzisiert:
validFromist inklusiv undvalidToexklusiv zu verstehen. Kalenderdaten werden in der Zeitzone des Stundenplans interpretiert, während Datum-Uhrzeit-Werte absolute Zeitpunkte beschreiben. -
Die Eigenschaften
weeklyExpression.validWeeksundweeksPattern.weeksbeziehen sich jetzt ausdrücklich auf ISO-Kalenderwochen und das jeweilige ISO-Wochenjahr. Maßgeblich ist das lokale Startdatum des jeweiligen Vorkommens. -
Das Verhalten bei Sommerzeitumstellungen wurde festgelegt: Vorkommen mit nicht existierenden lokalen Uhrzeiten werden übersprungen. Bei doppelt vorkommenden lokalen Uhrzeiten wird der frühere der beiden möglichen Zeitpunkte verwendet.
-
Beispiel 1: In
Europe/Berlinwurde am 29. März 2026 die Uhr von 02:00 auf 03:00 Uhr vorgestellt. Eine wöchentliche Veranstaltung um 02:30 Uhr wird an diesem Tag übersprungen. -
Beispiel 2: In
Europe/Berlinexistiert am 25. Oktober 2026 die Uhrzeit 02:30 Uhr sowohl mit dem Offset+02:00als auch mit+01:00. In diesem Fall wird der frühere absolute Zeitpunkt (02:30+02:00) verwendet. Die Veranstaltung findet somit nur einmal statt.
-
Korrigiert:
- Die Validierung von Eigenschaften, die sowohl Kalenderdaten als auch Datum-Uhrzeit-Werte erlauben, wurde durch die Verwendung von
anyOfanstelle vononeOfverbessert. - Die bisher fehlende Eigenschaft
event.eventUrlwurde im JSON-Schema ergänzt. - Die Unterstützung von Erweiterungsfeldern (
x-*) wurde für dascancellation-Objekt ergänzt. - Die Beschreibungen der Zeit- und Datumsangaben sowie der ISO-Kalenderwochen im JSON-Schema wurden vereinheitlicht und präzisiert.
- Einige kleinere Fehler in den Eigenschaftsbeschreibungen wurden korrigiert.
0.7.0 _ 20. August 2026¶
Hinzugefügt:
- Die Eigenschaften
activity.classificationundsupervision.classificationsind jeweils um den Wertadditionalerweitert worden.
Geändert:
-
Breaking Change: Die Eigenschaft
temporalExpressionsist jetzt überall durchgehend erforderlich.- Begründung: Ein Zeitelement ohne Zeitangaben macht keinen Sinn.
Korrigiert:
- Es wurden einige Fehler in der Dokumentation und in der Beispieldatei korrigiert.
0.6.0 _ 13. Mai 2026¶
Hinzugefügt:
- Die Entität
personhat eine zusätzliche optionale EigenschaftelectronicAddresses(z.B. für E-Mail-Adressen und Telefonnummern) erhalten. - Die Entität
activityhat eine zusätzliche optionale EigenschaftactivityUrlerhalten. - Die Entität
eventhat eine zusätzliche optionale EigenschafteventUrlerhalten. - Die Entitäten
groupundcoursehaben die zusätzlichen optionalen EigenschaftenvalidFromundvalidToerhalten. - Die fehlenden Eigenschaften
activity.classificationundsupervision.classificationwurden im Schema hinzugefügt. Beide waren zuvor bereits unteractivity.relevanceundsupervision.relevancedokumentiert. Siehe hierzu auch den Absatz zulesson.classificationim nächsten Abschnitt.
Geändert:
-
Breaking Change: Die Eigenschaft
behaviourwurde umbenannt inbehavior. Die EigenschaftrealisedBywurde umbenannt inrealizedBy.- Begründung: Die Bezeichner
behaviourundrealisedByentsprechen dem britischen Englisch. In unseren übrigen Benennungen verwenden wir jedoch amerikanisches Englisch. Durchaus diskutabel 😊 Aber wenn, dann sollte man sich durchgehend für eine sprachliche Variante entscheiden.
- Begründung: Die Bezeichner
-
Breaking Change: Die Eigenschaften
appliesTo.typewurden umbenannt inappliesTo.refType. Die EigenschaftrealizedBy.typewurde umbenannt inrealizedBy.refType- Begründung: Der Bezeichner
typefungiert als Diskriminator für die eigene Entität, währendrefTypeden Diskriminator der referenzierten Entität beschreibt. Die Umbenennung arbeitet den semantischen Unterschied deutlicher heraus.
- Begründung: Der Bezeichner
-
Breaking Change: Die Eigenschaft
lesson.relevancewurde umbenannt inlesson.classification.- Begründung: Der Bezeichner
relevancesuggeriert, dass es sich hierbei um mehr oder weniger relevante Unterrichtseinheiten handelt. Dies ist jedoch nicht der Fall. Der Bezeichnerclassificationist neutraler und daher wesentlich besser geeignet.
- Begründung: Der Bezeichner
-
Breaking Change: Die Eigenschaft
info.publishedFromwurde umbenannt ininfo.publishedBy.- Begründung: Der Bezeichner
publishedBy(deutsch: "veröffentlicht von") ist in diesem Kontext semantisch deutlich passender.
- Begründung: Der Bezeichner
Korrigiert:
- Es wurden eine Reihe kleinerer syntaktischer Fehler in der Schemadefinition behoben.
0.5.1 _ 06. Januar 2026¶
Hinzugefügt:
- Die Entitäten
cancellationundsubstitutionhaben eine zusätzliche Eigenschaftmessageerhalten.
0.5.0 _ 12. Juni 2025¶
Hinzugefügt:
- Neue Entität
weeksPatternhinzugefügt.
Geändert:
- Breaking Change: Die Eigenschaft
weeklyExpression.weekswurde umbenannt inweeklyExpression.validWeeks. - Die Eigenschaft
weeklyExpression.validWeeksist jetzt polymorph. Sie ist entweder (wie bisher) ein JSON-String-Array oder (jetzt neu) ein JSON-Objekt mit einem Verweis auf eineweeksPattern-Entität.
0.4.0 _ 10. April 2025¶
Geändert:
- Breaking Change: Die Eigenschaft
person.namewurde refactored, um sie kompatibel zu machen mit der XÖV-Kernkomponente NameNatuerlichePerson.
0.3.1 _ 08. April 2025¶
Hinzugefügt:
- Neue Eigenschaft
activity.groupshinzugefügt. - Neue Eigenschaft
event.groupshinzugefügt.
0.3.0 _ 28. März 2025¶
Hinzugefügt:
- Die Eigenschaft
lesson.relevancehat einen zusätzlichen Wertsubstitutionbekommen. - Neue Eigenschaft
activity.relevancehinzugefügt. - Neue Eigenschaft
supervision.relevancehinzugefügt.
Geändert:
- Breaking Change: Die Eigenschaft
holiday.holidayTypeist jetzt erforderlich. - Breaking Change: Die Eigenschaft
person.name.middleNamewurde umbenannt inperson.name.middleNames. - Breaking Change: Die Eigenschaft
person.name.nameSuffixwurde umbenannt inperson.name.nameSuffixes. - Breaking Change: Die Eigenschaft
person.name.titlewurde umbenannt inperson.name.titles. - Die Eigenschaft
codeals Verweis auf Code-Listen im OpenCodeList-Format ist jetzt für alle Entitäten optional.
0.2.1 _ 08. März 2025¶
Geändert:
- Ein paar kleinere Refactorings im Schema.
Korrigiert:
- Nicht benötigte Eigenschaft in Entität
timeFrameentfernt.
0.2.0 _ 26. Februar 2025¶
Hinzugefügt:
- Neue Entitäten
absenceType,activity,activityType,courseType,eventType,exemptionType,gender,groupType,supervisionTypeundteachingFormat - Die Eigenschaft
codeals Verweis auf Code-Listen im OpenCodeList-Format ist neu fürabsenceType,activityType,courseType,eventType,exemptionType,gender,groupType,personRole,subject,supervisionTypeundteachingFormat. - Die Eigenschaft
externalIdsist neu fürcampus,building,room,course,person,group,supervisionArea.
Geändert:
- Breaking Change:
stashwurde inexemptionumbenannt. - Breaking Change: In fast allen Fällen wurden die bisherigen Eigenschaften
codeundnameentweder inshortNameundlongNameoder inshortDescriptionundlongDescriptionumbenannt. - Breaking Change: In einigen Fällen wurde die bisherigen Eigenschaft
descriptioninnotesumbenannt. - Breaking Change: In allen Fällen wurde die String-Unterscheidung in
singularundpluralaufgelöst. - Breaking Change: Refactoring der Eigenschaften bei
absence. Die EigenschaftabsenceTypeist neu. - Breaking Change: Refactoring der Eigenschaften bei
course. Die EigenschaftencourseUrlundcourseNosind neu. Die EigenschaftcourseTypeist jetzt eine eigene Entität. - Breaking Change: Refactoring der Eigenschaften bei
event. Die EigenschafteventTypeist neu. - Breaking Change: Refactoring der Eigenschaften bei
exemption. Die EigenschaftexemptionTypeist neu. - Breaking Change: Refactoring der Eigenschaften bei
group. Die EigenschaftgroupTypeist jetzt eine eigene Entität. - Breaking Change: Refactoring der Eigenschaften bei
lesson. Die EigenschaftenrelevanceundteachingFormsind neu. - Breaking Change: Refactoring der Eigenschaften bei
person. Neu istgender. Die Namenseigenschaften wurden zudem komplett überarbeitet. - Breaking Change: Refactoring der Eigenschaften bei
supervision. Die EigenschaftsupervisionTypeist neu. - Breaking Change: Zahlreiche weitere kleinere Refactorings und Umbenennungen
Anmerkung:
Diese Version sollte jetzt einigermaßen stabil bleiben.
0.1.0 _ 20. November 2023¶
Geändert:
- Breaking Change: Operationen von zeitlichen Ausdrücken umbenannt zu
includeundexclude.
0.0.1 _ 18. September 2023¶
- Erste Veröffentlichung