LIBCAS / ARCLib

ARCLib – komplexní řešení pro dlouhodobou archivaci digitálních (knihovních) sbírek
GNU General Public License v3.0
4 stars 1 forks source link

Extrakce popisných metadat a jejich validace #68

Open kerschfilip opened 4 years ago

kerschfilip commented 4 years ago

Dobrý den Při procházení funkčních požadavků k ARCLib jsem narazil na bod „extrakce popisných metadat a jejich validace“. ARCLib korektně extrahuje popisné informace z XML podle specifikace v SIP profilu, ale vzniklé ARCLib AIP XML validuje jen podle schémat METS, ARCLIB_XSD a PREMIS. Tato vlastnost je uvedena také na wiki a funguje bez problému. Znamená to ale, že AIP XML není validováno proti schématům pro popisná metadata běžně používaná v SIP – Dublin Core a MODS. Z funkčních požadavků v zadávací dokumentaci jsem pochopil, že validace popisných metadat by měla při ingestu proběhnout a nevím tedy, zda by nebylo vhodné mezi XML schémata pro validaci zařadit i DC a MODS. Případně prosím ostatní, aby se vyjádřili, zda o tuto funkcionalitu stojí. Děkuji.

ZdenekVasek commented 4 years ago

Dobrý den, z mého pohledu jde o otázku, kterou nejde příliš jednoduše rozhodnout, ale za sebe se kloním ke stanovisku, že je to není nutná funkce. U obou standardů lze validovat obecný způsob zápisu, což ale bude jen formální a poskytne pouze základní ujištění. nebo se lze zaměřit na obsah, ale v takovém případě bude potřeba vytvořit velké množství validačních schémat podle typů obsahu a producentů (nebude to nekonečné množství, ale i tak by jich bylo hodně). Nicméně tahle debata by mohla vést spíše k obecnému požadavku, aby bylo možné do systému přidat libovolné XSD a podle něho validovat vybrané AIP. Tím by v případě potřeby bylo možné naplnit i požadavek na validaci MODS etc.

kerschfilip commented 4 years ago

Děkuji za reakci. Souhlasím, že se nejedná o nejpodstatnější funkci, chtěl jsem především upozornit na tuto nesrovnalost oproti původním funkčním požadavkům zadávací dokumentace. Je pravda, že validace obecného způsobu zápisu by poskytla jen základní ujištění, že popisná metadata nejsou v nepořádku, ale nevím, zda by přece jen nestálo za to zařadit validaci obecného zápisu například DC, vzhledem k tomu, že se v ARCLib potom využívá k vyhledávání AIP.

Možnost přidat do systému libovolné XSD by mohla být elegantním způsobem, jak možnost validace pro uživatele jednoduše vyřešit (a splnit i funkční požadavek). V současnosti je možné validovat XML soubory v SIP při ingestu skrze Validační Profil (pravidlo <validationSchemaCheck>), ale bohužel se mi nepovedlo takto pomocí profilu zkontrolovat hlavní mets proti XSD DC - ingest selže při chybě:

org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 279; cvc-elt.1: Cannot find the declaration of element 'mets:mets'.

ZdenekVasek commented 4 years ago

Myslím, že toto téma bychom mohli směřovat k uzavření. Mám za to, že jsme ho probrali ústně na posledních 2 setkáních, ale do zápisu neproniklo, tak mne porsím opravte. Shoda byla v tom,že systémová validace MODS by nebyla jednoduše proveditelná. A není asi ani zcela nutná. U DC platí něco podobného, snad jen, že by ji bylo možné implementovat o něco snadněji. Nejsem si ale jist, zda jsme dospěli i k závěru ohledně možnosti implementace libovolného XSD pro validace. Prosím o reakci, zda je to přijatelné nebo ne. V příadě negativní odpovědi bychom měli otázku zítra otevřít a rozhodnout v plénu. V každém případě jsou myslím varianty jasné a lze rozhodnout.

yantom commented 4 years ago

Bude provedena oprava zmíněné chyby: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 279; cvc-elt.1: Cannot find the declaration of element 'mets:mets'.

yantom commented 3 years ago

Zmíněná chyba byla opravena, viz http://inqooltest-arclib.libj.cas.cz/ingest-workflows/ARCLIB_000002519

kerschfilip commented 3 years ago

Bohužel se mi nepodařilo opravu ověřit, v mém pokusu konči ingest stále chybou:

couldn't execute activity <serviceTask id="validator" ...>: ARCLib incident: Ingest workflow internal runtime exception: validationSchemaCheck rule - XML schema validation failed. Details: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 203; cvc-elt.1.a: Cannot find the declaration of element 'mets:mets'.. More details (whole XML) can be found in application log.

Prosím o radu, @yantom , zda není chyba na mé straně. Použil jsem validační profil FK_kontrola_archivniho_balicku_v3

yantom commented 3 years ago

Děkuji, problém tedy bude asi v tom že dřívě přiřazený Validační profil se změnil v čase. Zakládám na toto veřejně issue které máme interně již nějakou chvilku vedené: https://github.com/LIBCAS/ARCLib/issues/117 Stávající profil jsem zkopíroval a budeme se dále věnovat popsané chybě.

yantom commented 3 years ago

Problém je v tom že validationSchemaCheck funguje jinak než očekáváte - nelze do něj vložit XSD pro validaci vnitřní části dokumentu, mapovaný soubor je validovaný vúči schématu jako celek. Ve vašem případě by tedy bylo nutné vložit mets schéma a z něho odkazovat / do něj vložit DC schéma, např. takto: metsWithDcLink.txt

kerschfilip commented 3 years ago

Děkuji za vysvětlení. Vyzkoušel jsem tedy vložit balíček se záměrně špatným elementem v DC a pro validaci použil schéma, ze kterého je odkazováno na DC schéma pomocí xsd:import. Metadata v DC ale nejsou ARCLibem validována a to asi ani před/při jejich extrakci, ani v rámci sestavení AIP XML - do AIP se tak v mém pokusu dostal element <dc:d3scription>, což asi není úplně ideální

Chápu/dělám něco špatně? Nebo je to chyba? Díky :)

yantom commented 3 years ago

V odkazovaném balíku se element d3scription nachází v souboru data/NDK/aba007-0007yd/mets_aba007-0007yd.xml ale uvedený validační profil odkazuje na soubor data/mets.xml .

kerschfilip commented 3 years ago

Omlouvám se, vůbec jsem si toho nevšiml. Znovu jsem to vyzkoušel, tentokrát s odkazem na správný soubor a potvrzuji, že validace tak, jak je zmíněna zde funguje. Funkční požadavek označím za vyřešený

yantom commented 3 years ago

Děkuji. Příklad s validationSchemaCheck jsem vepsal do wiki validačních profilů. https://github.com/LIBCAS/ARCLib/wiki/Usage@Validation-profiles