Signaturbildung mit RVK?

Weiß jemand, ob die Bildung von Signaturen mit RVK standardisiert ist, oder ob es da Unterschiede zwischen den Einrichtungen gibt.

Inspiriert durch @FrauHollunder bei Metadaten-Barcamp versuche ich aktuell einen Regex zu bauen, der für #lobid die RVK aus Singaturen zieht, um Datensätze damit anzureichern:

1 „Gefällt mir“

… also eigentlich ist es standartisiert, aber es gibt Varianten, z.B. haben wir in Münster RVK +‚/laufende Nummer‘, also zb (frei erfunden!) MS 4800/456
Wie man mögliche Varianten finden kann - :woman_shrugging:, aber ohne die Varianten hat man vermutlich auch schon ganz schön was abgegrast.
… und der Regex sieht ja nicht schlecht aus!

Ich hatte vor etlichen Jahren einmal über das BSZ über unsere Aufstellungssignaturen die entsprechenden RVK-Stellen im Verbund angereichert (ca. 40.000 Titel). Das kann sich daher wirklich lohnen gerade im Bereich der Retrosystematisierung.

Deinen Regex habe ich ausprobiert mit allen unseren Titel in der Lehrbuchsammlung. Immer schlägt er an, bis auf die Signaturen der Form „120 PD 2360(80)“. Dabei steht 120 für unseren Standort, PD 2360 für den Palandt d.h. ein juristischen Kommentar und die 80 in Klammer für die Auflage. Zudem haben wir teilweise in den Auflagenangaben neben Zahlen auch noch weitere Angaben wie etwa „e“ für die englische Version. Wahrscheinlich interessiert Dich aber nur die Signaturestelle selbst, d.h. die ersten beiden Gruppen.

Ich würde Dir aber noch vorschlagen, zusätzlich anzugeben ob die RVK-Stelle gültig ist oder evt. veraltet. Da bei Änderungen der RVK-Systematik nicht immer gleich alle Bestände umsystematisiert werden, kommt dies in der Praxis schon teilweise vor. Vgl. auch Veraltete RVKs markieren · Issue #87 · UB-Mannheim/malibu · GitHub für eine entsprechendes Issue bei malibu und dort verlinkter PR dann.

1 „Gefällt mir“

In Bonn verwenden ein paar Institutsbibliotheken RVK-Signaturen. I.d.R. besteht eine RVK-Signatur aus der RVK-Feingruppe + Cutter + ggf. Auflagenbezeichnung (z.B. +2), Bandanhänger ((1)) oder Mehrfachexemplarkennzeichen (eingeleitet durch Raute #). Es gibt ein paar Synntax-Varianten (fingierte Beispiele):
Einfache RVK-Signatur: CD 1234 A123 (1) + 2 #1
Einfache RVK-Signatur + Zusatzcutter, um Doppelungen zu vermeiden: CD 1234 A123 B1
Es gibt RVK-Klassen für Serien, z.B. FX 005000 Patrologia Latina (Migne). Hier würde man an die Feingruppe nur noch den Bandanhänger ohne weiteren Cutter hängen: FX 005000 (22).
Problematisch in der RVK sind Autorenstellen. Hier liegen z.B. für die Fachsystematiken G und H detaillierte Signatursynthese-Anweisungen vor, z.B. GM 2657 - GM 2660 Brecht, Bertolt, Gesamtausgaben. Bei anderen Autorenstellen, z.B. Romanistik fehlen solche Signaturanweisungen.
Hier sind solche Konstrukte möglich:
CD 12234.986
CD 1234.2004
CD 1235 T56.967
CD 1245 T56.2004
Dann gibt es bei den Autorenstellen noch Klassen für sonstige oder übrige Autoren, die keine eigene RVK-Klasse haben. Hier sind dann zwei Cutter nacheinander möglich.
Daneben gibt es auch Sachklassen mit Signaturanweisungen, z.B. EC 5410 oder bei AH. Ich habe für die Signaturkontrolle reguläre Ausdrücke erstellt, mit denen ich die RVK-Signaturen aus einem Datenset, in den auch keine RVK-Signaturen sind, extrahieren kann. Das funktioniert ganz gut, bis auf Signaturgruppen, die den RVK-Signaturen ähneln, aber keine RVK-Signaturen sind:
def rvk_check (value):
if re.search(‚^([A-Z]{2}\s\d{3,}\s[A-Z]\d{1,3})‘, value):
return ‚rvk_einfach‘
if re.search(‚^([A-Z]{2}\s\d{3,}.\d{3,4})‘, value):
return ‚rvk_gesamtausgabe‘
if re.search(‚^([A-Z]{2}\s\d{3,}\s(\w.*))‘, value):
return ‚rvk_feingruppe_band‘
if re.search (‚^(CDA|CDR|DIA|DVD|KAS|MFC|MFL|PLA|VID)\s[A-Z]{2}‘, value):
return ‚rvk_nbm‘
else: return 'nicht_rvk

Bei den Nicht-Buch-Materialien wird bei den Bonner RVK-Signaturen noch CDA usw. vorgesetzt.

Mit einer weiteren Funktion prüfe ich, welche Fehler in RVK-Signaturen vorkommen. Das basiert auf Erfahrungswerten:
def rvk_check_falsch (value):
if re.search(‚^([A-Z][a-z]\s\d{3,}\s[A-Z]\d{1,3})‘, value): #feingruppe mit kleinbuchstaben
return ‚feingruppe mit kleinbuchstaben pos2‘
elif re.search(‚^([a-z][A-Z]\s\d{3,}\s[A-Z]\d{1,3})‘, value): #feingruppe mit kleinbuchstaben
return ‚feingruppe mit kleinbuchstaben pos 1‘
elif re.search(‚^([a-z][a-z]\s\d{3,}\s[A-Z]\d{1,3})‘, value): #feingruppe mit kleinbuchstaben
return ‚feingruppe mit 2 kleinbuchstaben‘
elif re.search(‚^([A-Z]{2}\d{3,}\s[A-Z]\d{1,3})‘, value): #feingruppe ohne leerstelle
return ‚feingruppe ohne leerstelle‘
elif re.search(‚^([A-Z]{2}\s\d{3,}[A-Z]\d{1,3})‘, value): #ohne leerstelle vor cutter
return ‚ohne leerstelle vor cutter‘
elif re.search(‚^([A-Z]{2}\s\d{3,}[a-z]\s[A-Z]\d{1,3})‘, value): #kleinbuchstabe nach feingruppe
return ‚kleinbuchstabe nach feingruppe‘
elif re.search(‚^([A-Z]{2}\s\d{3,}\s[a-z]\d{1,3})‘, value): #kleinbuchstabe im cutter
return ‚kleinbuchstabe im cutter‘
elif re.search(‚^([A-Z]{2}\s\d{3,}\s[A-Z]\s\d{1,3})‘, value): #blank im cutter
return ‚blank im cutter‘
elif re.search(‚^([A-Z]{2}\s\d{3,}\s[0-9]\d{1,3})‘, value): #cutter ohne buchstaben
return ‚cutter ohne buchstaben‘
else:
return ‚rvk_korrekt_oder_altsignatur‘

Kurzum: Die Varianten bei den Bonner RVK-Signatur sind überschaubar und man kann die über Regex ganz gut extrahieren. Schöne Grüße, Kai