Compare commits

..

31 Commits

Author SHA1 Message Date
9797bad66a src/MDConcEntryTypes.php aktualisiert
Den Import-Error auslösenden Begriff "spende" auf "1: Donation" gesetzt.
2026-03-24 09:40:45 +01:00
08d71ac7f4 Extend mapping for alternative titles 2026-03-23 18:12:43 +01:00
019817f54e Extend concordance lists 2026-03-19 17:49:09 +01:00
45e2dc20f2 Map Beschriftung (mittig) 2026-03-16 19:39:28 +01:00
f5b6dbb106 Merge pull request 'ufladerer-patch-1' (#18) from ufladerer-patch-1 into master
Reviewed-on: #18
2026-02-19 14:19:34 +01:00
718e915218 src/MDConcLicenses.php aktualisiert 2026-02-19 11:20:00 +01:00
47c59c0222 src/MDConcLicenses.php aktualisiert
added new rights statements
2026-02-19 11:12:38 +01:00
4a9f51761b Map further concordances 2026-02-17 23:21:34 +01:00
c2912644f9 Extend mapping 2026-02-09 18:11:18 +01:00
5dcfbaa0a1 Ignore fully numeric inputs in MDConcObjectTagRelTypes, map them to
general tags
2026-02-06 00:20:00 +01:00
7630e46a36 src/MDConcEntryTypes.php aktualisiert
Merge pull request 'src/MDConcEntryTypes.php aktualisiert' (#17) from cpitzen-patch-1 into master
Reviewed-on: #17
2026-01-22 18:23:44 +01:00
36db6f2213 src/MDConcEntryTypes.php aktualisiert 2026-01-21 15:40:01 +01:00
be5a2b84a8 Extend MDConcMarkingType 2025-12-22 18:22:54 +01:00
312826259e Update concordance lists 2025-12-17 16:49:47 +01:00
7ea8d14689 Add quotes around error-causing text / unmapped value in MDImporterMissingConcordance 2025-12-17 15:44:35 +01:00
38a732de6d Extend concordance lists 2025-12-16 12:38:45 +01:00
1c2c25f45b Map "zugeschrieben an" 2025-12-15 17:31:26 +01:00
1ce75c2c9c Add function for getting and cleaning missing concordance list 2025-12-15 17:29:00 +01:00
b122288127 Extend concordance list for event types 2025-12-11 14:12:19 +01:00
c93f18a7df Map Durchmesser (Rand) 2025-12-11 13:42:13 +01:00
9787a79c33 Update concordance lists 2025-12-02 15:26:40 +01:00
64018fd9a2 Extend concordance lists, link concordance.museum-digital.org in error
messages
2025-11-27 15:36:05 +01:00
98e5a85fb8 Extend MDConcLicenses 2025-11-18 17:34:17 +01:00
d8d59adb66 Fix variable comment 2025-11-13 10:28:34 +01:00
cb0684da05 Collect unmapped entries in dry-run mode
See museum-digital/importer#235
2025-11-13 00:28:24 +01:00
db3a659fa9 Extend mapping for MDConcObjectTagRelTypes 2025-11-11 18:19:19 +01:00
36803da776 Add type / value to MDImporterMissingConcordance 2025-11-11 13:27:27 +01:00
21c25ff3f3 Extend mapping for source types 2025-10-27 16:43:24 +01:00
c03a60d05a Allow public access to MDConcCertainty::MAPPING 2025-10-27 16:29:08 +01:00
000b8db862 Extend concordance list for actor roles 2025-10-27 15:45:14 +01:00
5aa2980600 Update concordance lists 2025-10-17 12:35:03 +02:00
25 changed files with 630 additions and 33 deletions

View File

@@ -5,6 +5,79 @@ declare(strict_types = 1);
* Exception thrown in case an update failed.
*/
final class MDImporterMissingConcordance extends Exception {
public string $target_type;
public string $value_to_map;
/** @var array<string, array<string>> */
private static array $_missing_concordances = [];
public static bool $suppress_shutdown_function = false;
private static bool $_shutdown_function_registered = false;
/**
* Gets the text for registering shutdown functions.
*
* @return string
*/
public static function getCleanMissingConcordanceReport():string {
if (empty(self::$_missing_concordances)) return '';
$output = PHP_EOL . PHP_EOL . "There are unmapped concordances. Please map them before proceeding." . PHP_EOL . "You may use https://concordance.museum-digital.org/ to do the mapping" . PHP_EOL . PHP_EOL;
foreach (self::$_missing_concordances as $key => $values) {
sort($values);
$output .= PHP_EOL . PHP_EOL . $key . PHP_EOL . PHP_EOL;
$output .= implode(PHP_EOL, array_unique($values));
}
$output .= PHP_EOL;
// Reset missing concordance report.
self::$_missing_concordances = [];
return $output;
}
/**
* Sets up an error.
*
* @param string $target_type Target type (e.g. "measurements").
* @param string $value_to_map Value to map.
*
* @return void
*/
public static function throw(string $target_type, string $value_to_map):void {
if (class_exists("MD_IMPORTER_CONF") && MD_IMPORTER_CONF::$dry_run === true) {
if (self::$_shutdown_function_registered === false) {
// Register printing at the end
register_shutdown_function(function() {
if (self::$suppress_shutdown_function === true) return;
echo self::getCleanMissingConcordanceReport();
});
self::$_shutdown_function_registered = true;
}
if (!isset(self::$_missing_concordances[$target_type])) {
self::$_missing_concordances[$target_type] = [];
}
self::$_missing_concordances[$target_type][] = $value_to_map;
return;
}
$exception = new MDImporterMissingConcordance("Unmapped specific value of type " . $target_type . ": '" . $value_to_map . '\'' . PHP_EOL . "Please consult https://concordance.museum-digital.org for filling out missing concordances");
$exception->target_type = $target_type;
$exception->value_to_map = $value_to_map;
throw $exception;
}
/**
* Error message.
*

View File

@@ -56,6 +56,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Creator" => 1,
"creator" => 1,
"deutscher Baumeister, Ingenieur, Holzschneider, Kupferstecher, Zeichner, Topograph und Militärschrif" => 1,
"Drechsler" => 1,
"Elfenbeindrechsler" => 1,
"Elfenbeindrechslerin" => 1,
"Elfenbeindrechsler*in" => 1,
@@ -63,6 +64,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Elfenbeinschnitzerin" => 1,
"Elfenbeinschnitzer*in" => 1,
"Elfenbeinschnitzerei" => 1,
"Emailleur" => 1,
"Entwurf und Ausführung" => 1,
"Fabrik" => 1,
"Fayencemanufaktur" => 1,
@@ -136,7 +138,9 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Interviewer" => 1,
"Interviewerin" => 1,
"Interviewer*in" => 1,
"Juwelier" => 1,
"Juwelier und Uhrmacher" => 1,
"K" => 1,
"Katograf" => 1,
"Keramiker" => 1,
"Keramikerin" => 1,
@@ -193,6 +197,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Papiermacherin" => 1,
"Papiermacher*in" => 1,
'Papierverarbeitungswerk' => 1, // created by
'Plattner' => 1, // created by
"Porzellanhersteller" => 1,
"Porzellanherstellerin" => 1,
"Porzellanhersteller*in" => 1,
@@ -216,15 +221,18 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Regisseuer*in" => 1,
"Reparatur" => 1,
"Reproduktion" => 1,
"Schäfter" => 1,
"Scherenschneider" => 1,
"Scherenschneiderin" => 1,
"Scherenschneider*in" => 1,
"Schlossschmied" => 1,
"Schneider" => 1,
"Schneiderin" => 1,
"Schneider*in" => 1,
"Schnitzer" => 1,
"Schnitzerin" => 1,
"Schnitzer*in" => 1,
"Seidensticker" => 1,
"Silberschmied" => 1,
"Silberschmiedin" => 1,
"Silberschmied*in" => 1,
@@ -239,6 +247,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Steinbildhauer*in" => 1,
"Steinmetz" => 1,
"Steinmetzin" => 1,
"Steinschneider" => 1,
"Steinmetz*in" => 1,
"Steingutfabrik" => 1,
"Stempelschneider" => 1,
@@ -323,6 +332,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"nach" => 4,
'Original / Vorlage' => 4,
'Original / Vorlage zu' => 4,
'Kopie nach / Orginal Figurengruppe' => 4,
"Schöpfer der Vorlage" => 4,
"Schöpferin der Vorlage" => 4,
"Schöpfer*in der Vorlage" => 4,
@@ -351,6 +361,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Datsrellung" => 5,
"Dastellung" => 5,
"Dartsellung" => 5,
"Dargestellte Person" => 5,
"dargestellt" => 5,
"Dargestellt" => 5,
"Dargestellte Personen" => 5,
@@ -505,6 +516,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Maler*in" => 9,
'Maler/in' => 9, // painted by
"Malerin, Grafikerin" => 9,
"Maler (zugeschrieben)" => 9,
"Malermeister" => 9,
"Malermeisterin" => 9,
"Malermeister*in" => 9,
@@ -554,6 +566,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
// 11: Received
"Adressat" => 11,
'Adressat/in' => 11, // received by
"Beschenkter" => 11,
"Beschenkte Person" => 11,
"Beschenkte Person (Geburtstag)" => 11,
"Beschenkte Person (Hochzeitstag)" => 11,
@@ -598,6 +611,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Lithographie" => 12,
"Lithographin" => 12,
"Lithograph*in" => 12,
"Lithograph & Verleger" => 12,
"Radierer" => 12,
"Radiererin" => 12,
"Radierer*in" => 12,
@@ -646,6 +660,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Zeichnerin" => 19,
"Zeichner*in" => 19,
'Zeichner/in' => 19, // drawn by
'Zeichnung' => 19, // drawn by
"Zeichner / Inventor" => 19,
"Zeichner, Autor der Dekoration" => 19,
"Zeichner und Grafiker" => 19,
@@ -1014,6 +1029,7 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
"Exilpolitiker" => 23,
'Impulsgebende Person' => 23,
"zugeschrieben" => 23,
"zugeschrieben an" => 23,
"Feldwebel" => 23,
"Feuerwehrmann im 2. Weltkrieg" => 23,
@@ -1267,7 +1283,8 @@ final class MDConcActor implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):int {
if (!isset(self::ACTOR_ROLES_TO_EVENT_TYPE[$input])) {
throw new MDImporterMissingConcordance("Unknown actor role: " . $input);
MDImporterMissingConcordance::throw("actor role", $input);
return 1; // Return default in dry-run mode
}
return self::ACTOR_ROLES_TO_EVENT_TYPE[$input];

View File

@@ -11,7 +11,8 @@ declare(strict_types = 1);
*/
final class MDConcCertainty implements MDImporterConcordanceListInterface {
private const MAPPING = [
// Public for access in concordance.museum-digital.org
public const MAPPING = [
// Uncertain
@@ -32,10 +33,14 @@ final class MDConcCertainty implements MDImporterConcordanceListInterface {
'zugeschriebe' => false,
'zugeschrieben' => false,
'zugeschrieben an' => false,
'Ausführung' => false,
'Entwurf' => false,
'geschätzt / unsicher / vermutet' => false,
// Certain
'sicher' => true,
'Herstellung' => true,
'gesichert' => true,
'nach Passepartoutnotiz' => true,
'Zusammenarbeit mit' => true,
@@ -55,7 +60,8 @@ final class MDConcCertainty implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):bool {
if (!isset(self::MAPPING[$input])) {
throw new MDImporterMissingConcordance("Unknown certainty identifier: " . $input);
MDImporterMissingConcordance::throw("certainty identifier", $input);
return true; // Return default in dry-run mode
}
return self::MAPPING[$input];

View File

@@ -25,7 +25,8 @@ final class MDConcCheckTypes implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):MDObjectCheckType {
if (!isset(self::CHECK_TYPES[$input])) {
throw new MDImporterMissingConcordance("Unknown check type: " . $input);
MDImporterMissingConcordance::throw("check", $input);
return MDObjectCheckType::completeness_check; // Return default in dry-run mode
}
return self::CHECK_TYPES[$input];

View File

@@ -45,7 +45,8 @@ final class MDConcCloserLocationTypes implements MDImporterConcordanceListInterf
public static function getConcordanceTarget(string $input):string {
if (!isset(self::LOCATION_TYPES_VERBOSE[$input])) {
throw new MDImporterMissingConcordance("Unknown location type: " . $input);
MDImporterMissingConcordance::throw("location", $input);
return "3"; // Return default in dry-run mode
}
return self::LOCATION_TYPES_VERBOSE[$input];

View File

@@ -26,7 +26,8 @@ final class MDConcColors implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::COLORS_LIST[$input])) {
throw new MDImporterMissingConcordance("Unknown color: " . $input);
MDImporterMissingConcordance::throw("color", $input);
return "black"; // Return default in dry-run mode
}
return self::COLORS_LIST[$input];

View File

@@ -99,7 +99,8 @@ final class MDConcCurrencies implements MDImporterConcordanceListInterface {
if (in_array($input, MDCurrenciesSet::CURRENCIES, true)) {
return $input;
}
throw new MDImporterMissingConcordance("Unknown currency: " . $input);
MDImporterMissingConcordance::throw("currency", $input);
return "eu-EUR"; // Return default in dry-run mode
}
return self::CURRENCIES_LIST[$input];

View File

@@ -37,7 +37,8 @@ final class MDConcDamageTypes implements MDImporterConcordanceListInterface {
throw new MDImporterBlacklistedConcordanceTerm("Invalid damage type: " . $input);
}
throw new MDImporterMissingConcordance("Unknown damage type: " . $input);
MDImporterMissingConcordance::throw("damage", $input);
return MDObjectDamageType::desiccation; // Return default in dry-run mode
}
return self::DAMAGE_TYPES[$input];

View File

@@ -66,8 +66,10 @@ final class MDConcEntryTypes implements MDImporterConcordanceListInterface {
"Geschenk (Lederscheide" => "1",
"Geschenk 20.10.03" => "1",
"Schenkung" => "1",
"Schenkung / Spende" => "1",
"Schenkung/abgeschr. B. DHM" => "1",
"Schenkung an die Stadt Ravensburg" => "1",
"Schenkung & Nachlass lt. Testament vom 18.09.2001" => "1",
"Schhenkung" => "1",
"Schnekung" => "1",
"Schenung" => "1",
@@ -92,6 +94,9 @@ final class MDConcEntryTypes implements MDImporterConcordanceListInterface {
"Schenkung/abgeschr.B. DHM" => "1",
"Sachspende" => "1",
"Spende" => "1",
"spende" => "1",
"Sepnde" => "1",
"Spene" => "1",
"Anonyme Spende" => "1",
"Kostenlose" => "1",
"Überlassung" => "1",
@@ -195,6 +200,7 @@ final class MDConcEntryTypes implements MDImporterConcordanceListInterface {
"Excavation" => "3",
"Feltárás" => "3",
"Grabung" => "3",
"Grabungsfund" => "3",
"Grabungsfund Arch. Landesamt" => "3",
"Bergung" => "3",
@@ -215,7 +221,12 @@ final class MDConcEntryTypes implements MDImporterConcordanceListInterface {
"Nachlaßübernahme" => "5",
"Nachlass Dr. Enste" => "5",
"Stiftung/Nachlass" => "5",
"Ankauf & Nachlass v. Steffen Lange" => "5",
"Übergabe & Nachlass Otto Garten (lt. Testament - gez. vom 18.09. 20018" => "5",
"Übergabe & Nachlass Otto Garten (lt. Testament - gez. vom 18.09. 2001" => "5",
"Übergabe & Nachlass lt. Testament" => "5",
"Übergabe & Nachlass lt. Testament vom 18.09.2001" => "5",
"übergabe & Nachlass lt. Testament vom 18.09.2001" => "5",
"Vermächtnis" => "5",
"Erbschaft / Nachlass" => "5",
"Hagyaték" => "5",
@@ -375,7 +386,8 @@ final class MDConcEntryTypes implements MDImporterConcordanceListInterface {
return self::ENTRY_TYPES_VERBOSE[$inputTrimmed];
}
throw new MDImporterMissingConcordance("Unknown entry type: " . $input);
MDImporterMissingConcordance::throw("entry (to museum)", $input);
return "99"; // Return default in dry-run mode
}
}

View File

@@ -44,7 +44,9 @@ vermuteter Herstellungsort' => 1,
'Beginning of existence' => 1,
'creation' => 1,
'Erschaffung/Herstellung' => 1,
'Architekt/in' => 11, // created by
'Entwurf, Herstellung und Verlag' => 1,
'Herstellung und Verlag' => 1,
'Architekt/in' => 1, // created by
"Guss" => 1,
"Guß" => 1,
'http://terminology.lido-schema.org/eventType/production' => 1,
@@ -109,6 +111,7 @@ vermuteter Herstellungsort' => 1,
'Vorlagenerstellung' => 4,
'Stichvorlage' => 4,
'Vorlage' => 4,
'Vorlage vermutet' => 4,
'Entwurf; Vorlage' => 4,
'Entwurfsort' => 4,
'Entwurf Umkreis' => 4,
@@ -122,6 +125,7 @@ vermuteter Herstellungsort' => 1,
// 5: Displayed actor
'Was displayed (actor)' => 5,
'Wurde abgebildet (Akteur)' => 5,
'dargestellte Person' => 5,
'Displayed actor' => 5,
'Darstellung' => 5,
@@ -360,6 +364,7 @@ vermuteter Herstellungsort' => 1,
// 48: Edited
'Herausgegeben' => 48,
'Verlag zugeschrieben' => 48,
"publication" => 48,
// 49: Gifted, donated
@@ -397,7 +402,8 @@ vermuteter Herstellungsort' => 1,
public static function getConcordanceTarget(string $input):int {
if (!isset(self::EVENT_TYPE_NAMES_TO_ID[$input])) {
throw new MDImporterMissingConcordance("Unknown event type: '" . $input . "'");
MDImporterMissingConcordance::throw("event", $input);
return 1; // Return default in dry-run mode
}
return self::EVENT_TYPE_NAMES_TO_ID[$input];

View File

@@ -28,7 +28,7 @@ enum MDConcFieldRelatedWorksType {
*/
public static function fromString(string $input):MDConcFieldRelatedWorksType {
return match($input) {
$output = match($input) {
"Dokumentiert in",
"dokumentiert in",
@@ -199,8 +199,15 @@ enum MDConcFieldRelatedWorksType {
"" => self::undefined,
default => throw new MDpageParameterNotFromListException("Unknown target field for related works type: " . $input),
default => null,
};
if ($output === null) {
MDImporterMissingConcordance::throw("related work type", $input);
return self::undefined; // Return default in dry-run mode
}
return $output;
}
}

View File

@@ -86,7 +86,8 @@ final class MDConcLanguages implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::LANGUAGES_LIST[$input])) {
throw new MDImporterMissingConcordance("Unknown language type: " . $input);
MDImporterMissingConcordance::throw("language", $input);
return "de"; // Return default in dry-run mode
}
return self::LANGUAGES_LIST[$input];

View File

@@ -46,6 +46,7 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"https://creativecommons.org/licenses/by/4.0/deed.de" => "CC BY",
"Namensnennung 4.0. International (CC BY 4.0)" => "CC BY",
"Namensnennung 4.0 International - CC BY 4.0" => "CC BY",
"Namensnennung 4.0 International - (CC BY 4.0)" => "CC BY",
"CC BY SA" => "CC BY-SA",
"CC BY-SA-" => "CC BY-SA",
@@ -82,6 +83,7 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"https://creativecommons.org/licenses/by-sa/4.0/deed.de" => "CC BY-SA",
"Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0)" => "CC BY-SA",
"Namensnennung 4.0 International (CC BY 4.0)" => "CC BY-SA",
"CC BY-SA 4.0 - Namensnennung, Weitergabe unter gleichen Bedingungen" => "CC BY-SA",
"CC BY_NC" => "CC BY-NC",
"CC_BY_NC" => "CC BY-NC",
@@ -89,6 +91,7 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"CC.BY-NC" => "CC BY-NC",
"http://creativecommons.org/licenses/by-nc/4.0/" => "CC BY-NC",
"https://creativecommons.org/licenses/by-nc/4.0/" => "CC BY-NC",
"CC BY-NC 4.0 - Namensnennung, nicht kommerziell, keine Bearbeitung" => "CC BY-NC",
"CC BY_NC_SA" => "CC BY-NC-SA",
"CC_BY_NC_SA" => "CC BY-NC-SA",
@@ -103,6 +106,7 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"http://creativecommons.org/licenses/by-nc-sa/4.0/" => "CC BY-NC-SA",
"https://creativecommons.org/licenses/by-nc-sa/4.0/" => "CC BY-NC-SA",
"Namensnennung - Nicht kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-NC-SA 4.0)" => "CC BY-NC-SA",
"CC BY-NC-SA 4.0 - Namensnennung, nicht kommerziell, Weitergabe unter gleichen Bedingungen" => "CC BY-NC-SA",
"CC BY_NC_ND" => "CC BY-NC-ND",
"CC_BY_NC_ND" => "CC BY-NC-ND",
@@ -115,6 +119,8 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"https://creativecommons.org/licenses/by-nc-nd/4.0/deed.de" => "CC BY-NC-ND",
"https://creativecommons.org/licenses/by-nc-nd/3.0/de/" => "CC BY-NC-ND",
"CC BY-ND 4.0 - Namensnennung, Keine Bearbeitungen 4.0" => "CC BY-ND",
"https://www.deutsche-digitale-bibliothek.de/content/lizenzen/rv-fz" => "RR-F",
"https://www.deutsche-digitale-bibliothek.de/content/lizenzen/rv-fz/" => "RR-F",
"https//www.deutsche-digitale-bibliothek.de/content/lizenzen/rv-fz" => "RR-F",
@@ -133,6 +139,7 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"Alle Rechte vorbehalten" => "RR-F",
"Alle Rechte vorbehalten." => "RR-F",
"Alle Rechte vorbehalten - Urhebererechtlich geschütztes Werk" => "RR-F",
"Urheberrechtsschutz (InC)" => "RR-F",
"IN COPYRIGHT" => "RR-P",
"Rechtsstatus unbekannt" => "RR-P",
"none" => "RR-F",
@@ -141,6 +148,9 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
"https://www.europeana.eu/rights/rr-r/" => "RR-R",
"Keine Verwendung erlaubt" => "RR-R",
"Orphan Work" => "Orphan Work",
"Urheberrechtsschutz - Verwaistes Werk EU (InC-OW-EU)" => "Orphan Work",
'PDM' => 'Public Domain Mark',
'Public Domain Mark 1.0' => 'Public Domain Mark',
'PDM 1.0' => 'Public Domain Mark',
@@ -163,7 +173,8 @@ final class MDConcLicenses implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::LICENSES_LIST[$input])) {
throw new MDImporterMissingConcordance("Unknown licence type: " . $input);
MDImporterMissingConcordance::throw("licence", $input);
return "RR-F"; // Return default in dry-run mode
}
return self::LICENSES_LIST[$input];

View File

@@ -31,7 +31,8 @@ final class MDConcLoanTypes implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::LOAN_TYPES[$input])) {
throw new MDImporterMissingConcordance("Unknown loan type: " . $input);
MDImporterMissingConcordance::throw("loan", $input);
return "outgoing"; // Return default in dry-run mode
}
return self::LOAN_TYPES[$input];

View File

@@ -23,6 +23,7 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
"Mitte" => "center",
"vorn am Kasten, mittig, einseitig" => "center",
"an Gehäuse mittig" => "center",
'mitte' => 'center', // Center
// Left
"Links" => "left",
@@ -35,6 +36,7 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
"Waagebalken links" => "left",
"Vorderseite links (Brusthöhe)" => "left",
"an Skala links und am Gehäuse Fronseite" => "left",
'mitte links' => 'left', // Left
// Right
"mittig rechts" => "right",
@@ -43,9 +45,13 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
"rechts neben Bildnis" => "right",
"Rechter Bildrand" => "right",
"Balken rechts" => "right",
'Mitte rechts' => 'right', // Right
// Bottom
"unten" => "bottom",
'Mitte unten' => 'bottom', // Bottom
'unten links u. rechts' => 'bottom', // Bottom
'unten rechts/links' => 'bottom', // Bottom
"unter der Zeichnung" => "bottom",
"unter der Bild" => "bottom",
"unterer Bildrand" => "bottom",
@@ -96,8 +102,10 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
"unterer Bildrand rechts" => "bottom_right",
"Bildrand rechts unten" => "bottom_right",
"Rechts unten" => "bottom_right",
"rechts unten" => "bottom_right",
"Unten rechts" => "bottom_right",
"unten rechts" => "bottom_right",
"untenb rechts" => "bottom_right",
// Top Left
"linker, oberer Bildrand" => "top_left",
@@ -166,6 +174,7 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
"Rückseite Keilrahmen" => "rear_side",
"Rükseite" => "rear_side",
"Rückseite, unter Doublierung" => "rear_side",
'verso' => 'rear_side', // Rear side
// rear_bottom
"Rückseite unten" => "rear_bottom",
@@ -450,7 +459,8 @@ final class MDConcMarkingPosition implements MDImporterConcordanceListInterface
public static function getConcordanceTarget(string $input):string {
if (!isset(self::MARKING_POSITIONS_VERBOSE[$input])) {
throw new MDImporterMissingConcordance("Unknown marking position: " . $input);
MDImporterMissingConcordance::throw("marking position", $input);
return "other"; // Return default in dry-run mode
}
return self::MARKING_POSITIONS_VERBOSE[$input];

View File

@@ -16,6 +16,7 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
// Default: Handwritten
"-" => "handwritten",
"x" => "handwritten",
'Handschriftlich mit Bleistift - Signatur' => 'handwritten', // Handwritten
"schwarz" => "handwritten",
"braun" => "handwritten",
"Leinenarbeit" => "handwritten",
@@ -39,6 +40,7 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"handschriftlich - Beschriftung durch Hersteller*in" => "handwritten",
"Beschriftung" => "handwritten",
"Beschriftung (handschriftlich)" => "handwritten",
"Beschriftung (mittig)" => "handwritten",
"Beschriftung (spiegelverkehrt und gedreht)" => "handwritten",
"Beschriftung (spiegelverkehrt)" => "handwritten",
"Beschriftung auf Montierung (handschriftlich)" => "handwritten",
@@ -57,6 +59,25 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"aufgemalt/geschrieben" => "handwritten",
"Aufschrift" => "handwritten",
"Aufschrift (Bleistift)" => "handwritten",
'handschirftlich - Handschrift' => 'handwritten', // Handwritten
'handschirftlich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'handschriflich mit Bleistift - Handschrift' => 'handwritten', // Handwritten
'handschriflich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'handschrifltich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'handschriftich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'handschriftlich - Handschrift' => 'handwritten', // Handwritten
'handschriftlich mit Bleisift - Signatur' => 'handwritten', // Handwritten
'handschriftlich mit Bleistift - Beschriftung' => 'handwritten', // Handwritten
'handschriftlich mit Bleistift - Handschrift' => 'handwritten', // Handwritten
'handschriftlich mit Feder - Signatur' => 'handwritten', // Handwritten
'handschriftlich mit Kohle - Signatur' => 'handwritten', // Handwritten
'handschriftlich mit Kugelschreiber - Handschrift' => 'handwritten', // Handwritten
'handschriftlich mit schwarzer Kreide - Signatur' => 'handwritten', // Handwritten
'handschriftliche Dedikation - Handschrift' => 'handwritten', // Handwritten
'handschriftllich mit Bleistift - Handschrift' => 'handwritten', // Handwritten
'handschriftllich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'hanschriftlich mit Bleistift - Signatur' => 'handwritten', // Handwritten
'marking' => 'handwritten', // Handwritten
"Aufschrift mit Tinte" => "handwritten",
"Beischrift" => "handwritten",
"Benennung" => "handwritten",
@@ -230,6 +251,12 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"Druck, weiße Schrift" => "overprint",
"gedruckt und geprägt" => "overprint",
"gdruckt" => "overprint",
'gedruckt - Inschrift' => 'overprint', // Overprint
'gedruckt - Signatur' => 'overprint', // Overprint
'gedruckt - Stempel' => 'overprint', // Overprint
'gedruckt im Stein - Beschriftung' => 'overprint', // Overprint
'gedruckt im Stein - Inschrift' => 'overprint', // Overprint
'gedruckt im Stein - Signatur' => 'overprint', // Overprint
"gerduckt" => "overprint",
"goldener Druck mit Ornamenten und Zierrahmen" => "overprint",
"Golddruck" => "overprint",
@@ -262,6 +289,7 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"Beschriftung auf Schmuckrahmen (gedruckt)" => "overprint",
"Datierung (gedruckt)" => "overprint",
"Titel (gedruckt)" => "overprint",
"Titel (gedruckt)" => "overprint",
"Wappen (gedruckt)" => "overprint",
"Widmung (gedruckt)" => "overprint",
@@ -299,11 +327,15 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"schwarz gestempelt" => "stamp",
"Signaturenstempel" => "stamp",
"stamped" => "stamp",
'gestemnpelt - Stempel' => 'stamp', // Stamped
'gestempelt - Signatur' => 'stamp', // Stamped
'gestempelt - Stempel' => 'stamp', // Stamped
"Stempel" => "stamp",
"Stempel (rund)" => "stamp",
"Stempel,Kugelschreiber" => "stamp",
"Stempel eingeprägt" => "stamp",
"Stempelaufdruck" => "stamp",
'Signatur gestempelt - Signatur' => 'stamp', // Stamped
"Beschriftung (gestempelt)" => "stamp",
"Beschriftung auf Montierung (gestempelt)" => "stamp",
@@ -325,6 +357,7 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"Nummer graviert, gedruckt" => "engraving",
"eingraviert und geätzt" => "engraving",
"Schnitt" => "engraving",
"Beschriftung (graviert)" => "engraving",
# Screwed on
"angeschraubt" => "screwed",
@@ -355,6 +388,7 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"Prägung" => "embossing",
"geflechelt" => "embossing",
"Inschrift, geprägt" => "embossing",
"Signatur (geprägt)" => "embossing",
"schwarze Prägung" => "embossing",
"aufgesetzt und genutet, eingeprägt" => "embossing",
"mit eingeprägtem Golddruck" => "embossing",
@@ -399,6 +433,14 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"eingeritzt" => "scarified",
"handschliff" => "scarified",
"Schliff" => "scarified",
'Signatur geritzt - Signatur' => 'scarified', // Scarified
'Signatur geritzt in der Platte - Signatur' => 'scarified', // Scarified
'geritzt - Beschriftung' => 'scarified', // Scarified
'geritzt - Inschrift' => 'scarified', // Scarified
'geritzt - Marke' => 'scarified', // Scarified
'geritzt - Signatur' => 'scarified', // Scarified
'geritzt in der Platte - Beschriftung' => 'scarified', // Scarified
'geritzt in der Platte - Signatur' => 'scarified', // Scarified
# Hallmarked
"gepunzt" => "hallmarked",
@@ -416,30 +458,41 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
"Signatur" => "signature",
"signiert" => "signature",
"farbig bemalt und glasiert" => "signature",
'geruckt - Signatur' => 'signature', // Signature
"gemalt und glasiert" => "signature",
'Signatur gedruckt im Stein - Signatur' => 'signature', // Signature
"Signatur (handschriftlich)" => "signature",
"Signatur (gedruckt)" => "signature",
"Signatur (gemalt)" => "signature",
"Signatur (gezeichnet)" => "signature",
"Gez. u. gest. v. F. Foltz in Darmstadt., Andernach." => "signature",
"Signatur mit Datierung" => "signature",
"Signatur mit Datierung (handschriftlich)" => "signature",
"Signatur mit Datierung (gedruckt)" => "signature",
"Signatur mit Datierung (gemalt)" => "signature",
"Signatur mit Datierung (gestempelt)" => "signature",
"Signatur mit Datierung (gezeichnet)" => "signature",
"Signatur mit Datierung (gedruckt)" => "signature",
"Signatur und Datierung (gedruckt)" => "signature",
"Signatur mit Datum (handschriftlich)" => "signature",
"Signatur mit Datum (gedruckt)" => "signature",
"Signatur mit Datum (gemalt)" => "signature",
"Signatur mit Datum (gestempelt)" => "signature",
"Signatur mit Datum (gezeichnet)" => "signature",
'signatur im Holzstock - Signatur' => 'signature', // Signature
'signatur im Stein - Signatur' => 'signature', // Signature
"Künstlersignatur" => "signature",
"Signatur (geritzt)" => "signature",
"Signatur mit Kugelschreiber" => "signature",
"handschriftlich mit Bleistift - Signatur" => "signature",
"im Stein - Signatur" => "signature",
'Signatur im Holzstock - Signatur' => "signature",
'Signatur im Stein - Signatur' => "signature",
'Signatur in der Platte - Signatur' => "signature",
# Watermark
"Wasserzeichen" => "watermark",
'Wasserzeichen - Wasserzeichen' => 'watermark', // Watermark
];
@@ -453,7 +506,8 @@ final class MDConcMarkingType implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::MARKING_TYPES_VERBOSE[$input])) {
throw new MDImporterMissingConcordance("Unknown marking type: " . $input);
MDImporterMissingConcordance::throw("marking", $input);
return "marking"; // Return default in dry-run mode
}
return self::MARKING_TYPES_VERBOSE[$input];

View File

@@ -19,7 +19,7 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
*/
public static function getConcordanceTarget(string $input):MDMeasurementType|false {
return match($input) {
$output = match($input) {
// Just list entries
"Allgemein",
@@ -187,8 +187,57 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Höhe (Objekt)",
"Höhe (Etui)",
"Höhe (Heft)",
"Höhe (Foto)",
"Höhe (Dose)",
"Höhe (Außenmaß)",
"Höhe (netto)",
"Höhe (a mit b-d)",
"Höhe (e)",
"Höhe (S 6289/5a)",
"Höhe (S 6289/5b)",
"Höhe (S 6291/3)",
"Höhe (S 6291/4)",
"Höhe (S 6291/5)",
"Höhe (S 6291/6)",
"Höhe (S 6295/3)",
"Höhe (S 6295/4)",
"Höhe (S 6295/5)",
"Höhe (S 6316/1)",
"Höhe (S 6316/2)",
"Höhe (S 6316/3)",
"Höhe (S 6316/4)",
"Höhe (S 6316/5)",
"Höhe (S 6418a)",
"Höhe (aufgeklappt)",
"Höhe (S 6419a)",
"Höhe (a)",
"Höhe (a mit b)",
"Höhe (S 6519/1)",
"Höhe (S 6530/1)",
"Höhe (S 6542/1)",
"Höhe (S 6549/1-3)",
"Höhe (S 6552/1-5)",
"Höhe (je Band)",
"Höhe (ohne Schnur)",
"Höhe (S 6560/1a-c =)",
"Höhe (S 6561/10 = größter)",
"Höhe (S 6561/13, andere)",
"Höhe (S 6561/18,)",
"Höhe (Nadel auf Papier)",
"Höhe (Hose in Ver-)",
"Höhe (einzelnes Tütchen)",
"Höhe (1)",
"Höhe (a-c)",
"Höhe (Kanne)",
"Höhe (S 6832/1)",
"Höhe (a und b)",
"Höhe (je Bild)",
"Höhe (S 6844/1)",
"Höhe (S 6844/2)",
"Höhe (je Liste)",
"Höhe (je Plan außer 3b)",
"Höhe (Platte in Hülle)",
"Höhe (S 6852/1)",
"Höhe (Druckstock)",
"Höhe (Blatt/Platte)",
"Höhe (ausgeklappt)",
@@ -245,16 +294,144 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Höhe (Einleger 22)',
'Höhe (Einleger 23)',
'Höhe (Einleger 24)',
"Höhe (S 6530/2)",
"Höhe (S 6542/2)",
"Höhe (S 6549/4-5)",
"Höhe (S 6552/6)",
"Höhe (S 6832/2)",
"Höhe (S 6845/3b)",
"Höhe (S 6852/2a-b)",
"Höhe (S 6877/3)",
"Höhe (S 6914/2)",
"Höhe (S 6931/2)",
"Höhe (S 6941/2)",
"Höhe (S 6962/7)",
"Höhe (S 7083/2)",
"Höhe (S 7135/1b)",
"Höhe (5)",
"Höhe (S 6561/11)",
"Höhe (S 6542/5)",
"Höhe (S 7135/3)",
"Höhe (S 7141/2)",
"Höhe (Springerle in Tüte)",
"Höhe (b)",
"Höhe (e und f)",
"Höhe (eine Glühbirne)",
"Höhe (gesamter Stapel)",
"Höhe (gesamter Stapel)[67/4521]",
"Höhe (S 6877/1 u. 2)",
"Höhe (je Album)",
"Höhe (1)",
"Höhe (Griff, beide Hälften)",
"Höhe (1)",
"Höhe (S 6914/1)",
"Höhe (gesamter Bogen)",
"Höhe (Springerle)",
"Höhe (S 6931/1)",
"Höhe (S 6941/1)",
"Höhe (S 6962/1-6, je)",
"Höhe (a mit b)",
"Höhe (je Ziegel)",
"Höhe (S 6519/7)",
"Höhe (S 6519/8)",
"Höhe (S 6519/9)",
"Höhe (1-4)",
"Höhe (je)",
"Höhe (Tafel)",
"Höhe (Plakette)",
"Höhe (a)",
"Höhe (Insgesamt)",
"Höhe (S 7083/1)",
"Höhe (Stich ohne Rahmen)",
"Höhe (pro Plombe)",
"Höhe (3)",
"Höhe (3-4)",
"Höhe (Haube)",
"Höhe (S 6519/4)",
"Höhe (S 6542/4)",
"Höhe (S 7135/2)",
"Höhe (d)",
"Höhe (a-b)",
"Höhe (1)",
"Höhe (1)",
"Höhe (je Tuch)",
"Höhe (a)",
"Höhe (1 und 2, je a-b)",
"Höhe (S 7135/1a)",
"Höhe (S 7141/1)",
"Höhe (je Vierer-Bogen)",
"Höhe (a und b)",
"Höhe (a)",
"Höhe (b und d)",
"Höhe (S 7408/2)",
"Höhe (je Teller)",
"Höhe (a)",
"Höhe (a und c)",
"Höhe (Eimerchen)",
"Höhe (S 7408/1)",
"Höhe (a mit b)",
"Höhe (m. Rahmeninkl.Aufhä.)",
"Höhe (a)",
"Höhe (a mit b)",
'Höhe (Passepartout)',
'Höhe (Passepartout Standardformat)',
'Höhe (Unterlage)',
'Höhe (Buch)',
'Höhe (Jeder Druck)',
'Höhe (Gesamthöhe)',
"Höhe (1 Tassengedeck)",
"Höhe (1 und 2, je c-e)",
"Höhe (2)",
"Höhe (5-6)",
"Höhe (Nadeln in Verpack.)",
"Höhe (S 6418b)",
"Höhe (S 6419b)",
"Höhe (S 6542/3)",
"Höhe (S 6877/4)",
"Höhe (S 6914/3)",
"Höhe (S 6962/8)",
"Höhe (S 7083/3)",
"Höhe (S 7135/1c)",
"Höhe (Höhe)",
"Höhe (Mappe)",
"Höhe (c)",
"Höhe (g mit h)",
"Reliefhöhe" => MDMeasurementType::height,
"Länge",
"Länge OT",
"Länge H",
"Länge (1)",
"Länge (2)",
"Länge (3)",
"Länge (4)",
"Länge (5)",
"Länge (6)",
"Länge (7)",
"Länge (8)",
"Länge (a)",
"Länge (b)",
"Länge (c)",
"Länge (d)",
"Länge (e)",
"Länge (f)",
"Länge (g)",
"Länge (8)",
"Länge (1c)",
"Länge (Mappe)",
"Tiefe (Mappe)",
"Länge (S 6514/3)",
"Länge (S 6519/3)",
"Länge (S 7139/3)",
"Tiefe (S 6553/2)",
"Länge (S 6398/21)",
"Länge (S 6398/22)",
"Länge (1f)",
"Länge (S 6519/6)",
"Länge (S 7139/6)",
"Länge (S 7139/7)",
"Länge (S 7139/8)",
"Länge (S 7139/9)",
"Länge (ausgeklappt)",
"length",
"(Länge)",
@@ -274,8 +451,19 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Tiefe max",
"Tiefe/Länge (Objekt)",
"Außenmaß (Tiefe)",
"Tiefe (Außenmaß)",
"Teife",
"length",
"Länge (1b)",
"Länge (S 6424/4)",
"Länge (S 6514/2)",
"Länge (S 6519/2)",
"Länge (S 6795/2a und b)",
"Länge (S 7069b)",
"Länge (S 7081/3)",
"Länge (S 7139/2)",
"Tiefe (S 6553/1)",
"Tiefe (per Päckchen)",
"Bruttomass (Länge)",
"Bruttomass (Tiefe)",
"Kartierung (Länge)",
@@ -326,6 +514,25 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Tiefe (Buch)',
'Länge (Dose)',
'Tiefe (Dose)',
"Länge (1a)",
"Länge (S 7081/1-2)",
"Länge (S 7139/1)",
"Länge (S 6519/8a-e)",
"Länge (S 6514/1)",
"Länge (S 6424/3)",
"Länge (mit Kordel)",
"Länge (S 6795/1a und b)",
"Länge (1d)",
"Länge (S 6419c)",
"Länge (S 7139/4)",
"Länge (mit Handhabe)",
"Länge (1e)",
"Länge (S 6519/5)",
"Länge (S 6560/1b = Samtband)",
"Länge (S 7139/5)",
"Tiefe (kleinerer Größe)",
"Tiefe (etwas kleiner)",
"Tiefe (ähnlicher Größe)",
"depth",
"Dicke" => MDMeasurementType::length,
@@ -337,8 +544,12 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Breite (Etui)",
"Breite (Heft)",
"Breite (netto)",
"Breite (Batt)",
"Breite (Außenmaß)",
"Breite (Foto)",
"Breite (a)",
"Breite (S 7069a)",
"Breite (aufgeschlagen)",
"Breite (S 6799/1)",
"Breite größtes Stück",
"Breite (gesamt)",
"Breite (Druckstock)",
@@ -351,7 +562,26 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"(Breite)",
"Lichtmass (Breite)",
" (Breite)",
"Breite (ein Nagel)",
"width",
"Breite (Breite)",
"Breite (Mappe)",
"Breite (S 6576/1)",
"Breite (mit Griffen)",
"Breite (mit Handhabe)",
"Breite (BH, S 6561/1 - 9 mit)",
"Breite (Ensemble im Kästchen)",
"Breite (Hüfthalter)",
"Breite (S 6561/19-20 mit)",
"Breite (S 6576/2a-b)",
"Breite (S 6799/2a-b)",
"Breite (S 7069a und b)",
"Breite (a-d)",
"Breite (b)",
"Breite (c)",
"Breite (gesamt mit Handhabe)",
"Breite (mit Henkel)",
"Breite (packung)",
"width (overall)",
"Breite (Griff)",
"Außenmaß (Breite)",
@@ -373,6 +603,8 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Breite (Buchblock mit Einabnd)',
'Breite (Stein)',
'Breite (Schuber)',
"Breite (S 6560/1a = Anhänger)",
"Breite (vergleichbarer od.)",
'Breite (Karton)',
'Breite (Einleger)',
'Breite (Einleger 1)',
@@ -401,6 +633,7 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Breite (Einleger 20)',
'Breite (Einleger 21)',
'Breite (Passepartout)',
'Breite (Passepartout Standardformat)',
'Breite (Unterlage)',
'Breite (Buch)',
'Breite (Dose)',
@@ -414,6 +647,62 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Mündung (Durchmesser)",
"Rahmenaußenmaß Durchmesser",
"diameter",
"Durchmesser (a)",
"Durchmesser (b)",
"Durchmesser (c)",
"Durchmesser (d)",
"Durchmesser (e)",
"Durchmesser (f)",
"Durchmesser (g)",
"Durchmesser (1)",
"Durchmesser (2)",
"Durchmesser (3)",
"Durchmesser (4)",
"Durchmesser (S 7133/1)",
"Durchmesser (S 7133/3)",
"Durchmesser (S 7133/4)",
"Durchmesser (S 7134/1)",
"Durchmesser (S 7139/10)",
"Durchmesser (S 7139/11)",
"Durchmesser (S 6406/9a)",
"Durchmesser (S 6406/10a)",
"Durchmesser (S 6406/11a)",
"Durchmesser (S 6406/12a)",
"Durchmesser (S 6406/13a)",
"Durchmesser (S 6406/14a)",
"Durchmesser (S 6406/15a)",
"Durchmesser (S 6406/16a)",
"Durchmesser (S 6406/17a)",
"Durchmesser (S 6406/10c)",
"Durchmesser (S 6406/11c)",
"Durchmesser (S 6406/12c)",
"Durchmesser (S 6406/13c)",
"Durchmesser (S 6406/14c)",
"Durchmesser (S 6406/15b)",
"Durchmesser (S 6406/16b)",
"Durchmesser (S 6406/17b)",
"Durchmesser (S 6406/9c)",
"Durchmesser (S 6406/9d)",
"Durchmesser (S 6406/9e)",
"Durchmesser (S 6406/9f)",
"Durchmesser (S 6406/9g)",
"Durchmesser (Haube)",
"Durchmesser (S 6406/10d)",
"Durchmesser (S 6406/11d)",
"Durchmesser (Stand)",
"Durchmesser (Fuß)",
"Durchmesser (Rand /2)",
"Durchmesser (S 6406/10b)",
"Durchmesser (S 6406/11b)",
"Durchmesser (S 6406/12b)",
"Durchmesser (S 6406/13b)",
"Durchmesser (S 6406/14b)",
"Durchmesser (S 6406/9b)",
"Durchmesser (S 7133/2)",
"Durchmesser (S 7133/5)",
"Durchmesser (oberer Rand)",
"Durchmesser (Rand /1)",
"Durchmesser (Foto)",
"Außenmaß (Durchmesser)",
"Durchmesser in Richtung Bohrung",
"Durchmesser quer zur Bohrung",
@@ -424,12 +713,12 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Durchmesser (Höhe)",
"Durchmesser (Breite)",
"Durchmesser (Länge)",
"Durchmesser (Länge)",
"Durchmesser (Dose)",
"Objektmaß (Durchmesser)",
"Objektmass (Durchmesser)",
"Durchmesser (Blatt)",
"Durchmesser (Platte)",
"Durchmesser (Rand)",
"d",
"Ø" => MDMeasurementType::diameter,
@@ -449,13 +738,18 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Breite (Sockel)" => MDMeasurementType::height_socle,
"Höhe (Blatt)",
"Höhe (Blattmaß)",
"Höhe (Blattmass)",
"Blattmaß (Höhe)",
"Höhe (Blatt/Platte)",
"Höhe (Blatt (mittig gefalzt))",
"Blattmass (Höhe)" => MDMeasurementType::height_sheet_size,
"Breite (Blatt)",
"Breite (Blattmass)",
"Breite (Blattmaß)",
"Blattmaß (Breite)",
"Breite (Batt)",
"Breite (Blatt/Platte)",
"Breite (Blattplatte)",
"Breite (Blatt (mittig gefalzt))",
@@ -463,22 +757,41 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Blattmaß (Länge)",
"Blattmaß (Tiefe)",
"Länge (Blatt)",
"Tiefe (Blatt)",
"Länge (Blattmaß)",
"Tiefe (Blattmaß)",
"Länge (Blattmass)",
"Tiefe (Blattmass)",
"Blattmass (Länge)",
"Tiefe/Länge (Blatt)",
"Blattmass (Tiefe)" => MDMeasurementType::length_sheet_size,
"Höhe (Bild)",
"Höhe (Bildmaß)",
"Höhe (Bildmass)",
"Höhe (Darstellung)",
"Höhe (Darsetllung)",
"Höhe (Blatt/Darstellung)",
"Bildmaß (Höhe)",
"Höhe (Grafik ohne Pass.)",
"Höhe (Grafik ohne Pass.)",
"Höhe (Grafik ohne Pass.)",
"Höhe (Grafik ohne Pass.)",
"Höhe (Grafik ohne Pass.)",
"Höhe (Grafik ohne Passep.)",
"Höhe (Grafik ohne Passep.)",
"Höhe (Platte/Bild)",
"Höhe (Druckstock/Bild)",
"Höhe max (Darstellung)",
"Höhe max (Platte/Bild)",
"Höhe (Chine collé)",
"Höhe (Batt)",
"Bildmass (Höhe)" => MDMeasurementType::height_image_size,
"Breite (Bild)",
"Breite (Bildmaß)",
"Breite (Bildmass)",
"Breite (Darstellung)",
"Breite (Darsetllung)",
"Breite (Blatt/Darstellung)",
@@ -487,6 +800,7 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Breite (Bild/Platte)",
"Breite (Druckstock/Bild)",
"Breite max (Darstellung)",
"Breite max (Platte/Bild)",
"Breite (Chine collé)",
"Bildmass (Breite)" => MDMeasurementType::width_image_size,
@@ -514,6 +828,8 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Rahmenmass (Tiefe)" => MDMeasurementType::length_frame,
"Höhe min.",
'Höhe min (Darstellung)',
'Höhe min (Druckstock)',
'Höhe min (Blatt)',
'Höhe min (Platte)',
'Höhe min (Einleger)',
@@ -522,11 +838,14 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Höhe min (Einleger 3)',
'Höhe min (Einleger 4)',
'Höhe min (Einleger 5)',
"Höhe min (Platte/Bild)",
'Höhe min (Schuber)' => MDMeasurementType::height_min,
"Höhe max.",
'Höhe max (Darstellung)',
'Höhe max (Blatt)',
'Höhe max (Platte)',
'Höhe max (Druckstock)',
'Höhe max (Einleger)',
'Höhe max (Einleger 1)',
'Höhe max (Einleger 2)',
@@ -549,6 +868,8 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Breite min (Platte)',
'Breite min (Einleger)',
'Breite min (Darstellung)',
"Breite min (Druckstock)",
"Breite min (Platte/Bild)",
'Breite min (Schuber)' => MDMeasurementType::width_min,
"Breite max.",
@@ -562,6 +883,7 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
'Breite max (Einleger 5)',
'Breite max (Einleger 4-6)',
'Breite max (Darstellung)',
"Breite max (Druckstock)",
'Breite max (Schuber)' => MDMeasurementType::width_max,
"Diameter min." => MDMeasurementType::diameter_min,
@@ -608,9 +930,16 @@ final class MDConcMeasurementTypes implements MDImporterConcordanceListInterface
"Bodendurchmesser",
"Durchmesser (Boden)" => MDMeasurementType::diameter_of_base,
default => throw new MDImporterMissingConcordance("Unmapped specific measurement type: " . $input),
default => null,
};
if ($output === null) {
MDImporterMissingConcordance::throw("measurements", $input);
return MDMeasurementType::diameter_of_base; // Return default in dry-run mode
}
return $output;
}
}

View File

@@ -26,7 +26,8 @@ final class MDConcObjectForms implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::FORMS_LIST[$input])) {
throw new MDImporterMissingConcordance("Unknown form type: " . $input);
MDImporterMissingConcordance::throw("form/shape", $input);
return 'cube'; // Return default in dry-run mode
}
return self::FORMS_LIST[$input];

View File

@@ -24,21 +24,40 @@ final class MDConcObjectTagRelTypes implements MDImporterConcordanceListInterfac
'Druckvorlage' => 'tag',
'emotion' => 'tag',
'atmosphäre' => 'tag',
'Objektart' => 'tag',
'objektart' => 'tag',
'schwarz-grau' => 'tag',
'schwarzgrau' => 'tag',
'schwarz' => 'tag',
'hellbraun' => 'tag',
'schwarz-grau fleckig' => 'tag',
'schwarzbraun' => 'tag',
'rötlich' => 'tag',
'graubraun' => 'tag',
'schlagwort hist.ereignis' => 'tag',
'schlagwort thema' => 'tag',
'Objektart' => 'object_type',
'objektart' => 'object_type',
'object_type' => 'object_type',
"motive" => "display_subject",
"motiv" => "display_subject",
"display" => "display_subject",
"Bildelement" => "display_subject",
"display_subject" => "display_subject",
"material" => "material",
"technique" => "technique",
"technik" => "technique",
'thema' => 'topic',
'topic' => 'topic',
'erwähnt' => 'mentioned',
'mentioned' => 'mentioned',
'taxon' => 'taxon',
];
// Maps to event type
@@ -63,7 +82,8 @@ final class MDConcObjectTagRelTypes implements MDImporterConcordanceListInterfac
return self::RELATION_TYPES_MAPPED_TO_EVENTS[strtolower($input)];
}
throw new MDImporterMissingConcordance("Unknown object-tag relationship type: " . $input);
MDImporterMissingConcordance::throw("object-tag relationship", $input);
return ['event_type' => 24, 'target_section' => 'time'];
}
@@ -83,11 +103,14 @@ final class MDConcObjectTagRelTypes implements MDImporterConcordanceListInterfac
return self::RELATION_TYPE_NAMES[trim(strtolower($input))];
}
if (is_numeric($input)) return 'tag';
if (isset(self::RELATION_TYPES_MAPPED_TO_EVENTS[strtolower($input)])) {
throw new MDImporterTagRelationTypeIsEventType("Tag-object relationship type is signifies not tags, but an event component.");
}
throw new MDImporterMissingConcordance("Unknown object-tag relationship type: '" . $input . "'");
MDImporterMissingConcordance::throw("object-tag relationship", $input);
return 'tag'; // Return default in dry-run mode
}
}

View File

@@ -65,7 +65,8 @@ final class MDConcOwnershipStatus implements MDImporterConcordanceListInterface
if (isset(self::OWNERSHIP_TYPES_VERBOSE[trim($input)])) {
return self::OWNERSHIP_TYPES_VERBOSE[trim($input)];
}
throw new MDImporterMissingConcordance("Unknown ownership type: " . $input);
MDImporterMissingConcordance::throw("ownership", $input);
return 'deaccessed'; // Return default in dry-run mode
}
return self::OWNERSHIP_TYPES_VERBOSE[$input];

View File

@@ -108,7 +108,8 @@ final class MDConcPlace implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):int {
if (!isset(self::PLACE_ROLES_TO_EVENT_TYPE[$input])) {
throw new MDImporterMissingConcordance("Unknown place type: " . $input);
MDImporterMissingConcordance::throw("place (in event)", $input);
return 1; // Return default in dry-run mode
}
return self::PLACE_ROLES_TO_EVENT_TYPE[$input];

View File

@@ -13,6 +13,7 @@ final class MDConcSex implements MDImporterConcordanceListInterface {
private const SEXES_LIST = [
'Männlich' => 'male',
'Weiblich' => 'female',
'diverse' => 'other',
];
@@ -26,7 +27,8 @@ final class MDConcSex implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::SEXES_LIST[$input])) {
throw new MDImporterMissingConcordance("Unknown sex type: " . $input);
MDImporterMissingConcordance::throw("sex", $input);
return 'other'; // Return default in dry-run mode
}
return self::SEXES_LIST[$input];

View File

@@ -21,10 +21,34 @@ final class MDConcSourceTypes implements MDImporterConcordanceListInterface {
"buch" => "book",
"literatur" => "book",
"document]book" => "book",
'Buchpublikation' => 'book', // Book
'Produkthandbuch' => 'book', // Book
'Produkthandbuch/ Zusatzmaterial??' => 'book', // Book
'Produkthandbuch ' => 'book', // Book
'Buchpublikation ' => 'book', // Book
'Produkthandbuch (Objektart Missing)' => 'book', // Book
'Ausstellungskatalog' => 'book', // Book
'Comicbuch' => 'book', // Book
'Katalog' => 'book', // Book
// Misc
"Weiteres" => "misc",
"document]avm" => "misc",
'Keine Angabe' => 'misc', // Miscelaneous
'Handschriften' => 'misc', // Miscelaneous
'Divers' => 'misc', // Miscelaneous
'Handschrift' => 'misc', // Miscelaneous
'Flyer/Poster' => 'misc', // Miscelaneous
'Comic' => 'misc', // Miscelaneous
'Ordner' => 'misc', // Miscelaneous
'Diskette' => 'misc', // Miscelaneous
'Wissenschaftliche Hausarbeit' => 'misc', // Miscelaneous
// Periodical
'Magazin' => 'periodical', // Periodical
// Proceedings
'Tagungsunterlagen' => 'proceedings', // Proceedings
];
@@ -44,7 +68,8 @@ final class MDConcSourceTypes implements MDImporterConcordanceListInterface {
return self::SOURCE_TYPES[strtolower($input)];
}
throw new MDImporterMissingConcordance("Unknown source type: " . $input);
MDImporterMissingConcordance::throw("source", $input);
return 'proceedings'; // Return default in dry-run mode
}
}

View File

@@ -54,7 +54,8 @@ final class MDConcTime implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):int {
if (!isset(self::TIME_ROLES_TO_EVENT_TYPE[$input])) {
throw new MDImporterMissingConcordance("Unknown time type: " . $input);
MDImporterMissingConcordance::throw("time (in event)", $input);
return 1; // Return default in dry-run mode
}
return self::TIME_ROLES_TO_EVENT_TYPE[$input];

View File

@@ -16,6 +16,9 @@ final class MDConcTitleTypes implements MDImporterConcordanceListInterface {
// Empty
"" => "",
"Objekttitel" => "",
"Werktitel" => "",
"Werktitel deskriptiv" => "",
// Scientific names
"Science" => "Science",
@@ -33,6 +36,13 @@ final class MDConcTitleTypes implements MDImporterConcordanceListInterface {
"mundartl" => "Dialect",
"mundartlich" => "Dialect",
// Professional jargon
'Professional' => 'Professional jargon',
// Sociolect
'Sociolect' => 'Sociolect',
'Soziolekt' => 'Sociolect',
];
/**
@@ -45,7 +55,8 @@ final class MDConcTitleTypes implements MDImporterConcordanceListInterface {
public static function getConcordanceTarget(string $input):string {
if (!isset(self::TITLE_TYPES[$input])) {
throw new MDImporterMissingConcordance("Unknown title type: " . $input);
MDImporterMissingConcordance::throw("title", $input);
return "Dialect"; // Return default in dry-run mode
}
return self::TITLE_TYPES[$input];