A Generic Container for Data Transport both inside and between applications
The main purpose of the Data Box (formally dtbx:Databox) is to create a comprehensive vehicle for data transport. The data box is ment to be complete, i.e. it can always be returned as the result of a function call or method invokation or be transported as a self contained unit in messages or in service responses.
The Data Box has an envelope with the following optional attributes attached:
- dtbx:typeId - URI specifying datatype,
- dtbx:itemId - URI specifying the identity of the actual data,
- dtbx:data - the actual data contained (could be a simple datum or gigabytes),
- dtbx:metaInfo - RDF description of the data,
- dtbx:reason - structured reason describing why attempted data retrieval failed,
- dtbx:signature - electronic signature when required,
where dtbx: is a URI qualifier for http://www.metaagility.com/schemata/databox#
At least one of the dtbx:data and dtbx:reason attribute has to be defined. However, they are mutually exclusive.
In the generic form the dtbx:typeId can belong to any relevant URI namespace, but specialisation through subclassing may restrict the URI to particular namespaces such as the XML datatype schema or MIME types.
Similarly the dtbx:itemId may belong to any relevant URI namespace, but may be made more restricted through subclass specialisation.
The dtbx:data attributes specifies the value of the data, but if the dtbx:typeId indicates a reference, then the value tells where data might be found.
Implementation
Language dependent, but in perl a hash will do.
Sources of Inspiration
- ChValue
- Reason
- HTTP response in HTTP perl packet
- Alternative to explicit exception handling (neither status test nor catch)
- XPAD signal concept