There are a few ways we could do this. The referenced document presents the
manifest as XML, and we could just dump that XML into a single field in a
metadata table. That would be trivially interoperable, but may not be very
useful. At the other extreme, we could construct a set of tables and
relationships that closely resemble the UML in Figure 19 of the reference
document.
That chain-of-thought led me to ask what (and who) is the manifest for? Is any
of that content intended to be presented to the typical end-user, or is it
mainly intended for management systems?
In terms of a database implementation, we may not need much of it for any
software implementation, because the database tables may provide sufficient
information to allow access.
Is any metadata likely to be applicable to the composite package, and be
mandatory (e.g. security classification or releasability information)?
Brad
The requirements document talks about metadata in the form of a manifest, with
reference to ows:Manifest. For the avoidance of doubt, I'm assuming that
matches the content in OGC 06-121r9 version 2.0.0 Section 13.3.
There are a few ways we could do this. The referenced document presents the
manifest as XML, and we could just dump that XML into a single field in a
metadata table. That would be trivially interoperable, but may not be very
useful. At the other extreme, we could construct a set of tables and
relationships that closely resemble the UML in Figure 19 of the reference
document.
That chain-of-thought led me to ask what (and who) is the manifest for? Is any
of that content intended to be presented to the typical end-user, or is it
mainly intended for management systems?
In terms of a database implementation, we may not need much of it for any
software implementation, because the database tables may provide sufficient
information to allow access.
Is any metadata likely to be applicable to the composite package, and be
mandatory (e.g. security classification or releasability information)?
I recognise that there may be metadata requirements that aren't encompassed
within the database internal tables. In particular, I note the requirements
document refers to accuracy and lineage metadata, which wouldn't normally be
found in database-level metadata.
However if we aren't showing that information to the end user, then I'm
interested to know who it is for, so we can ensure that we get the right
information into the right place.
Brad
Using the Spatialite schemas as a strawman implementation, the master,
geometry_columns, and spatial_ref_sys tables provide the database
metadata required to maintain integrity. We can do whatever we want
here, but I don't want to reinvent the wheel if not necessary.
A manifest would allow a consuming system to answer the following questions:
1. Is this file an OGC Geopackage? In other words, is there a
manifest in the ows_manifest table?
2. What vector layers does it have? This would include title,
abstract, and any other metadata (e.g. ISO 19115/19139) the producer
has provided to allow the consumer to determine whether it is likely
to contain pertinent information.
3. What f_table_name corresponds to this layer? This would provide
the mapping from the logical to the physical.
IMHO it is reasonable to keep the answers to these questions in an XML
block as per ows-manifest as opposed to creating a (somewhat complex)
table structure to handle it all.
-Jeff