Information Description
This page is intended to give a brief overview of the classes identified in the information model. The current model was produced by
ChrisGreenhalgh following a brainstorm at IF-3, on 2003-02-11. For a diagram, and comments on issues to be clarified, see
MyGridInformationRepository.
This page is experimental. The advantage of using TWiki is that we can incorporate links to examples on other TWiki pages. A list of the classes in the information model and the relationships between them is intended to be browsed in multiple ways, rather than form a linear document.
This page is not yet complete (2003-02-20)
We are currently working on a revised design and implementation after the experience gained in IF4. Design notes can be found in
ChrisWroe - 30 Jun 2003
UserDescription has more information on how to describe a user.
--
ChrisWroe - 08 Sep 2003
See also
InformationModel for further work in this area.
NickSharman - 18 July 2003
Index
Entities
- Thing
- A Thing is the base entity in the information model. Things are divided into two broad categories: DataThing which are those things that we can store in a database, and ProxyThing which are those, such as users, where we can only store a proxy. These are exclusive subsets. A Thing can never be both a DataThing and a ProxyThing. The properties of Thing are:
- uri : java.net.URI
- all Things have a unique identifier (e.g. LSID)
- title : String
- description :String
- createdTime : String
- createdBy : User
- all Things are created by some User
- conceptType : java.net.URI
- comment : String
- The property comment is additional clarification information provided by the Thing's creator. There is a separate entity Annotation that is used to record third party information about any Thing.
- additionalMetaData : NameValuePair?[]
- DataThing
- DataThing represents all the entities that can be stored in a database. This includes domain entities, such as a protein sequence in the bioinformatics domain, and myGrid entities, reports, annotations, action definitions and notifications. The properties of DataThing in addition to those inherited from Thing are:
- value : byte [] - the actual report, annotation, protein sequence etc.
- concreteType : String
- format : String
- language : String
- versioned : Boolean
- baseURI : java.net.URI
- this was intended to be the version-independent part of e.g. an LSID URI, whereas uri in Thing is the full URI including any version suffix - cmg.
- version : Int
- replaced : boolean
- delible : boolean - able to be deleted
- deleted : boolean
- Place-holder - does it ever make sense to delete (or garbage collect) a (presumably large) value, but leave all the metadata in place for provenance purposes? If so, use this.
- origin : enum
- all DataThings come from somewhere. User might use a client to type in the value directly, or upload it. An action performed might create the DataThing as an interim or final output.
- originExternalUri : java.net.URI
- used for DataThings that come from outside myGrid
- originAction : ActionPerformed
- used for DataThings that come from actions recorded in myGrid
- originActionOutputName : String
- actions may produce multiple outputs, which can be distinguised by name
- ProxyThing
- ProxyThing represents all the entities where only a proxy of the actual thing can be included in a database. This includes: users, service/workflow invocations, experiments, organisations, grid resources.
- Annotation
- An Annotation can be attached to an Thing. The Annotation itself is a DataThing. In addition to the properties it inherits from DataThing, the Annotation has a subject property whose value is the Thing to which the Annotation refers.
- SingingAnnotation
- A SigningAnnotation is an Annotation with the additional properties: subjectHash and digitalSignature. This supports a degree of cryptographic authentication of the annotation and the state of the thing when it was annotated.
- User
- A User is a ProxyThing, that represents myGrid users. The properties of User in addition to those inherited from ProxyThing are:
- email : String
- userAgent : URL
- DN : String
- phone : String
- fax : String
- sms : String
As a
User is a
Thing, all
Users have a
createdBy relationship with another
User. The bootstrap will have to create a initial root
User
- WorkContext
- A WorkContext is the general facility for structuring work within myGrid. The subclasses of WorkContext include: Experiment, Organisation, Project, and (provisionally) Subscription.
- Experiment
- An Experiment is a WorkContext.
- Organisation
- An Organisation is a WorkContext.
- Project
- An Project is a WorkContext.
- Subscription
- An Subscription is a WorkContext.
- Notification
- An Notification is a DataThing. It has the additional property:
- Report
- A Report is a DataThing. Unlike an Annotation a Report does not have a specific subject.
- LabBookReport
- A LabBookReport is a Report.
- ProvenanceLog
- A ProvenanceLog is a Report.
- ActionProvenanceLog
- An ActionProvenanceLog is a ProvenanceLog.
- ActionDefinition
- A ActionDefinition is a DataThing. This could be the definition of how to invoke a web service, a web service with a specific interface style, such as soaplab, a grid service, or a workflow.
- WFDefinition
- A WFDefinition is a ActionDefinition. It includes the workflow source in WSFL.
- ActionPerformed
- An ActionPerformed is a ProxyThing. It is the proxy for some action that was (or is being?) performed. Note that there is a distinction between the ActionPerformed and the ActionProvenanceLog which is a Report of what happenend.
- WFInstance
- A WFInstance is a ActionPerformed. It includes a nativeURI property, which is the unique identifier given to the workflow instance by the workflow enactment engine.
- Input
- An Input is not a Thing. It is a description of the fact that a DataThing was an input to an ActionPerformed. A separate record is needed as the same DataThing may be input to several ActionPerformed, for example when running a new version of a WFDefinition with the same inputs. An Input has an inputName property that identifies the parameter name of the ActionPerformed.
(It is possible for the same
DataThing to be passed to an
ActionPerformed as the value of more than one distinct parameter.)
- GridResource
- An GridResource is a ProxyThing.
- an GridResource has a property nativeURI : URI
- This is the URI of the resource itself. The GridResource will also have a property uri from Thing, but this will be the uri of the proxy within myGrid rather than the GridResource itself.
- There will also be a disctinction between the actual owner/creator of the external resource, and the myGrid user who created the proxy
- Service
- An Service is a GridResource.
- ServiceDescription
- A ServiceDescription is a DataThing.
Also see
ServiceDescription.
--
ChrisWroe - 21 Feb 2003
Relationships
- subject
- A Thing is subject of an Annotation
- createdBy
- A Thing is createdBy a User
- createdIn
- 0 or more Things are createdIn a WorkContext
- involvedIn
- 0 or more Things are involvedIn a WorkContext
- partOf
- 0 or more WorkContexts can be partOf of 0 or more WorkContexts
- definedBy
- A ActionPerformed is definedBy a ActionDefinition
- definedBy
- A WFInstance is definedBy a WFDefinition
- describedBy
- A Experiment is describedBy a ActionProvenanceLog
- describedBy
- A ActionPerformed is describedBy a ActionDefinition
- describedBy
- A Service is describedBy a ServiceDescription
- performedBy
- A ActionPerformed is performedBy a Service
- originAction
- A DataThing may have originAction a ActionPerformed, that is the DataThing is an output of the ActionPerformed
- Input
- An ActionPerformed may have (hasInput) 0 or more Input, which have dataThing a DataThing
- subscription
- A Notification has subscription a Subscription
--
MarkGreenwood - 19 Feb 2003