RO interoperability

Skip to end of metadata
Go to start of metadata

The purpose of this page is to analyze how the current RO model can be converted to other standards /vocabularies, or how other standards such as the W3C PROV-O can be converted to the RO model.

There is a related page ??Mapping RO Provenance to W3C PROV-O created for D4.2 M20. At the moment, we are aligning these two pages and people are advised not to use either of the page until this alignment is completed.

PROV-O to RO model (wfprov) mapping.

The rationale behind this decission is that Taverna is exporting provenance according to prov-o, and we want to have an equivalence between both vocabularies, in order to be able to incorpore them to our Research Objects

PROV-O Term
RO term
Mapping
prov:Activity
wfprov:ProcessRun
wfprov:WorkflowRun
owl:equivalentClass
rdfs:subClassOf
prov:Entity wfprov:Artifact owl:equivalentClass
prov:Agent wfprov:workflowEngine rdfs:subClassOf
prov:Plan wdesc:Workflow
wfdesc:Process
rdfs:subClassOf
rdfs:subClassOf
prov:Bundle N/A no direct mapping
prov:Role
wfdesc:Parameter
wfdesc:Input
wfdesc:Output
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
prov:used wfprov:usedInput rdfs:subPropertyOf
prov:wasAssociatedWith wfprov:wasEnactedBy rdfs:subPropertyOf
prov:wasInformedBy wfprov:wasPartOfWorkflowRun rdfs:subPropertyOf
prov:wasGeneratedBy wfprov:wasOutputFrom rdfs:subPropertyOf
prov:alternateOf

owl:sameAs (should hopefully point to RO resource) 

Common patterns for equivalences (created by Stian):

The patterns below assumes that PROV plans and roles have already been described as wfdesc - see https://github.com/wf4ever/scufl2-wfdesc and Wf-RO transformation service

The patterns below are extracted from the N3 rules of https://github.com/wf4ever/ro/tree/master/mapping/prov-o/

but can easily be rewritten to SPARQL CONSTRUCT ... WHERE ... queries.

Describing activities with plans->describing wfprov:ProcessRuns with wfdesc:Processes

{ ?activity a prov:Activity;
      prov:qualifiedAssociation [
          prov:hadPlan ?plan
      ] .
  ?plan a wfdesc:Process } =>
{ ?activity a wfprov:ProcessRun;
      wfprov:describedByProcess ?plan }  .

Describing activities with recipes-> wfprov:ProcessRuns with wfdesc:WorkflowRuns

{ ?activity a prov:Activity;
      prov:qualifiedAssociation [
          prov:hadPlan ?plan
      ] .
  ?plan a wfdesc:Workflow } =>
{ ?activity a wfprov:WorkflowRun;
   wfprov:describedByWorkflow ?plan } .

Transforming prov-o qualified usages to wfprov:usedInput + wfdesc:Parameters

{ ?activity a prov:Activity;
      prov:qualifiedUsage [
          prov:entity ?entity;
          prov:hadRole ?role
      ] .
      ?entity prov:alternateOf ?alias .
  ?role a wfdesc:Input } =>
{ ?alias a wfprov:Artifact ;
      wfprov:describedByParameter ?role .
  ?activity wfprov:usedInput ?alias } .
The above only works if PROV-O export from Taverna has saved the output to ?alias - for example:
<http://ns.taverna.org.uk/2011/data/6e96bfdc-7499-40af-a2db-f6c2f99bb271/ref/075d1537-a596-4a6b-bde2-fbb479ced5bd> a prov:Entity ;
	prov:alternateOf <Concept_set_parent/99.txt> ;

The PROV-O export does not currently expose intermediate values, hence those would also be lacking ?alias, and those are not included in the wfprov mapping.

Transforming prov-o qualified generations to wfprov:wasOutputFrom + wfdesc:Parameters

{ ?entity a prov:Entity;
      prov:alternateOf ?alias ;
      prov:qualifiedGeneration [
          prov:activity ?activity;
          prov:hadRole ?role
      ] .
  ?role a wfdesc:Output } =>
{ ?alias a wfprov:Artifact ;
      wfprov:wasOutputFrom ?activity ;
      wfprov:describedByParameter ?role } .
As in the previous note for Usage, this only works if PROV-O export has saved the output to ?alias.

Stating that a processRun is part of another ProcessRun

{ ?processRun a wfprov:ProcessRun ;
   prov:wasAssociatedWith ?workflowRun .
?workflowRun a wfprov:ProcessRun ;
   wfprov:describedByWorkflow ?workflow ;
    } =>
{ ?processRun wfprov:wasPartOfWorkflowRun ?workflowRun } .

WorkflowEngine extraction -

 quite taverna-prov specific which assumes that the engine must also have created the provenance container based on the workflow run

{ ?workflowRun a wfprov:ProcessRun ;
      wfprov:describedByWorkflow ?workflow .
  ?bundle a prov:Bundle;
      prov:wasGeneratedBy [
        prov:wasAssociatedWith ?workflowEngine;
        prov:wasInformedBy ?workflowRun ]
      } =>
{ ?workflowRun wfprov:wasEnactedBy ?workflowEngine .
  ?workflowEngine a wfprov:WorkflowEngine .
} .
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.