Metadata

Due the fact in Lobotomy metadata are the core of every kind of data retrive, handling, sorting, visualization, they have to be accurately described. Given a number of attributes and properties assigned to each of them most of elaboration may be defined a priori, so to guarantee integrity in presentation and automatic manipulation with a reduced code base.

A metadata is a key to which a value may be assigned, and the pair "key, value" is attached to the item. Each possible key is formalized in a describtion, so upper layers know how to handle the value also without explicit intervent by the user or by the developer writing an application. Over the formal describtion, more attributes accompaign the metadata and are equal for all of them.

More in general, a metadata is so rappresented:

  • ID: a numeric unique identifier for the type of metadata, used internally to retrive it against an item ID
  • Name: a human-readable name, which may be show along the value
  • Type: the type of value the metadata convey
  • Value: the value the metadata assumes for the item to which is attached. This is the only field the user may edit
  • Date: the date in which the metadata was assigned and/or modified. This permits complex orthogonal elaboration against chronological informations collected by the system
  • Attributes: advanced optional properties for the metadata. They may be:
    • More Values: if the metadata accepts an array of values as value
    • Enum: list of values accepted by the metadata, if it has type = Enum
    • Min Value: minimum value accepted by the metadata, if the type is numeric
    • Max Value: maximum value accepted by the metadata, if the type is numeric

Types of values metadata can collect are:

  • String
  • Integer
  • Unsigned integer
  • Long long
  • Unsigned long long
  • Double
  • Boolean
  • Internal Reference, is an ID for another item
  • Enum, is a set of possible values
  • Date
  • Percentage

This is an incomplete list of metadata which may be attached to items, more will be added in time:

Name Description Type Extending Attributes
ID Unique identifier for the item Unsigned long long
Name The name assigned to the item, rappresents a viable way to present it String
Size Filesize, if it is a file Integer, expressed in bytes
Mimetype Mimetype of the item, if it is a file Enum/String? The list of mimetypes described by IANA
Creation Date The date the item have been created. This is intended to be an absolute value, carrying the effective date in which the content have been created on the original system Date
Appearing Date The date the item has appeared on the system. If the item has been created on the system, is equal to Creation Date Date
Modification Date List of dates in which the item have been opened, modified and closed Date More Values
Access Date List of dates in which the item have been opened and closed Date More Values
Change Date List of dates in which any metadata of the item have been changed Date More Values
Icon Icon which may be assigned to the specific item Internal Reference
MD5 MD5 hash of the contents String
Notes Freely editable notes by the user String
Tags Tags assigned to the item by the user String More Values
Group Freely editable name of the group of items in which this fit String More Values

Please note that, despite the fact some metadata is specific for particular mimetypes, every metadata may be attached to every item, without restrictions on the original file format. All values help retriving contents, and occasionally trasforming? it.