Open DanFluture275 opened 2 weeks ago
Tentative de recensement...
Légende :
AC
: gmd:accessConstraints
.OC
: gmd:otherConstraints
.UC
: gmd:useConstraints
.UL
: gmd:useLimitation
.OC == n
: test arithmétique sur le nombre d'occurrences d'OC (idem pour UL).-> AC + .. / UC + ..
: output généré, le slash indiquant différentes occurrences de gmd:resourceConstraints/gmd:MD_LegalConstraints
.??
: À creuser encore.[n]
: référence interne de pattern (colonne ref ticket), peut aussi être utilisé ici pour discuter des différents cas.Pour une occurrence de gmd:resourceConstraints/gmd:MD_LegalConstraints
donnée:
if AC & (UC | UL):
if AC != "otherRestrictions":
if UC != "otherRestrictions":
if OC == 0:
-> AC / UC + UL [1]
elif OC == 1:
if UL > 0: # including empty UL
-> AC + OC / UC + UL [2]
else:
-> error: ambiguous [3]
else:
-> error: ambiguous [4]
elif UC == "otherRestrictions":
if OC == 0:
if UL > 0:
-> AC / UC + UL [5]
else:
-> error: missing [6]
else:
-> AC / UC + OC + UL [7]
else: # no UC
if UL > 0:
-> AC / UC? + UL [8]
#TODO: if OC > 0?
elif AC == "otherRestrictions":
if UC != "otherRestrictions":
if OC == 0:
-> error: missing [9]
else:
-> AC + OC / UC + UL [10]
elif UC == "otherRestrictions":
if OC == 0:
-> error: missing [11]
elif OC == 1:
if UL == 0:
-> error: ambiguous [12]
elif UL == 1: # including empty UL
-> AC + OC / UC + UL [13]
else:
-> error: ambiguous [14]
else: # no UC
if UL == 0:
-> noop [15]
else:
if OC == 0:
-> AC / UC? + UL [16]
else:
-> ?? [21]
else: # no AC
if UC != "otherRestrictions":
-> noop [17]
elif UC == "otherRestrictions":
-> noop / missing? [18]
else: # no UC
-> ??? [19] [20]
Il me reste quelques cas à creuser, dont les cas où on a plusieurs occurrences d'AC/UC. Je mets ça là en attendant si jamais @alhyss. Contre-exemples welcome ;)
Plutôt que de faire des tables en markdown, j'ai fait le recensement ici : https://grist.numerique.gouv.fr/o/ecospheres/uLHMYMJTpTGf/XSLT/p/9
Quelques questions à acter :
Qu'est-ce qu'on fait dans des cas clairement invalides selon la spec mais qui ne posent pas de problème pour nous ? Par exemple : a) accessConstraints @codeListValue="copyright"
avec gmd:otherConstraints
associé ; b) accessConstraints @codeListValue="otherRestrictions"
sans gmd:otherConstraints
associé ; c) gmd:otherConstraints
sans accessConstraints
ni useConstraints
associé
Est-ce qu'on essaie de convertir les useLimitation
? Si oui, dans quel cas ?
useConstraints
associé.useConstraints @codeListValue=*
existant.useConstraints @codeListValue="otherRestrictions"
existant.useConstraints @codeListValue="otherRestrictions"
existant lorsqu'il n'y a pas de otherConstraints
associé.Que fait-on des éléments présents mais incomplets ? Par exemple (réels) : <useConstraints/>
; <gmd:useConstraints><gmd:MD_RestrictionCode codeList=... codeListValue=""/></gmd:useConstraints>
(codeListValue
vide) ?
MD_LegalConstraints
inutiles.MD_LegalConstraints
soit impacté. Par exemple : AC(OR) + OC-vide => AC(OR) sans OC rattaché => erreur potentielle (selon réponse à question 1).Est-ce qu'on applique la logique des questions précédentes à :
MD_LegalConstraints
qu'on modifierait de toutes façons.MD_LegalConstraints
d'un record qu'on modifierait de toutes façons.
Recommandation : https://ecospheres.gitbook.io/recommandations-iso-dcat/adaptation-des-metadonnees-iso-19139-pour-faciliter-la-transformation-en-dcat/separer-la-licence-des-conditions-dacces
Notes : https://pad.numerique.gouv.fr/j19t1NoYSc-jv7aeKc-yog?view#S%C3%A9parer-licence-et-conditions-d%E2%80%99acc%C3%A8s