LIBCAS / DL4DH-TEI-Converter

DL4DH TEI Converter
0 stars 0 forks source link

TEI Header - Špecifikácia #4

Open psekan opened 3 years ago

psekan commented 3 years ago

V nadväznosti na issue LIBCAS/DL4DH-TEI-Converter#2 je potrebné definovať, aký obsah má mať element teiHeader a odkiaľ majú byť čerpané dáta do jeho podčastí. Momentálne má element nasledujúcu štruktúru:

  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>${title}</title>
        <author>
          <orgName>${orgName}</orgName>
          <persName>${persName}</persName>
          <idno type="mods:nameIdentifier">${nameIdentifier}</idno>
        </author>
      </titleStmt>
      <extent>${extent}</extent>
      <publicationStmt>
        <publisher>${publisher}</publisher>
        <pubPlace>${place}</pubPlace>
        <date>${date}</date>
{for identifiers as type => value}
        <idno type="mods:${type}">${value}</idno>
{/for}
        <availability>
          <licence resp="#NameTag">CC BY-NC-SA</licence>
        </availability>
        <availability>
          <licence resp="#UDPipe">CC BY-NC-SA</licence>
        </availability>
      </publicationStmt>
      <sourceDesc>
        <bibl/>
      </sourceDesc>
    </fileDesc>
    <profileDesc>
      <textClass>
        <classCode scheme="https://ufal.mff.cuni.cz/nametag/2/models">
          <interpGrp>
...
          </interpGrp>
        </classCode>
      </textClass>
      <langUsage>
        <language ident="${lang}">${lang}</language>
      </langUsage>
    </profileDesc>
  </teiHeader>

Obsah elementu interpGrp je fixný podľa ukážky TEI od @daliboris v LIBCAS/DL4DH-TEI-Converter#2 . Namiesto výrazov ${...} sa vkladajú príslušne hodnoty, ktoré sú momentálne vyťahované z formátu MODS. Tie sme dedukovali pomocou reverzného inžinierstva zo spomínanej ukážky nasledovne:

Výraz element z MODS formátu
title /mods/titleInfo/title
orgName /mods/name/namePart - vypĺňa sa len ak /mods/name[@type='corporate']
persName /mods/name/namePart - vypĺňa sa len ak /mods/name[not(@type='corporate')]
nameIdentifier /mods/name/nameIdentifier
extent /mods/physicalDescription/extent
publisher /mods/originInfo/publisher
place /mods/originInfo/place/placeTerm[@type='text']
date /mods/originInfo/dateIssued
identifiers vytiahnuté pole údajov z elementov /mods/identifier
lang /mods/language/languageTerm

Prosíme o potvrdenie, či:

bodnarIQ commented 3 years ago

Doplňujúci dotaz ohľadom elementu /mods/identifier

V MODS pre publikáciu s ID: uuid:319546a0-5a42-11eb-b4d1-005056827e51 - Protokol ... veřejné schůze bratrstva sv. Michala v Praze dne majú niektoré elementy identifikátorov atribút invalid="yes", inde naopak chýbajú. Podľa xsd špecifikácie MODS je ale default pre atribút invalid hodnota "yes", takže pokiaľ tento atribút chýba, nastaví sa na "yes".

Ukážka ```xml 1004407716 319546a0-5a42-11eb-b4d1-005056827e51 cnb000964752 cnb001503907 85591009 85001648 ```

Súdiac z toho, že atribút je definovaný iba s hodnotou "yes" sa domnievam, že to bolo myslené tak, že ak tam ten atribút nie je, tak bude default "no". Do Krameria+ sa ale tým pádom bude dostávať stále hodnota "yes". Neviem, či je to atribút, na ktorom nejak záleží, prípadne či sa bude nejak ďalej využívať, ale vnímam to ako možnú chybu pri vytváraní MODS metadát.

daliboris commented 3 years ago

Na stránce s dokumentací je tato poznámka:

If invalid="yes" is not present, the identifier is assumed to be valid. Do not use invalid="no."

Máte pravdu, že tomu neodpovídá definice v XSD, ale vycházejme raději z výše uvedené poznámky.

Myslím, že nevalidní identifikátory bychom do výstupu v TEI nemuseli zahrnovat.

bodnarIQ commented 3 years ago

V tom prípade by som navrhoval riešiť to úpravou defínice XSD pre naše potreby. XSD používame pre automatické generovanie tried a v jej momentálnej podobe vracia atribút invalid hodnotu "yes" v oboch prípadoch (aj ak je atribút definovaný s hodnotou "yes" , a aj ak atribút nie je v elemente definovaný)

daliboris commented 3 years ago

Souhlasím, z hlediska XSD bude mít nejblíže našemu záměru tato definice atributu:

   <xs:attribute name="invalid" use="optional">
    <xs:simpleType>
     <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="yes" />
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>

Doporučuju ale, abyste tuto úpravu původní XSD nějak automatizovali, např. pomocí XSLT, aby se na to při aktualizaci vašeho softwaru při přechodu na novější verzi MODS nezapomnělo.

daliboris commented 2 years ago

Do elementu <publicationStmt> je potřeba ještě doplnit element <availability>, který se bude vztahovat na celý text publikace.

Ukázka:

<availability status="free">
  <licence>[????není jasné, pod jakou licencí jsou volná díla zpřístupněna???]</licence>
</availability>

Hodnota atributu @status bude záležet na hodnotě elementu <dc:rights>

<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<dc:rights>policy:public</dc:rights>
</oai_dc:dc>

TEI definuje pro tento atribut hodnoty free, unknown a restricted.

Upřesňující informace by měla být také součástí elementu <licence>, ale to bude záležet nejspíš na jednotlivých knihovnách, tj. jakým způsobem licenci pro konkrétní text nastaví (pro ne/komerční použití ap.). Nevím, odkud tuto informaci přebírat.

sekanIQ commented 1 year ago

@daliboris prosíme o kontrolu, či je možné uvádzať tag availability aj bez licence, nakoľko zo vstupných metadát nie je možné zistiť informáciu o licencií.

Pokiaľ to bude takto možné, prenesieme dc:rights do tagu availability. Inak vynecháme tento návrh.

Pokiaľ budete chcieť aj iné údaje preniesť do TEI hlavičky, napíšte z akých metadát a aké.

daliboris commented 1 year ago
  • atribút ident elementu language má mať rovnakú hodnotu ako obsah daného elementu

atribut @ident má mít podobu identifikátoru jazyka podle standardu BCP 47 (viz dobrý přehled), obsahem elementu je označení jazyka "v lidské řeči", např.

<language ident="en-CA" usage="20">Canadian business English</language>

MODS používá asi pouze identifikátory:

    <mods:language>
      <mods:languageTerm authority="iso639-2b" type="code">cze</mods:languageTerm>
    </mods:language>

Navrhuju tedy vytvořit převodník mezi iso639-2b a BCP 47 + lidským označením jazyka (to, co se objevuje ve Feederu ve fasetě Jazyk

  • element fileDesc/sourceDesc/bibl má byť prázdny?

Součástí tohoto elementu mám být bibliografický záznam o předloze digitalizátu, tj. to, co se objevuje ve Feederu pod odkazem Citace, např. WEYR, FRANTIŠEK. Československé právo ústavní. V Praze: Melantrich, 1937. Dostupné také z: https://feeder.nkp.cz/uuid/uuid:c4f88690-3642-11e3-8d9d-005056827e51

Ideálně ale tak, aby jednotlivé části bibliografického záznamu byly označeny odpovídajícími elementy, tj. autor, titul, vydavatel, místo vydání ap. Tj. např. nějak takto:

<bibl>
     <author><surname>WEYR</surname>, <forename>FRANTIŠEK</forename></author>. <title>Československé právo ústavní.</title>. <pubPlace>V Praze</pubPlace>: <publisher>Melantrich</publisher>,
     <date>1937</date>. Dostupné také z: <ref target="https://feeder.nkp.cz/uuid/uuid:17d9a8c4-52a3-4437-afe1-41bf42c813bc">https://feeder.nkp.cz/uuid/uuid:17d9a8c4-52a3-4437-afe1-41bf42c813bc</ref>
 </bibl>