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

Popisy schemat #28

Closed motyc closed 5 years ago

motyc commented 5 years ago

Na dílčích místech se objevují odkazy na definice schemat, na kterých však nic není:

https://api.aiscr.cz/schema/oai_rdf https://api.aiscr.cz/dapro/media/oai_rdf.xsd

https://api.aiscr.cz/dapro/media/oai_amcr.xsd https://api.aiscr.cz/schema/oai_amcr

Kdy a co tam bude doplněno?

vbar commented 5 years ago

XSD soubory servíruje Tomcat, tj. teď jsou na https://api-test.aiscr.cz/dapro/media/oai_rdf.xsd a https://api-test.aiscr.cz/dapro/media/oai_amcr.xsd - patrně by bylo vhodné udělat ty odkazy dynamicky a správně... Na druhé straně https://api.aiscr.cz/schema/oai_rdf a https://api.aiscr.cz/schema/oai_amcr jsou schema namespacy, které by podle mě měly zůstat konstantní - proto se uvádějí ve xsi:schemaLocation, aby se k nim dalo najít schéma, ať už je jejich URL platné nebo ne... Můžeme na ně udělat redirect, ale dokud není nasazené dapro na produkci, https://api.aiscr.cz/dapro/media/oai_rdf.xsd stejně nebude fungovat...

motyc commented 5 years ago

Myslím, že definice https://api-test.aiscr.cz/dapro/media/oai_amcr.xsd je neúplná. Je třeba to dodělat.

vbar commented 5 years ago

Ano - a jak ji testuju, je nejen neúplná, ale i špatně...

motyc commented 5 years ago

V těchto elementech: <xsd:element name="odkaz" maxOccurs="1"> <xsd:element name="ext_odkaz" maxOccurs="1" type="oai_amcr:ExternalReferenceType"/> by nemělo být maxOccurs="1" (jsou to 1:N vazby).

Není mi také úplně jasné, proč někde je definováno minOccurs="0" a jinde ne.

vbar commented 5 years ago

V těchto deklaracích maxOccurs výskyt elementů odkaz a ext_odkaz ve skutečnosti neomezuje, protože se nacházejí uvnitř <xsd:choice maxOccurs="unbounded">, tj. dají se vybrat opakovaně - fakticky je jedno je-li v nich maxOccurs (a minOccurs) uvedeno nebo ne. maxOccurs tam zůstalo víceméně náhodou, když jsem to kopíroval...

minOccurs="0" je definováno pro volitelné elementy uvnitř <xsd:all>, kde je nezbytné, pokud je ten element skutečně volitelný - ale musím se přiznat že individuální elementy jsem dosud příliš nezkoumal, a deklaroval volitelné všechny kromě ident_cely. V tomto ohledu má to schéma určitě ještě prostor pro zpřesnění...

Další otázkou je zdali vůbec používat <xsd:choice maxOccurs="unbounded"> (který neumožňuje specifikovat povinné elementy) a <xsd:all> (ve kterém pro změnu nelze specifikovat elementy opakované) - chtěl jsem povolit výskyt všech elementů nezávisle na jejich pořadí, ale XML schema na to zjevně není úplně stavěné, a vede to k množícím se komplikacím - co soudíte o schematu vyžadujícím pevné pořadí elementů, tj. např. pro projekt první element ident_cely, za ním stav atd.?

motyc commented 5 years ago

Aha, to jsem nevěděl. Asi by to tedy bylo dobré vyčistit, ať to nemate.

Tak ono to pořadí elementů ve skutečnosti pevné je, nebo nikoli? Vzhledem k tomu, že vše vychází z toho exportu a měnit pořadí v nich nemá smysl, tak by to mělo být ok...

vbar commented 5 years ago

Ano, export generuje elementy v pevném pořadí. Přišlo mi to spíš jako implementační detail, ale koneckonců to můžeme zafixovat ve schematu - uživatelům těch dat to asi bude celkem jedno...

motyc commented 5 years ago

Souhlas.