The **_Publishing Workflow Ontology (PWO)_** is a simple ontology written in OWL 2 DL for the characterization of the main stages in the workflow associated with the publication of a document (e.g. being written, under review, XML capture, page design, publication to the Web).
PWO is based on two main classes: `pwo:Workflow` and `pwo:Step`.
`pwo:Workflow` is a subclass of `plandesc:Plan` and represents a sequence of connected tasks (i.e., steps, by using the property `pwo:hasFirstStep` and `pwo:hasStep`, which are ordered by means of `pwo:hasNextStep`).
We can use the class `pwo:WorkflowExecution` to represent the aggregate of the actions (`pwo:Action`) executed in the steps defined in a workflow.
We can then abstract from the execution of individual steps, by saying that a certain workflow execution executes a workflow.

The other main class of PWO is `pwo:Step`.
A step is an atomic unit of a workflow, and subclass of `taskrole:Task`; it is characterised by (required) temporal parameters (`parameter:hasParameter`) describing the expected duration (`time:DurationDescription`) of executed actions, and it is associated with one or more (time-indexed) executed actions by using the property `pwo:involvesAction`.
A workflow step usually involves some input information (i.e., `pwo:needs`), material or energy needed to complete the step, and some output information (i.e., `pwo:produces`), material or energy produced by that step.
In the case of a publishing workflow, a step typically results in the creation of a publication entity, usually by the modification of another pre-existing publication entity, e.g. the creation of an edited paper from a rough draft, or of an HTML representation from an XML document.
## Examples of use
In the following subsections, we introduce some examples to showcase how to use PWO.
The prefixes that are used in all the examples provided below are defined as follows:
@prefix : <http://www.sparontologies.net/example/> .
@prefix pwo: <http://purl.org/spar/pwo/> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix fabio: <http://purl.org/spar/fabio/> .
@prefix pso: <http://purl.org/spar/pso/> .
@prefix c4o: <http://purl.org/spar/c4o/> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix tisit: <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl#> .
@prefix taskex: <http://www.ontologydesignpatterns.org/cp/owl/taskexecution.owl#> .
@prefix ti: <http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl#> .
@prefix part: <http://www.ontologydesignpatterns.org/cp/owl/participation.owl#> .
@prefix tvc: <http://www.essepuntato.it/2012/04/tvc/> .
@prefix swj: <http://semantic-web-journal.com/sejp/> .
@prefix swj-node: <http://semantic-web-journal.com/sejp/node/> .
@prefix cito: <http://purl.org/spar/cito/> .
@prefix parameter: <http://www.ontologydesignpatterns.org/cp/owl/parameter.owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
### Describing the publishing workflow
From the publisher's perspective, the first step of any workflow leading to a new journal publication starts with a formal submission of a manuscript written by someone, hereinafter the author.
This activity expresses, at the same time, interest on the topics of the journal, and may acknowledge, indirectly, the quality of the journal itself – since authors (usually) would like to publish articles in a venue that they consider respectful and qualitatively worth for different reasons (e.g., appropriateness of topic, quality of reviews, journal impact factor, definite timing of the publishing process).
Then, in the next step, i.e., the reviewing phase, the person (designated by the publisher) in charge of the quality of submitted material, hereinafter the editor, invites other people (hereinafter the reviewers) to assess the quality of the submitted manuscript.
The opinions returned by the reviewers are the fundamental input that the editor uses to decide upon the fate of the manuscript during the next step, i.e., the decision phase.
Finally, if the manuscript has been considered worth of publication in the present form, the editor will acknowledge the author of the acceptance of his/her work – and the next steps of the workflow will be in charge of the publisher itself.
:workflow a pwo:Workflow ;
pwo:hasFirstStep :step-one ;
pwo:hasStep
:step-one ,
:step-two ,
:step-three .
:step-one a pwo:Step ;
pwo:hasNextStep :step-two ;
taskex:isExecutedIn :submission-action ;
pwo:needs swj-node:432 ;
pwo:produces :submitted-status .
:step-two a pwo:Step ;
pwo:hasNextStep :step-three ;
parameter:hasParameter :review-time-constraint ;
taskex:isExecutedIn
:reviewing-action ,
:reviews-notification-sending-action ;
pwo:needs
swj-node:432 ,
:submitted-status ;
pwo:produces
:review-1 ,
:review-2 ,
:under-review-status ,
:reviewed-status.
:review-time-constraint a time:DurationDescription ;
time:weeks "5"^^xsd:decimal .
:step-three a pwo:Step ;
taskex:isExecutedIn
:decision-action ,
:notification-action ;
pwo:needs
swj-node:432 ,
:review-1 ,
:review-2 ;
pwo:produces
:minor-revision-status ,
:decision-letter .
:workflow-execution a pwo:WorkflowExecution ;
pwo:executes :workflow ;
pwo:involvesAction
:submission-action ,
:reviewing-action ,
:reviews-notification-sending-action ,
:decision-action ,
:notification-action .
:submission-action a pwo:Action ;
dcterms:description 'Paolo Ciccarese submits the paper' ;
tisit:atTime :submission-time ;
part:hasParticipant
swj:paolo-ciccarese ,
swj-node:432 .
:submission-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-01-21T10:08:28'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-01-21T10:08:28'^^xsd:dateTime .
:submitted-status a pso:StatusInTime ;
pso:isStatusHeldBy swj-node:432 ;
pso:isAcquiredAsConsequenceOf :submission-action ;
pso:withStatus pso:submitted ;
tvc:atTime :submitted-time .
:submitted-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-01-21T10:08:28'^^xsd:dateTime .
:reviewing-action a pwo:Action ;
dcterms:description 'Reviewers review the manuscript' ;
tisit:atTime :reviewing-time ;
part:hasParticipant
swj:csaba-veres ,
swj:fernando-naufel-do-amaral ,
swj-node:432 .
:reviewing-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-02-26T12:00:07'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-04-01T05:53:24'^^xsd:dateTime .
:reviews-notification-sending-action a pwo:Action ;
dcterms:description
'The reviews are sent to the editor, i.e., Giancarlo Guizzardi' ;
tisit:atTime :reviews-time ;
part:hasParticipant
swj:csaba-veres ,
swj:fernando-naufel-do-amaral ,
:review-1 ,
:review-2 ,
swj:giancarlo-guizzardi .
:reviews-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-03-14T11:16:34'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-04-01T05:53:24'^^xsd:dateTime .
:review-1 a fabio:Comment ;
frbr:realizationOf [ a fabio:Review ] ;
cito:reviews swj-node:432 ;
frbr:realizer swj:csaba-veres ;
c4o:hasContent
'The paper addresses a very practical...' .
:review-2 a fabio:Comment ;
frbr:realizationOf [ a fabio:Review ] ;
cito:reviews swj-node:432 ;
frbr:realizer swj:fernando-naufel-do-amaral ;
c4o:hasContent
'The paper presents the Collection Ontology (CO)...' .
:under-review-status a pso:StatusInTime ;
pso:isStatusHeldBy swj-node:432 ;
pso:isAcquiredAsConsequenceOf :reviewing-action ;
pso:isLostAsConsequenceOf
:reviews-notification-sending-action ;
pso:withStatus pso:under-review ;
tvc:atTime :under-review-time .
:under-review-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-02-26T12:00:07'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-04-01T05:53:24'^^xsd:dateTime .
:reviewed-status a pso:StatusInTime ;
pso:isStatusHeldBy swj-node:432 ;
pso:isAcquiredAsConsequenceOf
:reviews-notification-sending-action ;
pso:withStatus pso:reviewed ;
tvc:atTime :reviewed-time .
:reviewed-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-04-01T05:53:24'^^xsd:dateTime .
:decision-action a pwo:Action ;
dcterms:description 'The editor decides for acceptance or not' ;
tisit:atTime :decision-time ;
part:hasParticipant
swj:giancarlo-guizzardi ,
:review-1 ,
:review-2 ,
swj-node:432 .
:decision-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-04-01T05:53:24'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-06-10T17:47:53'^^xsd:dateTime .
:notification-action a pwo:Action ;
dcterms:description
'The editor notifies his decision to the corresponding
author (i.e., Paolo Ciccarese).' ;
tisit:atTime :notification-time ;
part:hasParticipant
swj:giancarlo-guizzardi ,
:decision-letter ,
:review-1 ,
:review-2 ,
swj:paolo-ciccarese ,
swj-node:432 .
:notification-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-06-10T17:47:53'^^xsd:dateTime ;
ti:hasIntervalEndDate
'2013-06-10T17:47:53'^^xsd:dateTime .
:decision-letter a fabio:Letter , fabio:Email ;
frbr:realizationOf [ a fabio:Opinion ] ;
cito:citesAsRelated swj-node:432 ;
frbr:realizer swj:giancarlo-guizzardi ;
c4o:hasContent
'Dear authors, Thank you for your interest in...' .
:minor-revision-status a pso:StatusInTime ;
pso:isStatusHeldBy swj-node:432 ;
pso:isAcquiredAsConsequenceOf :decision-action ;
pso:withStatus swj:minorRevision ;
tvc:atTime :minor-revision-time .
:minor-revision-time a ti:TimeInterval ;
ti:hasIntervalStartDate
'2013-06-10T17:47:53'^^xsd:dateTime .
## Competency Questions
PWO can be used for answering several questions related to publication workflows.
In the following subsections, some of them are introduced together with their respective SPARQL queries.
The prefixes that are used in all the SPARQL queries provided below are defined as follows:
PREFIX pwo: <http://purl.org/spar/pwo/>
PREFIX taskex: <http://www.ontologydesignpatterns.org/cp/owl/taskexecution.owl#>
PREFIX part: <http://www.ontologydesignpatterns.org/cp/owl/participation.owl#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX frbr: <http://purl.org/vocab/frbr/core#>
PREFIX tisit: <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl#>
PREFIX ti: <http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl#>
### CQ1
What is the ordered sequence of steps in a workflow, including their required inputs and produced outputs?
SELECT ?workflow ?step ?nextStep ?requiredInput ?producedOutput
WHERE {
?workflow a pwo:Workflow ;
pwo:hasStep ?step .
?step a pwo:Step .
OPTIONAL { ?step pwo:hasNextStep ?nextStep . }
OPTIONAL { ?step pwo:needs ?requiredInput . }
OPTIONAL { ?step pwo:produces ?producedOutput . }
}
### CQ2
Which actions execute a workflow step, and who or what participates in them?
SELECT ?step ?action ?actionDescription ?participant
WHERE {
?step a pwo:Step ;
taskex:isExecutedIn ?action .
?action a pwo:Action .
OPTIONAL { ?action dcterms:description ?actionDescription . }
OPTIONAL { ?action part:hasParticipant ?participant . }
}
### CQ3
What are the start and end times of actions involved in a workflow execution?
SELECT ?workflowExecution ?action ?startDate ?endDate
WHERE {
?workflowExecution a pwo:WorkflowExecution ;
pwo:involvesAction ?action .
?action tisit:atTime ?timeInterval .
OPTIONAL { ?timeInterval ti:hasIntervalStartDate ?startDate . }
OPTIONAL { ?timeInterval ti:hasIntervalEndDate ?endDate . }
}