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

RO term
prov:Entity wfprov:Artifact owl:equivalentClass
prov:Agent wfprov:workflowEngine rdfs:subClassOf
prov:Plan wdesc:Workflow
prov:Bundle N/A no direct mapping
prov:used wfprov:usedInput rdfs:subPropertyOf
prov:wasAssociatedWith wfprov:wasEnactedBy rdfs:subPropertyOf
prov:wasInformedBy wfprov:wasPartOfWorkflowRun rdfs:subPropertyOf
prov:wasGeneratedBy wfprov:wasOutputFrom rdfs:subPropertyOf

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 and Wf-RO transformation service

The patterns below are extracted from the N3 rules of

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:
<> 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.