| NVNC.de | Deutsche Eisenbahn | Historische Daten | Dokumentation | | English |
Nachfolgend die formale Spezifikation für das Datenformat. Sie wurde in Augmented BNF aufgestellt, entsprechend RFC 2234. Die eigentliche Spezifikation ist in dicktengeleicher Schrift gesetzt, alles übrige sind Kommentare.
Warnung: Die Grammatik wird derzeit ausgearbeitet und ist noch nicht entgültig.
5.1 Grundlegendes
5.2 Datentypen
Leerraum (white space) trennt Worte. Er besteht aus Leerzeichen, Zeilenumbrüchen und Tabulatorzeichen. Kommentare (comments) beginnen mit dem Prozentzeichen und gehen bis zum Zeilenende. Sie gelten als Leerraum. Optionaler Leerraum (optional white space) ist Leerraum, der gesetzt werden darf, aber nicht muss.
ws-char = WSP / CR / LF comment = "%" *%x20-FF (CR / LF) wspace = 1*(ws-char / comment) owspace = *(ws-char / comment)
Schlüsselworte (identifier) sind solche Worte, die als Schlüssel für Objekte o.ä. verwendet werden. Sie müssen mit einem Großbuchstaben beginnen, dürfen danach aber alle gewöhnlichen Buchstaben, Ziffern und ausgewählte Sonderzeichen enthalten. Gewöhnliche Worte (words) sind alle übrigen Worte. Satzzeichen (specials) sind alle Sonderzeichen, die für sich selbst bereits ein Wort darstellen. Sollen solche Zeichen in gewöhnlichen Worten auftauchen oder soll ein Wort Leerraum enthalten, muss es zitiert werden. Dies geschieht, indem es entweder in einfachen oder doppelten Anführungsstrichen eingeschlossen wird. Beide Varianten sind gleichwertig. Innerhalb von zitierten Worten sind Escapesequencen erlaubt. Es werden die in C üblichen Sequencen erkannt (\0, \a, \b, \n, \v, \f, \r), ansonsten wird das auf den Rückwärts-Schrägstrich folgenende Zeichen übernommen, ohne dass seine etwaige Sonderbedeutung eintritt.
identifier = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-" / "/" / "_" / ".")
wtext = "!" / "#" / "$" / ; characters without need for
"&" / "+" / ; quoting
"," / "-" / "." /
"/" / ":" / "=" /
"<" / "?" / "@" /
"\" / "|" /
DIGIT / ALPHA /
%d128-255
escape = "\" %d32-255 ; escape sequence
sqtext = %d32-38 / ; chars for single quoted
%d40-255 /
escape
dqtext = " " / %d35-255 / ; chars for double quoted
escape
word = 1*wtext /
("'" *sqtext "'" ) /
(DQUOTE *dqtext DQUOTE)
special = ";" / ">" / "{" / "}" / "[" / "]" / "*"
Anmerkungen (notes) werden von runden Klammern begrenzt. Im Gegensatz zu Kommentaren werden sie von Parsern verarbeitet und erscheinen in aufbereiteten Daten. Quellen (sources) verweisen auf externe Daten. Sie werden von eckigen Klammern begrenzt. Das Faktenende (fact tail) besteht aus einer optionalen Anmerkung gefolgt von einer optionalen Quellenangabe und einem abschließenden Strichpunkt.
ntext = %d32-39 / ; everything except parantheses
%d42-255 /
escape
note = "(" *ntext ")"
sources = "[" 1*(owspace identifier) owspace "]"
fact-tail = owspace [note owspace] [sources owspace] ";"
Obwohl der Oder- und der Zeitraum-Operand für Datumsangaben definiert sind, sind keine beliebig komplizierten Ausdrücke möglich. Dies insbesondere deswegen, weil ein Präzedenzoperator (Klammerung) fehlt. Komplizierte Datumsangaben sollten ggf. im Kommentar untergebracht werden. Sollten komplexe Ausdrücke doch noch notwendig werden, so wird die Grammatik hier nochmals geändert.
Zur Erläuterung siehe 3.2.1 Datum.
single-date = [["c"] 4DIGIT ["-" 2DIGIT ["-" 2DIGIT]]] *2"?"
or-datum = single-datum 1*("|" single-datum)
period = single-datum "/" single-datum
datum = single-datum / or-datum / period / "-"
trasse = 1*DIGIT *[1*ALPHA 1*DIGIT]
punkt = ["-"] 1*DIGIT ["," 1*DIGIT]
["+" 1*DIGIT (*"." / ("," 1*DIGIT))] *2"?"
streckenpunkt = punkt / identifier
netzpunkt = trasse "/" punkt
abschnitt = ("*" / streckenpunkt)
owspace ">" owspace
("*" / streckenpunkt)
float = *DIGIT ["," 1*DIGIT]
strecke-objekt = "strecke" wspace strecke-id owspace "{"
*strecke-fakt owspace "}"
trasse-objekt = "trasse" wspace trasse-id owspace "{"
*strecke-fakt owspace "}"
strecke-id = 5DIGIT
trasse-id = 5DIGIT 1*( 1*ALPHA 1*DIGIT )
strecke-fakt = strecke-typ / strecke-von / strecke-via
/ strecke-vvia / strecke-vvvia / strecke-nach
/ strecke-anm / strecke-nr / strecke-abk
/ strecke-verlauf / strecke-abschn / strecke-vertrag
/ strecke-konzess / strecke-baubeg / strecke-abnahme
/ strecke-einweih / strecke-va / strecke-gva
/ strecke-pva / strecke-nva / strecke-vva
/ strecke-uebern / strecke-va / strecke-gve
/ strecke-pve / strecke-nve / strecke-vve
/ strecke-aufgeg / strecke-dritte / strecke-still
/ strecke-abbau / strecke-entwidm / strecke-status
/ strecke-gleise / strecke-elektr / strecke-spurw
/ strecke-dreis / strecke-viers / strecke-zahnst
/ strecke-sperr / strecke-freig / strecke-verleg
/ strecke-eigent / strecke-betrf / strecke-eigebetr
strecke-typ = "typ" wspace
word ; Beschreibung
fact-tail
strecke-von = "von" wspace
word ; Streckenbeginn
fact-tail
strecke-via = "via" wspace
word ; Streckenknoten
fact-tail
strecke-viaa = "Via" wspace
word ; Bezeichnung Streckenknoten
fact-tail
strecke-viaaa = "VIA" wspace
word ; Bezeichnung Streckenknoten
fact-tail
strecke-nach = "nach" wspace
word ; Bezeichnung Streckenende
fact-tail
strecke-anm = "anm" ["erkung"] wspace
word ; Anmerkungstext
fact-tail
strecke-nr = ("nr" / "nummer")
wspace datum
wspace abschnitt
wspace identifier ; Klasse
wspace word ; Nummer
[wspace "tw"] ; Nr auch für andere Strecke
fact-tail
strecke-verlauf = "verlauf"
wspace abschnitt ; Verlauf
fact-tail
strecke-abschn = "abschn" ["itt"]
wspace 1*ALPHA ; Bezeichner
wspace abschnitt ; Abschnitt
fact-tail
strecke-vertrag = "vertrag" wspace datum ; Vertragsdatum wspace abschnitt ; betroffener Abschnitt 1*firma-id ; Vertragspartner fact-tail strecke-konzess = "konzess" ["ion"] wspace datum ; Erteilungsdatum wspace abschnitt ; betroffener Abschnitt [firma-id ; Erteilender [firma-id]] ; Begünstigter fact-tail strecke-baubeg = "baubeg" ["inn"] wspace datum ; Datum des Baubeginns wspace abschnitt ; betroffener Abschnitt fact-tail strecke-abnahme = "abnahme" wspace datum ; Datum der Abnahme wspace abschnitt ; betroffener Abschnitt [wspace firma-id] ; Abnehmender fact-tail strecke-einweih = "einweih" ["ung"] wspace datum ; Datum der Feier wspace abschnitt ; betroffener Abschnitt fact-tail
strecke-va = "va" wspace datum ; Datum der Verkehrsaufnahme wspace abschnitt ; betroffener Abschnitt [wspace "gel"] ; nur Gelegenheitsverkehr fact-tail strecke-gva = "gva" wspace datum ; Datum der Verkehrsaufnahme wspace abschnitt ; betroffener Abschnitt [wspace "gel"] ; nur Gelegenheitsverkehr fact-tail strecke-pva = "pva" wspace datum ; Datum der Verkehrsaufnahme wspace abschnitt ; betroffener Abschnitt [wspace "gel"] ; nur Gelegenheitsverkehr fact-tail strecke-nva = "nva" wspace datum ; Datum der Verkehrsaufnahme wspace abschnitt ; betroffener Abschnitt [wspace "gel"] ; nur Gelegenheitsverkehr fact-tail strecke-vva = "vva" wspace datum ; Datum der Verkehrsaufnahme wspace abschnitt ; betroffener Abschnitt fact-tail strecke-uebern = "uebern" ["ahme"] wspace datum ; Übernahmedatum wspace abschnitt ; betroffener Abschnitt wspace trasse ; Strecke wspace abschnitt ; Abschnitt auf der Strecke fact-tail strecke-ve = "ve" wspace datum ; Datum der Einstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-gve = "gve" wspace datum ; Datum der Einstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-pve = "pve" wspace datum ; Datum der Einstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-nve = "nve" wspace datum ; Datum der Einstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-vve = "vve" wspace datum ; Datum der Einstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-aufgeg = "aufgeg" ["angen"] wspace datum ; Datum wspace abschnitt ; betroffener Abschnitt wspace trasse ; Strecke fact-tail strecke-dritte = "dritte" wspace datum ; Stichtag wspace abschnitt ; betroffener Abschnitt [wspace datum] ; Veröffentlichungstag fact-tail strecke-still = "still" ["gelegt"] wspace datum ; Stilllegungsdatum wspace abschnitt ; betroffener Abschnitt [wspace datum] ; Genehmigungsdatum fact-tail strecke-abbau = "abbau" wspace datum ; Datum der Fertigstellung wspace abschnitt ; betroffener Abschnitt fact-tail strecke-entwidm = "entwidm" ["ung"] wspace datum ; wspace abschnitt ; betroffener Abschnitt fact-tail
strecke-status = "status"
wspace datum ; gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace identifier ; neuer Status
fact-tail
strecke-gleise = "gleise"
wspace datum ; gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace 1*DIGIT ; Anzahl der Gleise
fact-tail
spannung = float "V" ["/" float "Hz" [DIGIT]]
strecke-elektr = "elektr"
wspace datum ; gültig ab
wspace abschnitt ; betroffener Abschnitt
[wspace
("oberleitung" / ; Art der Stromzuführung
("stromschiene"
("oben" / "unten" / "seitlich")
"bestrichen"))
[wspace
("-" / ; eingestellt
(spannung
*(wspace spannung)))]]
fact-tail
strecke-spurw = "spurw" ["eite"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace 1*DIGIT "mm" ; Spurweite
fact-tail
strecke-dreis = "dreis" ["chinen"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace 1*DIGIT "mm" ; Spurweite
wspace 1*DIGIT "mm" ; Spurweite
fact-tail
strecke-viers = "viers" ["chinen"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace 1*DIGIT "mm" ; Spurweite
wspace 1*DIGIT "mm" ; Spurweite
fact-tail
strecke-zahnst = "zahnst" ["ange"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace identifier ; System oder keine
fact-tail
strecke-sperr = "sperr" ["ung"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
fact-tail
strecke-freig = "freig" ["abe"]
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
fact-tail
strecke-verleg = "verleg" ["ung"
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace trasse-id ; Trasse
fact-tail
strecke-eigent = "eigent" ["uemer"]
wspace datum ; gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace firma-id ; Firma
fact-tail
strecke-bertrf = ("betrf" / "betriebsfuehrer")
wspace datum : gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace firma-id ; Firma
fact-tail
strecke-eigebetr = "eigent-betrf"
wspace datum ; gültig ab
wspace abschnitt ; betroffener Abschnitt
wspace firma-id ; Firma
fact-tail
betrst-objekt = "betrst" wspace betrst-id owspace "{"
*betrst-fakt owspace "}"
betrst-id = ALPHA *(ALPHA / DIGIT / "-" / "/" / "_" / ".")
betrst-fakt = betrst-eroeff / betrst-aufgel / betrst-eingegl
/ betrst-name / betrst-nr / betrst-abk
/ betrst-rang / betrst-merkmal / betrst-mu
/ betrst-zu / betrst-verb
betrst-eroeff = "ereoff" ["net"]
wspace datum ; Eröffnungsdatum
fact-tail
betrst-aufgel = "aufgel" ["assen"]
wspace datum
fact-tail
betrst-eingegl = "eingegl" ["iedert"]
wspace datum ; Zeitpunkt
wspace betrst-id ; Betriebsstelle
fact-tail
betrst-lage = "lage"
wspace datum ; ab Zeitpunkt
wspace netzpunkt ; Lage
fact-tail
betrst-name = "name"
wspace datum ; ab Zeitpunkt
wspace word ; Name
fact-tail
betrst-nr = ( "nr" / "nummer" )
wspace identifier ; Klasse
wspace word ; Nummer
[wspace datum] ; ab Zeitpunkt
fact-tail
betrst-abk = "abk" ["uerzung"]
wspace identifier ; Klasse
wspace word ; Kürzel
[wspace datum] ; ab Zeitpunkt
fact-tail
betrst-rang = "rang" wspace datum ; ab Zeitpunkt 1*(wspace identifier) ; Ränge fact-tail betrst-merkmal = "merkmal" wspace datum ; ab Zeitpunkt 1*(wspace ["-"] identifier) ; Merkmale fact-tail betrst-mu = "mu" wspace datum ; ab Zeitpunkt wspace (betrst-id / "-") ; Betriebsstelle fact-tail betrst-zu = "zu" wspace datum ; ab Zeitpunkt wspace (betrst-id / "-") ; Betriebsstelle fact-tail betrst-verb = "verb" ["indung"] wspace betrst-id ; Betriebsstelle fact-tail
firma-objekt = "firma" wspace firma-id owspace "{"
*firma-fakt owspace "}"
firma-id = ALPHA *(ALPHA / DIGIT / "-" / "/" / "_" / ".")
firma-fakt = firma-gegr / firma-aufgel / firma-uebern
/ firma-fusion / firma-staatl / firma-name
/ firma-sitz
firma-gegr = "gegr" ["uendet"]
wspace datum
fact-tail
firma-aufgel = "aufgel" ["oest"]
wspace datum
fact-tail
firma-uebern = "uebern" ["ommen"]
wspace datum
wspace firma-id ; Firma
fact-tail
firma-fusion = "fusion" ["iert"]
wspace datum
wspace firma-id ; Firma
fact-tail
firma-staatl = "staatl" ["ich"]
wspace datum
fact-tail
firma-name = "name"
wspace datum
wspace word ; Name
fact-tail
firma-sitz = "sitz"
wspace datum
wspace word ; Ort
fact-tail
quelle-objekt = "quelle" wspace quelle-id owspace "{"
*quelle-fakt owspace "}"
quelle-id = ALPHA *(ALPHA / DIGIT / "-" / "/" / "_" / ".")
quelle-fakt = quelle-text / quelle-html
quelle-text = "text"
wspace word
fact-tail
quelle-text = "html"
wspace word
fact-tail
datei = *(strecke-objekt / betrst-objekt / firma-objekt / quelle-objekt)
| vorige < Inhalt > nächste | Seitenanfang |
Zuletzt geändert am 13. X. 2004.
Anregungen, Kommentare und Kritik an
Martin Hoffmann <hn@nvnc.de>.