ARUP-CAS / aiscr-dapro

OAI-PMH Data Provider pro AMČR
https://api.aiscr.cz/
GNU General Public License v3.0
2 stars 0 forks source link

Dílčí opravy v syntaxi odpovědí #48

Closed motyc closed 1 year ago

motyc commented 4 years ago

Je třeba opravit některé drobné chyby v syntaxi odpovědí a namespace, jinak není API standardní a špatně se napojuje z vnějšku:

  1. DODĚLAT - všude opravit namespace oai_amcr a oai_rdf tak, aby končily "/" (tj. https://api.aiscr.cz/schema/oai_amcr/ a https://api.aiscr.cz/schema/oai_rdf/). Je to třeba jak v ListMetadataFormats, tak v ListRecords

  2. Nově řešeno v #63 - V <oai_amcr:amcr> se špatně (navíc) vypisuje xmlns="". To je třeba odstranit.

  3. ZRUŠENO - Attribut xmlns:oai_amcr="https://api.aiscr.cz/schema/oai_amcr" by měl být přímo v tagu <OAI-PMH>, nikoli opakovaně až u <oai_amcr:amcr>.

  4. ZRUŠENO - Atribut xsi:schemaLocation="https://api.aiscr.cz/schema/oai_amcr https://api.aiscr.cz/dapro/media/oai_amcr.xsd" je podle mne v tagu <oai_amcr:amcr> zcela nadbytečný, když je to definováno v rámci ListMetadataFormats a bude platit bod 5.

  5. HOTOVO - Adresy https://api.aiscr.cz/schema/oai_amcr/ a https://api.aiscr.cz/schema/oai_rdf/ by měly automaticky resolvovat xsd (tedy https://api.aiscr.cz/dapro/media/oai_rdf.xsd a https://api.aiscr.cz/dapro/media/oai_amcr.xsd).

  6. HOTOVO - Do <OAI-PMH> přidat definici namespace pro GML (xmlns:gml="http://www.opengis.net/gml/3.2").

  7. Nově řešeno v #63 - Vzhledem k úpravě podle bodu 2 (což bylo nestandardní řešení), je třeba k tagům vypisovaným podle schématu oai_amcr doplnit tento namespace (jako je tomu u samotného tagu amcr, nebo jako je to RDF verzi).

pbartosova commented 4 years ago

add 2) O jaký příkaz se jedná? např. v ListMetadataFormats je vše v pořádku. Prosím o u přesnění. Stejně tak pro 3 a 4.

motyc commented 4 years ago

Body 2-4 a 6 jsou jsou relevantní pro "ListRecords" a "GetRecord".

pbartosova commented 4 years ago
  1. done
  2. odstraněno z metadata_oai_amcr.xsl, ale pořád se vkládá.
  3. při odstranění z metadata_oai_amcr.xsl není xml validní a selhávají testy.
  4. pořešit až bude 5)
  5. MK
  6. done
motyc commented 4 years ago

Ad 2: image

pbartosova commented 4 years ago

Ano, já to vidim, ale potřebuji udělat někam poznámky.

motyc commented 4 years ago

Pardon, myslel jsem, že to nemůžete najít.

pbartosova commented 4 years ago

Na stávající odpovědi jsou zkoušela validátor : http://validator.oaipmh.com/ a vše bylo v pořádku, včetně tohoto prázdného "". Jak a kde způsobuje api uživatelům problémy, že je nevalidni?

motyc commented 4 years ago

Jenže validátor takovou chybu může těžko odhalit. Problém totiž není, ve vlastní syntaxi, ale v obsahu parametrů. Proto validátor nic neříká, přesto to při zpracování dělá problémy (stejný namespace je definován v rámci jednoho dokumentu vícekrát, resp. dokonce různě, protože prázdné xmlns se chápe jako příslušné k aktuálnímů elementu). Upozorněn jsem na to byl ze strany mezinárodních partnerů, kteří službu využívají. Problémy mi to samotnému dělalo, když jsem potřeboval udělat mapování XML na jinou ontologii pomocí nástroje 3M.

Ad "3 - při odstranění z metadata_oai_amcr.xsl není xml validní a selhávají testy." - to je zvláštní; není důvod, aby to bylo chybně, když stejným principem je definován gml namespace, resp. u něj definice chybí zatím úplně; spíš si myslím, že bude chyba někde v implementaci... Může to souviset s problémem č. 2, protože po odstranění tam zůstane jen prázdný atribut xmlns.

pbartosova commented 4 years ago

Problém je, že se pak není čeho chytnout. Zkoušela jsem asi 3 validátory přímo pro konkrétní odpovědi a nikdy žádná chyba nebyla. Způsobuje problém 2 i 3, nebo jenom ten prázdný string u 2.

motyc commented 4 years ago

Oboje. Namespace by v jednom dokumentu měl být definován jen jednou, ne pokaždé, když se vyskytne. Prázdný namespace pak vyvolává chyby při interpretaci XML. Na druhou stranu nemyslím, že je třeba řešit validátory, ale upravit to podle popisu. Vždyť jde jen o přidání/ubrání atributů. Moc nerozumím, kde vznikají ty obtíže...

pbartosova commented 4 years ago

Potíže vzniknou při automatických testech při deploy. Bude nutné je předělat, prosím ,abychom si ujasnili zadání. Zadejte požadovanou syntaxi k tomuto ukázkovému dotazu GetRecord. getRecord.txt

motyc commented 4 years ago

Mělo by to vypadat takto: getRecord_DN.txt

pbartosova commented 4 years ago

Ještě si musíme říci, jak to má vypadat u rdf. Tam je namespace také definovaný až v metadatech. Dívala jsem se na design a tam je logika taková, že tag je stejný pro všechny metadataPrefix. S tímto požadavkem je tedy nutné to celé předělat.

motyc commented 4 years ago

Tam to teď není podstatné, takže bych to odložil, v klidu se na to podíval a případně to vyřešíme později.

motyc commented 4 years ago
  1. Vzhledem k úpravě podle bodu 2 (což bylo nestandardní řešení), je třeba k tagům vypisovaným podle schématu oai_amcr doplnit tento namespace (jako je tomu u samotného tagu amcr, nebo jako je to RDF verzi). Tj. výsledek bude např.:

`

P-1341-900006 plocha 4 A 13-41-02 ... `
motyc commented 4 years ago

Body 3 a 4 zatím nechme být, pro aplikaci to problém není, resp. nejde o chybu.

motyc commented 4 years ago

Bod 1 - není sjednoceno všude, prosím dodělat v ListRecords a GetRecord: image image

pbartosova commented 4 years ago

Pro opravný release, který vyřeší #44 , #54 navrhuji revertovat commit, který řešil bod 2, tedy vrátit xmlns="". Tím se dostáváme zpátky do verze, která má platné všechny testy. A můžeme řešit 1,2 a 7 najednou. Release (v.1.2.0) je připraven na testu.

motyc commented 4 years ago

Dobře, udělejme to tak, ať mám na doladění klid.

motyc commented 3 years ago

Zbývá dořešit pouze bod 1, zbylé body řešeny jinde nebo hotovy.