An extension to Open Metadata to support the notion of meta-meta-data.
Copyright, Change Process and Language is derived via inheritance as per RFC1.
It may sometimes be necessary to assign meta-data to meta-data itself; for example, the
group.list type represents a physical folder on disk with the suffix “.list”
- personal.list +-- firstname.string +-- lastname.string +-- age.int
Lists are naturally ordered, but how can we store this order on disk together with the datasets it may contain?
One way would be to introduce a header into each of the files.
firstname.string = r'Marcus\norder=0'
This could potentially be appropriate in many situations, but would in this case introduce possibility of conflicting ordering.
firstname.string = r'Marcus\norder=2' lastname.string = r'Ottosson\norder=2'
So an alternative may be to store this information in a specially formatted dataset pertaining to the information at hand.
- personal.list +-- __order__ +-- firstname.string +-- lastname.string +-- age.int
__order__ = r'firstname=0\nlastname=1\nage=2'
In code, meta-meta-data could then be retrieved as such:
>>> location = om.Location('/home/marcus') >>> firstname = location.read('/personal/firstname') >>> type(firstname) <type 'Dataset'> >>> firstname.order 0
Each meta-meta-data dataset or group MAY be accessible via dot-notation syntax by languages that support it and MUST otherwise be accessible via other means.
If a dataset is not included in
__order__ then a null value MUST be returned. If the host group does not contain a
__order__ meta-meta-data set then an error MUST be raised.
Meta-metadata MUST appear after the
value so that
value may be retrieved without regard to meta-metadata in a streaming fashion.