[Gfoss] Corretta Interpretazione di un paio di campi della scheda metadati ISO19115
a.furieri a lqt.it
a.furieri a lqt.it
Ven 22 Feb 2013 11:12:31 CET
Giusto per aggiungere qualche ulteriore elemento di valutazione:
OGC sta discutendo proprio in questi giorni il nuovo standard
GeoPackage, che tra le altre cose si preoccupa anche di standardizzare
come vanno registrati i Matadati ISO all'interno di un DBMS (SQLite)
[1].
Ancora di tratta solo di un "candidate standard" [1], ma e' sicuramente
interessante prendere in considerazione l'implementazione proposta.
[1] https://portal.opengeospatial.org/files/?artifact_id=51391
tutto ruota attorno a due sole tavole DBMS:
CREATE TABLE xml_metadata (
id INTEGER CONSTRAINT xm_pk PRIMARY KEY ASC
ON CONFLICT ROLLBACK AUTOINCREMENT NOT NULL UNIQUE,
md_scope TEXT NOT NULL DEFAULT 'dataset',
metadata_standard_URI TEXT NOT NULL
DEFAULT 'http://schemas.opengis.net/iso/19139/',
metadata BLOB NOT NULL DEFAULT (zeroblob(4))
)
CREATE TABLE metadata_reference (
reference_scope TEXT NOT NULL DEFAULT "table",
table_name TEXT NOT NULL DEFAULT "undefined",
column_name TEXT NOT NULL DEFAULT "undefined",
row_id_value INTEGER NOT NULL DEFAULT 0,
timestamp TEXT NOT NULL DEFAULT
(strftime('%Y-%m-%dT%H:%M:%fZ',CURRENT_TIMESTAMP)),
md_file_id INTEGER NOT NULL DEFAULT 0,
md_parent_id INTEGER NOT NULL DEFAULT 0,
CONSTRAINT crmr_mfi_fk FOREIGN KEY (md_file_id)
REFERENCES xml_metadata(id),
CONSTRAINT crmr_mpi_fk FOREIGN KEY (md_parent_id)
REFERENCES xml_metadata(id)
)
e' interessante notare come sia "md_file_id" che "md_parent_id"
assurgono addirittura al rango di Foreign Key (quindi hanno un
ruolo strutturale decisamente forte).
"md_scope" puo' essere uno qualsiasi tra:
undefined,fieldSession,collectionSession,series,dataset,
featureType,feature,attributeType,attribute,tile,model,
catalogue,schema,taxonomy,software,service,collectionHardware,
nonGeographicDataset,dimensionGroup
"reference_scope" puo' essere uno qualsiasi tra:
table,column,row,row/col
"table_name", "column_name" e "row_id_value" consentono di
stabilire i riferimenti relazionali con gli oggetti contenuti
nel DBMS, che possono essere indifferentemente di tipo Vector
ma anche Raster (aka tiles).
la struttura relazione proposta e' estremamente flessibile,
e puo' coprire efficacemente tutti i possibile casi d'uso.
- piu' tavole possono fare riferimento ad un medesimo Metadato
- un Metadato puo' essere associato ad un'intera tavola; ma
e' anche possibile definire un Metadato per una singola
colonna/attributo
- una singola riga/entita' puo' avere associato un suo Metadato
specifico (ovviamente, vale anche per gruppi di righe selezionate).
- infine, addirittura un singolo valore-attributo riga/colonna puo'
avere un proprio specifico Metadato.
---------------------------------------------
venendo alla vexatissima queastio:
"md_file_id"
value for the metadata to which this metadata_reference applies
"md_parent_id"
value for the hierarchical parent metadata for the metadata to
which this metadata_reference applies
Every GeoPackage metadata_reference table that contains any rows
shall contain at least one row record with an md_parent_id value
of 0 that references the ‘undefined’ xml_metadata row record as
defined by the SQL in table 51. Such record(s) establish the
metadata reference to the “root” of a metadata hierarchy.
---------------------------------------------
chi fosse eventualmente intressato ad approfondire, nell'Annex C
della specifica GeoPackage e' presente una serie di esempi molto
chiari e decisamente illuminanti sui corretti criteri da adottare
per rappresentare la struttura gerarchica dei Metadati.
concludendo: almeno secondo l'interpretazione OGC-GeoPackage non
esiste alcun dubbio possibile.
A) i metadati formano una catena gerarchica parent-child; tutte
le catene devono obbligatioramente iniziare con un elemento
"root" che si riconosce perche' punta ad un parent con ID=0
B) assolutamente nulla lascia trapelare l'eventualita' che
"parent" possa essere utilizzato per gestire il versioning;
viceversa e' di cristallina chiarezza che deve servire
esclusivamente per rappresentare le catene gerarchiche
parent-child
C) secondo questa interpretazione, dichiare il medesimo valore
per "md_file_id" e "md_parent_id" causa una sorta di loop
infinito durante la fase di ricostruzione della catena :-D
il valore convenzionale atteso per verificare di essere
effettivamente giunti alla root (nodo iniziale) di una
catena e' sempre e solo ZERO
ciao Sandro
--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.
Maggiori informazioni sulla lista
Gfoss