This package contains the interfaces for a full-featured Metadata Catalog.
There are three fundamental concepts to understand the interfaces in this package.
-
Entry/Item: a record inside the catalog. An entry has:
- a key - a string that can contain a GUID, an LFN, ... It must be unique.
- a list of attributes - each one holding relevant information about the entry that can
be used within queries.
-
Attribute: an element to be associated with a schema. An attribute has:
- a name - a string that identifies the attribute within the catalog.
- a value - represented/encoded as a string.
- a type - a string indicating what kind of information is contained in the value, that can be used by the backend to decide how to store the values.
Attributes must be unique in that they can have one single type, even when belonging to different schemas
(to allow consistent queries on more than one schema).
-
Schema: a group of different attributes. Each entry/item in the catalog can be associated with one schema. A schema has:
- a name, which is a string that must be unique within the catalog.
- an attributeList, which contains all the attributes that belong to the schema.
The functionality is spread in three different interfaces.
MetadataBase
Two sets of operations are offered.
- Querying and setting values of attributes for individual entries/items in the catalog.
- Generic queries returning entry/item identifiers.
MetadataCatalog
The necessary operations for managing entries in the catalog. Includes functionality for creating and deleting items.
MetadataSchema
The necessary operations for handling schemas inside the catalog.
An implementation of a Metadata Catalog can choose not to have all the functionality defined in the three interfaces. A concrete example is a File Catalog that also wants to offer file metadata. Functionality for managing entries/items in the catalog is already provided as part of the File Catalog, so the MetadataCatalog interface described above is not needed. The MetadataBase interface would be enough to have POSIX xattrs functionality, and it could be extended with the MetadataSchema interface if desired.