Information Stored

The MetaRelate project references an information repository, which must be structured to the specifications detailed here.

These repositories store semi-structured information as RDF.

The structure of the RDF enables queries to be run on the contained data, using SPARQL1.1.

The information structure is extensible, the structure is not fixed, but this description represents a minimum set which is required for the current set of queries used in the mapping manager.

Editing is Adding

All editing of the information in the repository is additive. Any edits made in a branch which delete content will not be merged into the main repository.

Information structure

A Mapping is a uniquely identified resource, consisting of a source and a target and optionally a set of valuemaps, plus a collection of context metadata statements.

The ‘mr:source’, ‘mr:target’ and the ‘mr:valueMaps’ provide all the functional information about the Mapping resource.

All other statements made by the Mapping resource are contextual, providing information on validity and enabling contacts to be made to manage change effectively.

digraph records {

## basic setup 

   	rankdir = LR;
        node [
        fontsize = 32,
        shape = Mrecord
        ];

        edge [
        fontsize = 24
        ];

## class definitions


   	component [
	label = "<title> mr:Component ID(sha-1) |<type> rdf:type |<req> dc:requires *|<med> dc:mediator 0..1|<props> statements 1..*"
	];

        mediator [
	label = "<title> mr:Mediator label |<type> rdf:type|<label> rdf:label  "
	];

	valuemap [
	label = "<title> mr:ValueMap ID(sha-1) |<source> mr:source |<target> mr:target" 
	];

	getattr [
	label = "<title> mr:ScopedProperty | <scope> mr:scope |<val> mr:identifier"
	];

	literal [
	label = "<title> literal"
	];

	value [
	label = "<title> mr:Value ID(sha-1) |<o> mr:operator |<sub> mr:subject |<ob> mr:object"
	];

	mapping [
	label = "<title> mr:Mapping ID(sha-1) |<source> mr:source 0..1|<target> mr:target 0..1|mr:invertible 1| dc:replaces 0..1 |<valmap> mr:hasValueMap *|skos:note 0..1|dc:date 1|<c> dc:creator 1|<o> dc:rightsHolder *|<w> dc:contributor *|<dataAcc> dc:dateAccepted 0..1"
	];


	contact [
	label = "<title> skos:Concept contact | skos:inScheme| skos:prefLabel |skos:definition |dc:date"
	];


## relations


	mapping:source -> component:title

	mapping:target -> component:title

	component:props -> component:title

	component:med -> mediator:title
	component:req -> mediator:title

	mapping:valmap -> valuemap:title

	valuemap:source -> value:title
	valuemap:target -> value:title

	getattr:scope -> component:title

	mapping:c -> contact
	mapping:o -> contact
	mapping:w -> contact

	value:sub -> value:title
	value:ob -> value:title

	value:sub -> getattr:title
	value:ob -> getattr:title

	value:sub -> literal:title
	value:ob -> literal:title


}

State

A number of states and state changes are recognised for Mapping instances.

When a mapping is created it is a draft mapping. This may be updated by creating a new mapping which references the old Mapping resource using ‘dc:replaces’.

A mapping may be provided with a rights statement and a collection of rightsHolder organisations. The rights statement will be a metarelate statement regarding the quality of the information. Such a resource is then functionally frozen; only updates to the Mapping metadata, adding new contributors and rightsHolders, will be allowed unless all rightsHolders agree on the change.

A mapping may be deprecated by a new mapping with no source or target, which replaces the deprecated mapping.

digraph state {
## basic setup 

   	rankdir = LR;
        node [
        fontsize = 32,
        shape = Mrecord
        ];

        edge [
        fontsize = 24
        ];

## class definitions

	deprecated [
	label = "Deprecated|+ read only"
	];

        draft [
	label = "Draft|+ editable|+ contributor *"
	];

        approved [
	label = "Approved|+ read only|+ rightsHolder *|+ contributor *"
	];



## cluster

   	draft -> approved [
	arrowhead = "normal"
	label = contributor
	color = blue
	fontcolor = blue
	];

   	approved -> draft [
	arrowhead = "normal"
	label = rightsHolders
	color = red
	fontcolor = red
	];


   	draft -> deprecated [ 
	arrowhead = "normal"
	label = contributors
	color = blue
	fontcolor = blue
	];

   	approved -> deprecated [
	arrowhead = "normal"
	label = rightsHolders
	color = red
	fontcolor = red
	];
  
}