--- a/ontology/examples/ontology-extensions/workflow/workflow.rdf Thu Nov 17 22:36:16 2011 +0000
+++ b/ontology/examples/ontology-extensions/workflow/workflow.rdf Fri Nov 18 16:45:13 2011 +0000
@@ -1,194 +1,152 @@
-<rdf:RDF
- xmlns:cnt="http://www.w3.org/2011/content#"
+
+<!-- Processed by Id: cwm.py,v 1.197 2007/12/13 15:38:39 syosi Exp -->
+<!-- using base file:///home/stain/stuff/src/provenance-wg/prov/ontology/examples/ontology-extensions/workflow/workflow.ttl-->
+
+
+<rdf:RDF xmlns="http://www.example.com/scientific-workflow#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:prov="http://www.w3.org/ns/prov-o/"
- xmlns:time="http://www.w3.org/2006/time#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:wf="http://www.example.com/scientific-workflow#"
- xmlns:run="http://www.example.com/run1#"
- xmlns:base="http://www.example.com/run1#"
- >
-
- <prov:Agent rdf:about="#aUser">
- <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
- <foaf:name>Stian Soiland-Reyes</foaf:name>
- </prov:Agent>
-
- <wf:WorkflowEngine rdf:about="#workflowEngine" />
-
- <wf:FileValue rdf:about="#inputFile">
- <wf:file>/tmp/myinput.txt</wf:file>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:FileValue>
-
- <wf:Value rdf:about="#input">
- <wf:wasReadFrom rdf:resource="#inputFile"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:Process rdf:about="#workflowRun">
- <prov:used>
- <wf:ValueAtPort>
- <wf:sawValue rdf:resource="#input"/>
- <wf:seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
- <prov:assumedRoleAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:assumedRoleAt>
- </wf:ValueAtPort>
- </prov:used>
- <wf:ranInWorkflowEngine rdf:resource="#workflowEngine"/>
- <wf:wasLaunchedBy rdf:resource="#aUser"/>
- <wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
- <prov:startedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:startedAt>
- <prov:endedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:endedAt>
- </wf:Process>
-
- <wf:Process rdf:about="#constant">
- <wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
- <wf:wasDefinedBy
- rdf:resource="http://www.example.com/workflow1#String_Constant"/>
- <prov:startedAt>
- <prov:Time rdf:about="#t0">
- <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:startedAt>
- <prov:endedAt rdf:resource="#t0" />
- </wf:Process>
-
- <wf:Value rdf:about="#hello">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <prov:wasGeneratedAt rdf:resource="#t0"/>
- <prov:endedAt rdf:resource="#t0" />
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:ValueAtPort rdf:about="#helloValue">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawEntity rdf:resource="#hello"/>
- </wf:ValueAtPort>
+ xmlns:time="http://www.w3.org/2006/time#"
+ xmlns:wf="http://www.example.com/scientific-workflow#">
- <wf:Process rdf:about="#combine">
- <prov:used>
- <wf:ValueAtPort>
- <wf:sawValue rdf:resource="#hello"/>
- <wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
- <prov:assumedRoleAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:assumedRoleAt>
- </wf:ValueAtPort>
- </prov:used>
- <prov:used>
- <wf:ValueAtPort>
- <wf:sawValue rdf:resource="#input"/>
- <wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
- <prov:assumedRoleAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:assumedRoleAt>
- </wf:ValueAtPort>
- </prov:used>
- <wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
- <wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
- <prov:startedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
- </prov:Time>
+ <Process rdf:about="#workflowRun">
+ <ranInWorkflowEngine>
+ <WorkflowEngine rdf:about="#workflowEngine" />
+ </ranInWorkflowEngine>
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
+ <wasLaunchedBy>
+ <prov:Agent rdf:about="#aUser">
+ <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
+ <foaf:name>Stian Soiland-Reyes</foaf:name>
+ </prov:Agent>
+ </wasLaunchedBy>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
</prov:startedAt>
- <prov:endedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
- </prov:Time>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
</prov:endedAt>
- </wf:Process>
-
- <wf:Value rdf:about="#combined">
- <prov:wasGeneratedBy rdf:resource="#combine"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue>
+ <Value rdf:about="#input">
+ <value>Steve</value>
+ <wasReadFrom>
+ <FileValue rdf:about="#inputFile">
+ <file>/tmp/myinput.txt</file>
+ <value>Steve</value>
+ </FileValue>
+ </wasReadFrom>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1FromWorkflow">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ <wf:sameValueAs rdf:resource="#sha1"/>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:Process rdf:about="#shasum">
- <prov:used rdf:resource="#combined"/>
- <wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
- <wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <Process rdf:about="#constant">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#String_Constant"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<prov:startedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
- </prov:Time>
+ <time:Instant rdf:about="#t0">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </time:Instant>
</prov:startedAt>
- <prov:endedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
- </prov:Time>
- </prov:endedAt>
- </wf:Process>
- <wf:Value rdf:about="#sha1">
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
+ <prov:endedAt rdf:resource="#t0"/>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue rdf:resource="http://www.example.com/workflow1#String_Constant_value"/>
+ <prov:hadQualifiedEntity>
+ <Value rdf:about="#hello">
+ <value>Hello, </value>
+ </Value>
+ </prov:hadQualifiedEntity>
+ <prov:hadTemporalValue rdf:resource="#t0"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:ValueAtPort rdf:about="#sha1OutputFromShasum">
- <prov:wasGeneratedBy rdf:resource="#shasum"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
- </wf:ValueAtPort>
+ <Process rdf:about="#combine">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:usedValue>
+ <prov:Usage>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
+ <prov:hadQualifiedEntity rdf:resource="#hello"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue rdf:resource="#input"/>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#combined">
+ <value>Hello, Steve</value>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:ValueAtPort rdf:about="#sha1OutputFromWorkflow">
- <prov:wasGeneratedBy rdf:resource="#workflowRun"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
- </wf:ValueAtPort>
+
+
+
+
+
+
+
+ <Process rdf:about="#shasum">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
</rdf:RDF>
--- a/ontology/examples/ontology-extensions/workflow/workflow.ttl Thu Nov 17 22:36:16 2011 +0000
+++ b/ontology/examples/ontology-extensions/workflow/workflow.ttl Fri Nov 18 16:45:13 2011 +0000
@@ -3,140 +3,96 @@
@prefix time: <http://www.w3.org/2006/time#> .
@prefix run: <http://www.example.com/run1#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-@prefix cnt: <http://www.w3.org/2011/content#> .
@prefix wf: <http://www.example.com/scientific-workflow#> .
+@base <http://example.com/aWorkflow> .
-:workflowEngine a wf:WorkflowEngine .
+:workflowEngine a wf:WorkflowEngine .
-:aUser a prov:Agent,
- foaf:Person;
+:aUser a prov:Agent, foaf:Person;
foaf:name "Stian Soiland-Reyes" .
-:inputFile a wf:FileValue;
+:inputFile a wf:FileValue;
wf:file "/tmp/myinput.txt";
- wf:value [
- a cnt:ContentAsText;
- cnt:characterEncoding "UTF-8";
- cnt:chars "Steve" ] .
+ wf:value "Steve" .
-:input a wf:Value;
- wf:value [
- a cnt:ContentAsText;
- cnt:characterEncoding "UTF-8";
- cnt:chars "Steve" ];
+:input a wf:Value;
+ wf:value "Steve" ;
wf:wasReadFrom :inputFile .
-:workflowRun a wf:Process;
+:workflowRun a wf:Process;
wf:ranInWorkflowEngine :workflowEngine;
wf:wasDefinedBy <http://www.example.com/workflow1#workflow>;
wf:wasLaunchedBy :aUser;
- prov:startedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:15Z" ];
- prov:endedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:23:32Z" ];
- prov:used [
- a wf:ValueAtPort;
+ prov:startedAt [ time:inDateTimeXSD "2011-10-21T09:20:15Z" ];
+ prov:endedAt [ time:inDateTimeXSD "2011-10-21T09:23:32Z" ];
+ wf:usedValue [ a prov:Usage ;
wf:sawValue :input;
wf:seenAtPort <http://www.example.com/workflow1#inName>;
- prov:assumedRoleAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:21:31Z" ]
- ] .
+ prov:hadTemporalValue [ time:inDateTimeXSD "2011-10-21T09:21:31Z" ]
+ ] ;
+ wf:generatedValue [ a prov:Generation ;
+ wf:sawValue :sha1FromWorkflow ;
+ wf:wasSeenAt <http://www.example.com/workflow1#sha1>;
+ ] .
-:t0 a prov:Time;
+:t0 a time:Instant;
time:inDateTimeXSD "2011-10-21T09:20:15Z" .
-:constant a wf:Process;
- <endedAt> :t0;
- wf:wasDefinedBy <http://www.example.com/workflow1#String_Constant>;
- wf:wasSubProcessExecutionOf :workflowRun;
- prov:startedAt :t0 .
-:hello a wf:Value;
- wf:value [
- a cnt:ContentAsText;
- cnt:chars "Hello, " ];
+:constant a wf:Process;
+ wf:wasDefinedBy <http://www.example.com/workflow1#String_Constant> ;
+ wf:wasSubProcessExecutionOf :workflowRun ;
+ prov:startedAt :t0 ;
prov:endedAt :t0;
- prov:wasGeneratedAt :t0;
- prov:wasGeneratedBy :constant .
+ wf:generatedValue [ a prov:Generation ;
+ prov:hadQualifiedEntity :hello ;
+ prov:hadTemporalValue :t0 ;
+ wf:sawValue <http://www.example.com/workflow1#String_Constant_value>
+ ] .
-:helloValue a wf:ValueAtPort;
- wf:sawEntity :hello;
- wf:value [
- a cnt:ContentAsText;
- cnt:chars "Hello, " ];
- prov:wasGeneratedBy :constant .
+:hello a wf:Value;
+ wf:value "Hello, ".
-:combine a wf:Process;
+:combine a wf:Process;
wf:wasDefinedBy <http://www.example.com/workflow1#cat>;
wf:wasSubProcessExecutionOf :workflowRun;
- prov:endedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:25Z" ];
- prov:startedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:20Z" ];
- prov:used [
- a wf:ValueAtPort;
- wf:sawValue :hello;
+ prov:endedAt [ time:inDateTimeXSD "2011-10-21T09:20:25Z" ];
+ prov:startedAt [ time:inDateTimeXSD "2011-10-21T09:20:20Z" ];
+ wf:usedValue [ a prov:Usage ;
+ prov:hadQualifiedEntity :hello;
wf:seenAtPort <http://www.example.com/workflow1#catIn1>;
- prov:assumedRoleAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:21Z" ]
- ], [
- a wf:ValueAtPort;
+ prov:hadTemporalValue [ time:inDateTimeXSD "2011-10-21T09:20:21Z" ]
+ ], [ a prov:Usage ;
wf:sawValue :input;
wf:seenAtPort <http://www.example.com/workflow1#catIn2>;
- prov:assumedRoleAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:23Z" ]
- ] .
+ prov:hadTemporalValue [ time:inDateTimeXSD "2011-10-21T09:20:23Z" ]
+ ] ;
+ wf:generatedValue [ a prov:Generation ;
+ wf:sawValue :combined ;
+ wf:seenAtPort <http://www.example.com/workflow1#catOut>;
+ ] .
-:combined a wf:Value;
- wf:value [
- a cnt:ContentAsText;
- cnt:chars "Hello, Steve" ];
- prov:wasGeneratedBy :combine .
+:combined a wf:Value;
+ wf:value "Hello, Steve".
-:shasum a wf:Process;
+:shasum a wf:Process;
wf:wasDefinedBy <http://www.example.com/workflow1#shasum>;
wf:wasSubProcessExecutionOf :workflowRun;
- prov:startedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:20:30Z" ];
- prov:endedAt [
- a prov:Time;
- time:inDateTimeXSD "2011-10-21T09:21:00Z" ];
- prov:used :combined .
-
-
-:sha1 a wf:Value;
- wf:value [
- a cnt:ContentAsText;
- cnt:characterEncoding "UTF-8";
- cnt:chars "a33d1fb1658d4fbf017de59ab67437a3eb5ff50d" ] .
+ prov:startedAt [ time:inDateTimeXSD "2011-10-21T09:20:30Z" ];
+ prov:endedAt [ time:inDateTimeXSD "2011-10-21T09:21:00Z" ];
+ wf:generatedValue [ a prov:Generation ;
+ wf:sawValue :sha1;
+ wf:wasSeenAt <http://www.example.com/workflow1#shaOut>;
+ ] .
-:sha1OutputFromShasum a wf:ValueAtPort;
- wf:sawValue :sha1;
- wf:value [
- a cnt:ContentAsText;
- cnt:characterEncoding "UTF-8";
- cnt:chars "a33d1fb1658d4fbf017de59ab67437a3eb5ff50d" ];
- wf:wasSeenAt <http://www.example.com/workflow1#shaOut>;
- prov:wasGeneratedBy :shasum .
+:sha1 a wf:Value;
+ wf:value "a33d1fb1658d4fbf017de59ab67437a3eb5ff50d" .
-:sha1OutputFromWorkflow a wf:ValueAtPort;
- wf:sawValue :sha1;
- wf:value [
- a cnt:ContentAsText;
- cnt:characterEncoding "UTF-8";
- cnt:chars "a33d1fb1658d4fbf017de59ab67437a3eb5ff50d" ];
- wf:wasSeenAt <http://www.example.com/workflow1#sha1>;
- prov:wasGeneratedBy :workflowRun .
+:sha1FromWorkflow a wf:Value;
+ wf:value "a33d1fb1658d4fbf017de59ab67437a3eb5ff50d";
+ wf:sameValueAs :sha1 .
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/examples/ontology-extensions/workflow/workflowOntology.rdf Fri Nov 18 16:45:13 2011 +0000
@@ -0,0 +1,151 @@
+#Processed by Id: cwm.py,v 1.197 2007/12/13 15:38:39 syosi Exp
+ # using base file:///home/stain/stuff/src/provenance-wg/prov/ontology/examples/ontology-extensions/workflow/workflowOntology.ttl
+
+# Notation3 generation by
+# notation3.py,v 1.200 2007/12/11 21:18:08 syosi Exp
+
+# Base was: file:///home/stain/stuff/src/provenance-wg/prov/ontology/examples/ontology-extensions/workflow/workflowOntology.ttl
+ @prefix : <http://www.example.com/scientific-workflow#> .
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ <http://www.example.com/scientific-workflow> a owl:Ontology;
+ rdfs:comment """An example ontology for describing workflow
+ provenance.
+
+ Classes wf:ProcessDefinition, wf:Port, wf:Input, wf:Output and
+ properties wf:linksTo, wf:definesSubProcess, wf:definesInput,
+ wf:definesOutput allows the definition of an abstract dataflow structure.
+ The specialisation wf:Constant and wf:Command are examples of
+ workflow activities.
+
+ The rest of the ontology shows how to customize the PROV-O ontology
+ to form a more specific workflow provenance ontology -
+ with links back to the workflow definitions from processes, usage
+ and generation."""@en;
+ owl:imports <http://www.w3.org/ns/prov-o/> .
+
+ :Command a owl:Class;
+ rdfs:subClassOf :ProcessorDefinition .
+
+ :Constant a owl:Class;
+ rdfs:subClassOf :ProcessorDefinition .
+
+ :FileValue a owl:Class;
+ rdfs:subClassOf :Value,
+ <http://www.w3.org/ns/prov-o/Entity>;
+ owl:has_key (
+ :file
+ :value ) .
+
+ :Input a owl:Class;
+ rdfs:subClassOf :Port .
+
+ :Output a owl:Class;
+ rdfs:subClassOf :Port .
+
+ :Port a owl:Class .
+
+ :Process a owl:Class;
+ rdfs:subClassOf <http://www.w3.org/ns/prov-o/Agent>,
+ <http://www.w3.org/ns/prov-o/ProcessExecution> .
+
+ :ProcessDefinition a owl:Class;
+ rdfs:subClassOf <http://www.w3.org/ns/prov-o/Recipe> .
+
+ :Value a owl:Class;
+ rdfs:subClassOf <http://www.w3.org/ns/prov-o/Entity> .
+
+ :ValueAtPort a owl:Class;
+ rdfs:subClassOf <http://www.w3.org/ns/prov-o/QualifiedInvolvement> .
+
+ :WorkflowEngine a owl:Class;
+ rdfs:subClassOf <http://www.w3.org/ns/prov-o/Agent> .
+
+ :command a owl:DatatypeProperty;
+ rdfs:domain :Command .
+
+ :constant a owl:DatatypeProperty;
+ rdfs:domain :Command .
+
+ :definesInput a owl:ObjectProperty;
+ rdf:domain :Input;
+ rdfs:range :ProcessDefinition .
+
+ :definesOutput a owl:ObjectProperty;
+ rdf:domain :Output;
+ rdfs:range :ProcessDefinition .
+
+ :definesSubProcess a owl:ObjectProperty;
+ rdf:domain :ProcessDefinition;
+ rdfs:range :ProcessDefinition .
+
+ :file a owl:DatatypeProperty;
+ rdfs:domain :FileValue .
+
+ :generatedValue a owl:ObjectProperty;
+ rdfs:domain :Process;
+ rdfs:range :ValueAtPort;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/hadQualifiedGeneration> .
+
+ :linksTo a owl:ObjectProperty;
+ rdfs:domain :Output;
+ rdfs:range :Input .
+
+ :ranInWorkflowEngine a owl:ObjectProperty;
+ rdfs:domain :Process;
+ rdfs:range :WorkflowEngine;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/wasControlledBy> .
+
+ :sameValueAs a owl:ObjectProperty;
+ rdfs:domain :Value;
+ rdfs:range :Value;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/wasComplementOf>,
+ <http://www.w3.org/ns/prov-o/wasDerivedFrom> .
+
+ :sawValue a owl:FunctionalProperty,
+ owl:ObjectProperty;
+ rdfs:domain :ValueAtPort;
+ rdfs:range :Value;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/hadQualifiedEntity>;
+ <http://www.w3.org/ns/prov-o/minCardinality> 1 .
+
+ :seenAtPort a owl:ObjectProperty;
+ rdfs:domain :ValueAtPort;
+ rdfs:range :Port;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/hadRole>;
+ <http://www.w3.org/ns/prov-o/minCardinality> 1 .
+
+ :usedValue a owl:ObjectProperty;
+ rdfs:domain :Process;
+ rdfs:range :ValueAtPort;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/hadQualifiedUsage> .
+
+ :value a owl:DatatypeProperty,
+ owl:FunctionalProperty;
+ rdfs:domain :Value;
+ rdfs:subPropertyOf rdf:value .
+
+ :wasDefinedBy a owl:FunctionalProperty,
+ owl:ObjectProperty;
+ rdfs:domain :ProcessDefinition;
+ rdfs:range :Process;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/hadRecipe> .
+
+ :wasLaunchedBy a owl:ObjectProperty;
+ rdfs:domain :Process;
+ rdfs:range <http://www.w3.org/ns/prov-o/Agent>;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/wasControlledBy> .
+
+ :wasReadFrom a owl:ObjectProperty;
+ rdfs:domain :Value;
+ rdfs:range :FileValue;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/wasDerivedFrom> .
+
+ :wasSubProcessExecutionOf a owl:ObjectProperty;
+ rdfs:domain :Process;
+ rdfs:range :Process;
+ rdfs:subPropertyOf <http://www.w3.org/ns/prov-o/wasControlledBy> .
+
+#ENDS
--- a/ontology/examples/ontology-extensions/workflow/workflowOntology.ttl Thu Nov 17 22:36:16 2011 +0000
+++ b/ontology/examples/ontology-extensions/workflow/workflowOntology.ttl Fri Nov 18 16:45:13 2011 +0000
@@ -4,66 +4,105 @@
@prefix cnt: <http://www.w3.org/2011/content#> .
@prefix prov: <http://www.w3.org/ns/prov-o/> .
-# Not yet in the official OWL
-@prefix prov2: <http://www.w3.org/2011/prov/new#> .
# Domain-specific ontologies
@prefix wf: <http://www.example.com/scientific-workflow#> .
+<http://www.example.com/scientific-workflow> a owl:Ontology ;
+ rdfs:comment """An example ontology for describing workflow
+ provenance.
+
+ Classes wf:ProcessDefinition, wf:Port, wf:Input, wf:Output and
+ properties wf:linksTo, wf:definesSubProcess, wf:definesInput,
+ wf:definesOutput allows the definition of an abstract dataflow structure.
+ The specialisation wf:Constant and wf:Command are examples of
+ workflow activities.
+
+ The rest of the ontology shows how to customize the PROV-O ontology
+ to form a more specific workflow provenance ontology -
+ with links back to the workflow definitions from processes, usage
+ and generation."""@en ;
+ owl:imports <http://www.w3.org/ns/prov-o/> .
+
+
+wf:ProcessDefinition a owl:Class ;
+ rdfs:subClassOf prov:Recipe .
+
+wf:Port a owl:Class .
+wf:Input a owl:Class ;
+ rdfs:subClassOf wf:Port .
+wf:Output a owl:Class ;
+ rdfs:subClassOf wf:Port .
+
+wf:linksTo a owl:ObjectProperty ;
+ rdfs:domain wf:Output ;
+ rdfs:range wf:Input .
+
+wf:definesSubProcess a owl:ObjectProperty ;
+ rdfs:range wf:ProcessDefinition ;
+ rdf:domain wf:ProcessDefinition .
+
+wf:definesInput a owl:ObjectProperty ;
+ rdfs:range wf:ProcessDefinition ;
+ rdf:domain wf:Input .
+
+wf:definesOutput a owl:ObjectProperty ;
+ rdfs:range wf:ProcessDefinition ;
+ rdf:domain wf:Output .
+
+wf:Constant a owl:Class ;
+ rdfs:subClassOf wf:ProcessorDefinition .
+wf:constant a owl:DatatypeProperty ;
+ rdfs:domain wf:Command .
+
+wf:Command a owl:Class ;
+ rdfs:subClassOf wf:ProcessorDefinition .
+wf:command a owl:DatatypeProperty ;
+ rdfs:domain wf:Command .
+
+
+
wf:WorkflowEngine a owl:Class ;
rdfs:subClassOf prov:Agent .
wf:Process a owl:Class ;
rdfs:subClassOf prov:Agent, prov:ProcessExecution .
-wf:ProvenanceExport a owl:Class ;
- rdfs:subClassOf prov:Agent, prov:ProcessExecution .
-wf:ProcessDefinition a owl:Class ;
- rdfs:subClassOf prov:Recipe .
+wf:Value a owl:Class ;
+ rdfs:subClassOf prov:Entity .
+wf:value a owl:DatatypeProperty, owl:FunctionalProperty ;
+ rdfs:domain wf:Value ;
+ rdfs:subPropertyOf rdf:value .
+
+
+wf:FileValue a owl:Class ;
+ owl:has_key ( wf:file wf:value ) ;
+ rdfs:subClassOf prov:Entity, wf:Value .
+wf:file a owl:DatatypeProperty ;
+ rdfs:domain wf:FileValue .
+
+wf:ValueAtPort a owl:Class ;
+ rdfs:subClassOf prov:QualifiedInvolvement .
+
+wf:seenAtPort a owl:ObjectProperty ;
+ rdfs:domain wf:ValueAtPort ;
+ rdfs:range wf:Port ;
+ rdfs:subPropertyOf prov:hadRole ;
+ prov:minCardinality 1 .
+
+wf:sawValue a owl:ObjectProperty, owl:FunctionalProperty ;
+ rdfs:domain wf:ValueAtPort ;
+ rdfs:range wf:Value ;
+ rdfs:subPropertyOf prov:hadQualifiedEntity ;
+ prov:minCardinality 1 .
+
wf:wasDefinedBy a owl:ObjectProperty, owl:FunctionalProperty ;
rdfs:subPropertyOf prov:hadRecipe ;
rdfs:range wf:Process ;
rdfs:domain wf:ProcessDefinition .
-wf:Value a owl:Class ;
- # For simplicity, but in real workflow systems two identical values
- # can have different identities because they have different
- # origin/generation
- owl:has_key ( wf:value ) ;
- rdfs:subClassOf prov:Entity .
-
-wf:value a owl:ObjectProperty, owl:FunctionalProperty ;
- rdfs:range wf:Value ;
- rdfs:domain cnt:Content .
-
-
-wf:Port a owl:Class .
-wf:Input a owl:Class ;
- rdfs:subClassOf wf:Port .
-wf:Output a owl:Class ;
- rdfs:subClassOf wf:Port .
-
-wf:ValueAtPort a owl:Class, [
- a owl:Restriction ;
- owl:onProperty wf:seenAtPort ;
- owl:cardinality 1
- ] ;
- rdfs:subClassOf wf:Value, prov:EntityInRole .
-
-wf:seenAtPort a owl:ObjectProperty ;
- rdfs:domain wf:ValueAtPort ;
- rdfs:range wf:Port ;
- rdfs:subPropertyOf prov2:assumedRole.
-
-
-wf:linksTo a owl:ObjectProperty ;
- # Not distinguishing between input/output here, to allow the duality of
- # workflow ports
- rdfs:domain wf:Port ;
- rdfs:range wf:Port .
-
wf:wasLaunchedBy a owl:ObjectProperty ;
rdfs:domain wf:Process ;
rdfs:range prov:Agent ;
@@ -79,49 +118,23 @@
rdfs:range wf:Process ;
rdfs:subPropertyOf prov:wasControlledBy .
-
-
-wf:definesSubProcess a owl:ObjectProperty ;
- rdfs:range wf:ProcessDefinition ;
- rdf:domain wf:ProcessDefinition .
-
-wf:definesInput a owl:ObjectProperty ;
- rdfs:range wf:ProcessDefinition ;
- rdf:domain wf:Input .
-
-wf:definesOutput a owl:ObjectProperty ;
- rdfs:range wf:ProcessDefinition ;
- rdf:domain wf:Output .
+wf:wasReadFrom a owl:ObjectProperty ;
+ rdfs:domain wf:Value ;
+ rdfs:range wf:FileValue ;
+ rdfs:subPropertyOf prov:wasDerivedFrom .
-# Example engine implementation extending the general workflow ontology
-@prefix impl: <http://company.example.org/engine-implementation#> .
-
-impl:WorkflowEngine a owl:Class ;
- rdfs:subClassOf wf:WorkflowEngine .
-
-impl:FileValue a owl:Class ;
- owl:has_key ( impl:file wf:value ) ;
- rdfs:subClassOf prov:Entity, wf:Value .
-
-impl:file a owl:DataProperty ;
- rdfs:domain impl:FileValue .
+wf:generatedValue a owl:ObjectProperty ;
+ rdfs:subPropertyOf prov:hadQualifiedGeneration ;
+ rdfs:domain wf:Process ;
+ rdfs:range wf:ValueAtPort .
-impl:Workflow a owl:Class ;
- rdfs:subClassOf wf:ProcessDefinition .
-
-impl:Constant a owl:Class ;
- rdfs:subClassOf wf:ProcessorDefinition .
-impl:constant a owl:DataProperty ;
- rdfs:domain impl:Command .
+wf:usedValue a owl:ObjectProperty ;
+ rdfs:subPropertyOf prov:hadQualifiedUsage ;
+ rdfs:domain wf:Process ;
+ rdfs:range wf:ValueAtPort .
-impl:Command a owl:Class ;
- rdfs:subClassOf wf:ProcessorDefinition .
-
-impl:command a owl:DataProperty ;
- rdfs:domain impl:Command .
-
-impl:wasReadFrom a owl:ObjectProperty ;
- rdfs:domain wf:Value ;
- rdfs:range impl:FileValue ;
- rdfs:subPropertyOf prov:wasDerivedFrom .
+wf:sameValueAs a owl:ObjectProperty ;
+ rdfs:subPropertyOf prov:wasComplementOf, prov:wasDerivedFrom;
+ rdfs:domain wf:Value;
+ rdfs:range wf:Value .