Skip to content

Instantly share code, notes, and snippets.

@nichtich
Last active February 14, 2017 07:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nichtich/b530c5a3f627a4f5f25245b6eadbae1f to your computer and use it in GitHub Desktop.
Save nichtich/b530c5a3f627a4f5f25245b6eadbae1f to your computer and use it in GitHub Desktop.
DAIA-Erweiterung für Zeitschriften u.A. fortlaufende Ressourcen

Für Bestandsverläufe von fortlaufenden Ressourcen ("serials") wird das DAIA-Feld item um ein optionales Unterfeld chronology mit folgender Struktur ergänzt. Die Unterfelder sind so strukturiert, dass sie u.A. zur Anzeige, Sortierung und Filterung verwendet werden können.

chronology

Das Feld chronology hat vier optionale Unterfelder, von denen mindestens eins gesetzt sein sollte (ansonsten kann chronology ignoriert werden):

  • intervals für Intervalle von Erscheinungszeiträumen
  • points für einzelne Erscheinungszeitpunkte
  • embargo für eine "moving wall"
  • about Bestandsverlauf und -Lücken als Freitext

intervals

Das Feld intervals besteht aus einer nicht-leeren Liste von aufsteigenden Zeiträumen. Ein Zeitraum besteht aus folgenden optionalen Unterfeldern, wobei mindestens volume oder year vorhanden sein muss:

  • year ("Berichtsjahr"): Integer, in der Regel vierstellig
  • year2 ("Berichtsjahr-bis"): Integer, in der Regel vielstellig. Muss, falls vorhanden größer als year sein.
  • endYear: Integer, Endjahr des Zeitraums größer als year
  • volume ("Band"): Freitext, enthält in der Regel eine Zahl
  • endVolume: Freitext, enthält in der Regel eine Zahl größer als volume
  • issue ("Heft"): Freitext, enthält in der Regel eine Zahl
  • endIssue: Freitext, enthält in der Regel eine Zahl größer als issue
  • missing ("Lücke"): boolean, ob es sich um Lücke handelt.

Beispiele

Band 1.1989 ff.:

[ { "volume": "1", "year": 1989 } ]

Seit Band 3, Berichtsjahr 1989/99:

[ { "volume": "3", "year": 1998, "year2": 1999 } ]

points

Das Unterfeld points enthält eine Liste von Zeitpunkten analog der Elemente von feld intervals.

Beispiele

Einzelne Bände 1.1970 und 3.1972; Band 7.1973 fehlt:

[ { "volume": "1", "year": 1970 }, 
  { "volume": "3", "year": 1972 }, 
  { "volume": "7", "year": 1973, "missing": true } ]

embargo

Mit dem Unterfeld embargo kann eine "moving wall" angegeben werden. Das Feld hat immer drei Unterfelder:

  • period mit einem Integer-Wert der nicht Null sein darf
  • unit mit einem der Werte day, month, year, volume, und issue.

Beispiele

Ab vor zwei Jahren zugänglich:

{ "period": -2, "unit": "year" }

Bis auf das jeweils aktuelle Heft zugänglich:

{ "period": -1, "unit": "issue" }

Jeweils 1 Monat lang zugänglich:

{ "period": 1, "unit": "month" }

Vollständiges Beispiel

Band 1.1920 bis 19.1939, Band 21.1941, Band 36.1956 u.ff. außer Band 38.1958 und der jeweils aktuelle Jahrgang:

{
  "intervals": [ { "volume": "1", "year": 1920 },
                 { "volume": "19", "year": 1939 },
                 { "volume": "36", "year": 1956 } ],
  "points": [ { "volume": "21", "year": 1941 }
              { "volume": "38", "year": 1958, "missing": true } ],
  "embargo": { "period": -1, "unit": "volume" }
]

Grundlage

Der Inhalt des Unterfeld chronology ergibt sich aus den Katalogisierungsrichtlinien von GBV, BSZ und ZDB die wiederum im Wesentlichen auf RDA basieren:

Feld 7120 (=PICA+ 231@) enthält "bibliographische Bestandsangaben für fortlaufende Ressourcen in maschinell interpretierbarer Form." Die Struktur entspricht dem allgemeinen Bestandsverlauf der in Feld 4024 / 031N festgelegt ist:

In Feld 7120 stehen den GBV-Katalogisierungsrichtlinien entsprechend nur vollständige Jahrgänge bzw. Bände und Angabe von Heften. Heftlücken können zusätzlich im Freitextfeld 7121 erfasst werden:

Das Freitextfeld 7121 folgt einer eigenen Syntax, die sich parsen lässt um daraus Feld 7120 zu erzeugen. Im Katalogisierungsclient gibt es dazu das Skript "ZDB: Feld7120" (Feld7120.vbs in WinIBW). Die Katalogisierungsrichtlinie empfiehlt jedoch das Ergebnis des Skript nachzuprüfen.

Außerdem wurde herangezogen:

@nichtich
Copy link
Author

nichtich commented Jan 20, 2017

Ein genaueres Mapping auf ECPO fehlt noch. u.A.

DAIA intervals und points entsprechen beide zusammen

  • hasChronology (wenn missing auf false oder fehlend)
  • hasChronologyGap (wenn missing auf true gesetzt)

Für ECPO Chronology mit hasItemized wird in DAIA points verwendet, ansonsten intervals.

Die ECPO properties hasBeginVolumeCaption, hasBeginIssueCaption etc. haben keine Entsprechung in DAIA.

Die ECPO properties hasBeginTemporalExtension, hasEndTemporalExtension etc.haben keine Entsprechung in DAIA.

Die Beispiele aus ECPO

"v.26,issue 1-"

{
  "about": " v.26,issue 1-",
  "intervals": [ { "volume": "26", "issue": "1" } ]
}

"v.26,issue 1-v.31, issue 6"

{
  "about": "v.26,issue 1-v.31, issue 6",
  "intervals": [ {
    "volume": "26", "issue": "1", 
    "endVolume": "31", "endIssue": "6" 
  } ]
}

"(2001:Jan.1-2006:June 30)=no.320-no.385"

{
  "about": "(2001:Jan.1-2006:June 30)=no.320-no.385",
  "intervals": [ {
    "year": 2001, "issue": "320", 
    "endYear": 2006, "endIssue": "385"
  } ]
}

"v.5:no.1(1975:spring)-v.7:no.4(1977:autumn),v.8:no.2(1978:winter)-"

{
  "about": "v.5:no.1(1975:spring)-v.7:no.4(1977:autumn),v.8:no.2(1978:winter)-",
  "intervals": [ {
    "year": 1975, "issue": "1", "volume": "5",
    "endYear": 1977, "endIssue": "4", "endVolume": "7"
  }, {
    "year": 1978, "volume": "8", "issue": "2"
  } ]
}

"v.1 v.2 v.2[i.e. 3] v.6"

{
  "about": "v.1 v.2 v.2[i.e. 3] v.6",
  "points": [
    { "volume": "1" }, 
    { "volume": "2" }, 
    { "volume": "2 [i.e. 3]" }, 
    { "volume": "6" }, 
  ]
}

"volumes v.4 and v.5 are missing"

{
  "about": "volumes v.4 and v.5 are missing",
  "points": [
    { "volume": "4", "missing": true },
    { "volume": "5", "missing": true }
  ]
}

@cKlee
Copy link

cKlee commented Feb 7, 2017

Also was mir beim Überfliegen aufgefallen ist (nachträglich von @nichtich sortiert und kommentiert):

  • Das Feld 7121 gibt es in der ZDB nicht, sondern 8032.

ist korrigiert

  • Hefte werden in der ZDB in 7120 überhaupt nicht angegeben (frag mich nicht warum)

sollte aber von DAIA unterstützt werden, muss ja nicht verwendet werden

  • In dem Beispiel (2001:Jan.1-2006:June 30)=no.320-no.385 kommt dann plötzlich das DAIA-Feld number (obwohl nicht oben definiert).

muss issue heißen, ist korrigiert

  • Das DAIA-Feld about wird mehrdeutig verwendet. Kommt da jetzt der Bestandsverlauf rein, oder auch eine Angabe zu Lücken? "about": "volumes v.4 and v.5 are missing",

da kommt beides rein, falls keine strukturierten Daten vorliegen oder zusätzlich. Ich denke DAIA 1.0.0 wird nur dieses Feld haben und DAIA 1.1.0 genauere Angaben unterstützen

  • Ich würde es u.U. für schwierig halten, herauszubekommen, ob ein Intervall abgeschlossen oder laufend ist. Du schreibst Ist die Zahl der Zeiträume ungerade, handelt es sich um eine offene Zeitspanne.. Aber das verstehe ich nicht. Ich kann doch ein (ungerade) Zeitraum haben, der abgeschlossen ist. Im Endeffekt müsste man doch dann den letzten Zeitraum prüfen, ob end*-Felder existieren. Vielleicht wäre ein DAIA-Feld running sinnvoll, welches nicht zusammen mit end*-Feldern auftauchen darf.

ok, das war verwirrend. Ich habe erstmal die end-Felder dokumentiert, muss noch genauer untersucht werden, vielleicht können intervals und points auch zusammengefasst werden.*

  • Ich kenne nicht die Erfassungspraxis von 7120 im GBV, In der ZDB werden allerdings keinen Doppel- und Mehrfach-Volumes/Years/ mehr katalogisiert. D.h. dass aus 5/6.1999/2000 - 7/8.2001/2002 --> /v5/b1999/V8/E2002 wird. Also immer das erste Start-Statement und das letzte End-Statement. Von daher ist zu überlegen, wie in DAIA mit doppelten / mehrfachen Bänden, Jahren, Heften umgegangen werden soll und ob year2 wirklich notwendig ist.

guter Punkt, ist notiert

  • Beim DAIA-Feld embargo sehe ich eine Verbindung mit der MWO, die man vielleicht noch mal anpassen müsste. Für DAIA wäre hier mal ein Use-Case zu entwicklen, um zu schauen, ob die Daten für diesen Zweck gut genutzt werden könnten. Z.B. soll daraus nur ein Text geniert werden, der anzeigt, was man kriegen kann und was nicht oder kann damit eine API für eine (EZB-)Ampel angefragt werden.

oh, das hatte ich nicht auf dem Schirm! Lass uns das mal abgleichen/aktualisieren!


  • So etwas wie { "volume": "2 [i.e. 3]" } wird es wohl auch nicht geben, wenn der Inhalt aus 7120 kommt. Jedenfalls ist das in der ZDB nicht erlaubt.

  • Zum Beispiel (2001:Jan.1-2006:June 30)=no.320-no.385: In der ZDB würden die parallelen Nummern nicht nach 7120 wandern. Mal abgesehen davon, dass in 7120 in der ZDB keine Hefte vorkommen, würde unser Script Feld7120 die Nummern ignorieren. Für das Feld 4025 würden dafür die Monate/Tage genommen.

  • Lücken werden in der ZDB im Feld 8035 verzeichnet. Ich denke aber, dass das nur in Ausnahme geschieht und die Lücken implizit aus 7210 abgeleitet werden müssten. Im GBV scheint es mir genau so zu laufen. Es werden nicht explizit Lücken in 7121 erfasst, sondern es gibt eine Syntax, wie im Bestandsverlauf Lücken gekennzeichnete werden. Von daher wird das DAIA-Feld missing wohl weniger gebraucht werden.

Mir fällt bestimmt noch mehr ein. Aber so weit erst einmal mein Senf.

muss ich mir erstmal ansehen, danke für das Feedback!

@nichtich
Copy link
Author

Hier einige offene Punkte aus der Diskussion:

  • die Erfassung von Zeiträumen ist verwirrend. Können mit den end*-Feldern intervals und points zusammengefasst werden und/oder ein Feld running für laufende Zeiträume?
  • wird year2 für Doppel/Mehrfahrjahrgänge wie 1999/2000 oder 1981/82 wirklich benötigt oder gibt es Alternativen?
  • Abgleich von Feld movingwall mit MWO und tatsächlich verfügbaren Daten
  • ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment