Child pages
  • OKI_OSID_Features
Skip to end of metadata
Go to start of metadata

Introduction

The OKI Open Service Interface Definitions (OSIDs) provide an interface or boundary between service providers and consuming applications. We are interested mainly in the Asset and Repository OSIDs, although other OSIDs will figure in as well.

  • Brief description
    From the website: "The OSIDs define important components of a SOA as they provide general software contracts between service consumers and service providers. This enables applications to be constructed independently of any particular service environment, and eases integration. The OSIDs enable choice of end-user tools by providing plugin interoperability."
  • Sites running the software
    There are several implementations of the Repository OSID available at Sourceforge. These include implementations against Lionshare, the Resource Discovery Network (RDN), the National Library of Australia (OAI) and the Museum of Fine Arts, Boston (MFA).

Technology

Java and PHP bindings are available, and Objective C and C# bindings are expected to be available soon.

Data model

A Repository Manager may contain several Repositories, but Repositories may not contain other Repositories.
Repositories contain Assets.
Assets may contain other Assets.
Repositories and Assets have Types.
An Asset may have Content.
Content may have Structure.
An Asset may contain Records.
Records may contain Parts.
Parts may contain Parts
Records and Parts have Structures.

(Records can be used to store metadata, with associated Structures encoding schemas.)

Features

Storage

Add data

Objects are created with the Repository's createAsset() method. Persistent identification is handled through the Id OSID.

Access data

The Repository's getAsset() method is used to access data. Assets have a variety of get methods to access Content, Structures, Records, Parts and PartValues as well as Description, Effective and Expiration Dates and Display Name.

Remove data

Objects are removed with the Repository's deleteAsset() method.

Manage metadata

Metadata elements are implemented as Parts and can be modified using the Part's updateValue() method.

Aggregation

Create aggregation

Aggregations or collections can be realized as Assets which contain other Assets. You can create a collection in a Repository using the Repository's createAsset() method.

Remove aggregation

An aggregation can be removed by using the deleteAsset() method on the appropriate aggregation asset.

Change aggregation membership

Assets can be added to another Asset using the addAsset() method and removed using the removeAsset() method. Removing the Asset from the collection does not remove it from the Repository.

Find aggregation members

You can use the getAssets() method on the collection Asset to iterate over all assets in an aggregation.

Management

Because of the factoring of services in OKI, these aspects of repository management would be addressed either by other OSIDs, or would depend on the specific implementation.

Bulk ingest

Bulk export

Security

Because of the factoring of services in OKI, these aspects of repository management would be addressed either by other OSIDs, or would depend on the specific implementation.

Authentication

There are OKI OSIDs for Authentication and Authorization

Access control

User management

Policy management

Other

Because of the factoring of services in OKI, these aspects of repository management would be addressed either by other OSIDs, or would depend on the specific implementation. Versioning is included in the Repository OSID.

Locking

Virtual object representation

Transactions

There is an OsidTransactionManager OSID which supports committing and rolling back of transactions.

Versioning

The Repository method supportsVersioning() indicates whether the repository implements Repository methods getAssetsDates() and getAssetByDate(). Versions are identified by the Asset's Id together with a timestamp.
There does not appear to be a deleteAsset() method with fine enough control to delete selected old versions of an object. Older versions may be accessed with the Repository method getAssetByDate().

Searching

There is a getAssetsBySearch() method which performs a search of a specified search type and returns all assets satisfying specified search criteria.

  • No labels