MD Store
Introduction[edit]
The MD Store is a triple store for medatada storage and management. It is part of the process for massive batch metadata update for eSciDoc objects.
Technologies[edit]
- The triple store technology is Jena SDB (TDB doesn't support transactions)
- eSciDoc: The MD Store uses eSciDoc security management (AA)
- It should be generic to enable other services to log in into MDstore
Interface[edit]
- The MD Store has a REST interface. Methods can be grouped in two groups, such as:
- CRUD-based methods
- Task-oriented methods (?)
- CRUD-based methods
- GET: retrieves the requested resource
- POST: create a new resource
- PUT: Updates a resource
- DELETE: Deletes a resource
- Task-oriented methods (to be discussed)
- checkOrigin - to check the difference between the properties graph in MD-Store and origin repository ?
- updateFromOrigin - to update the properties graph from the origin (input: single resource), shall it also try to e.g. delete a metadata graph in case when this is removed from the repository origin ?
- CQL-enabled (SPARQL enabled) - search ?
URL definition[edit]
Base URL[edit]
- Base-URL (proposal 1) - base URL of the core-service is appended with the URL of the new-service
<core-service-url>/md-store
e.g.
http://coreservice.mpdl.mpg.de/md-store
- Base-URL (proposal 2) - separate URL for the new service is provided (independently of the core-service URL)
<service-url>
e.g.
http://md-store.mpdl.mpg.de
Logically, there is the following difference:
- In Proposal 1, it is clear that the MD-store would be service bounded with the particular core-service
- vote for Proposal 1 --Natasa 11:20, 12 July 2010 (UTC)
- In proposal 2, the service may be considered as a single service for several different repositories
- even in this case it would be possible to have something like repository-specific service, such as (variant of proposal 2):
- pubman.mpdl.mpg.de/md-store
- img.mpdl.mpg.de/md-store
- etc..
- but other issues may appear e.g. no clear way to distinguish if these are part of same repository or not
- even in this case it would be possible to have something like repository-specific service, such as (variant of proposal 2):
Interface Methods URL[edit]
- For retrieval of the complete resource from the MD store (properties + all metadata record graphs)
<base-url>/<resource-id>
e.g.
<base-url>/escidoc:1234
- For all metadata records graph (NOTE: there can be several metadata records managed in the MD Store for a resource)
<base-url>/<resource-id>/md-records
e.g.
<base-url>/escidoc:1234/md-records
- For single metadata record graph
<base-url>/<resource-id>/md-records/md-record/<md-record-id>
e.g.
<base-url>/escidoc:1234/md-records/md-record/escidoc
- For properties graph
<base-url>/<resource-id>/properties
e.g.
<base-url>/escidoc:1234/properties
Data Model[edit]
- The MD Store defines 2 rdf graphs:
- Metadata graphs, where metadada triples are stored
- Property graphs with following properties:
- context-id
- public-status
- lock-status
- content-model-id
- last-modification-date
- created-by
- modified-by
- version-status
- component-id
- Note: the names of the properties are same as in eSciDoc core. However, in case when eSciDoc Core is not used, these may be set-up by the external system
Questions[edit]
- shall the interface methods understand the resource version-id?