Warning:
This wiki has been archived and is now read-only.

# Talk:Qualifed Involvements in PROV-O

http://www.w3.org/2011/prov/wiki/Qualifed_Involvements_in_PROV-O Qualifed Involvements in PROV-O qualifiers

### Example 1

my_pe
```   a prov:ProcessExecution;

prov:used      :Khalid;

prov:qualifedUsage [           # This is the inverse of opm:effect
a prov:Usage ;                # By implication (range of qualifedUsage)
prov:entity :Khalid;          # This is analogous to opm:cause
my:whatever your:whatever;
a rest:Customer;<--- then this is going to be removed, right? Yes. sorta. it equiv. with "prov:role rest:Customer" using a few OWL axioms.
my:hasIndex 4;
prov:role rest:Customer
];
```

. my:hasIndex rdfs:subProperty prov:qualifier .

### Example 2: algebra

"P is a ProcessExecution that "uses" 40 and 5, and divides them to get 8. 40 is a numerator and 5 is a denominator. The same entity/thing could have different roles with respect to different processes. For e.g. (a) 40 / 5 = 8 by PE p1 (b) 8 / 2 = 4 by PE p2, where 8 plays the roles of "result" and "numerator" respectively.

p
```   a prov:ProcessExecution;
prov:used        "40"^^xsd:integer;          # Could be inferred, but we materialize it directly to avoid need for inference.
prov:used         "5"^^xsd:integer;            #
prov:generated "8"^^xsd:integer;            #

algebra:usedAsNumerator    "40"^^xsd:integer;
algebra:usedAsDenominator "5"^^xsd:integer;
algebra:generatedAs             "8"^^xsd:integer;
```

. algebra:usedAsNumerator rdfs:subPropertyOf prov:used . algebra:usedAsDenominator rdfs:subPropertyOf prov:used . algebra:generatedAs rdfs:subPropertyOf prov:generated .

p
```   a prov:ProcessExecution;
prov:used "40"^^xsd:integer; # OWL FULL? I know....
prov:qualifedUse [
prov:entity
];
prov:used "5"^^xsd:integer;
prov:qualifedUse [

];
tim:generated "8"^^xsd:integer;
prov:qualifedGeneration [
prov:entity "8"^^xsd:integer;
];
```

. tim:generated owl:inverseOf prov:wasGeneratedBy .

### existing use,generation example

ex1:chart1 prov:wasGeneratedBy ex1:compiled . ex1:compiled prov:used ex1:dataSet1 . ex1:chart1 prov:wasDerivedFrom ex1:dataSet1 .

### Roles on separate account

ex1:graphicProduction

```       prov:used ex1:dataSetAggregatedByRegion ;
prov:qualifiedUsage [
a prov:Usage ;
prov:entity ex1:dataSetAggregatedByRegion;
prov:role ex1:dataToPlot ;
prov:time "2011-11-03T09:23:51Z"^^xsd:dateTime ;
prov:process ex1:graphicProduction
] ;
prov:wasControlledBy ex1:derek ;
prov:qualifiedControl [
a prov:Control ;
prov:entity ex1:derek ;
prov:role ex1:analyst ;
prov:time "2011-11-03T09:23:51Z"^^xsd:dateTime ;
prov:process ex1:graphicProduction
]

prov:generated ex1:chart1; # this should be added to permit "process centric" descriptions.
prov:qualifiedGeneration [
a prov:Generation ;
prov:role ex1:output ;  # You can add a role, but when only one output is created, a role "output" is redundant.
prov:process ex1:graphicProduction ;
prov:time "2011-11-03T09:23:53Z"^^xsd:dateTime ;
prov:entity ex1:chart1
]
```

. ex1:chart1

```       prov:wasGeneratedBy ex1:graphicProduction ;
#       prov:qualifiedGeneration [ # generationQualifiedBy ?
#               a prov:Generation ;
#               prov:role ex1:creator ;
#               prov:process ex1:graphicProduction ;
#               prov:time "2011-11-03T09:23:53Z"^^xsd:dateTime ;
#               prov:entity ex1:chart1
#       ] .
```

### Example 4:

@prefix daniel: <http://wind.isi.edu/DemoWFLinkedData/imgwfTempl/abstract.png#> . @prefix : <> .

removeSignificantPairs
```   a prov:ProcessExecution,
daniel:RemoveSignificantPairs;

prov:used :comparisonOutput, :significantResults;
prov:qualifiedUsage [
a prov:Usage;
prov:entity :comparisonOutput;
prov:role daniel:comparisonOutput;
];
prov:qualifiedUsage [
a prov:Usage;
prov:entity my:significantResults;
prov:role daniel:significantResults;
];
prov:generated :insignificantresults, :significantResultsFiltered;
prov:qualifiedGeneration [
a prov:Generation
prov:entity :insignificantresults;   # one or the other is always going to be redundant, since either a PE or Entity will always
#  be pointing to this QualifiedInvolvement
#      prov:process  :removeSignificantPairs; # this is redundant (in this case)?
prov:role daniel:insignificantresults;
]
```

. ?s a prov:ProcessExecution;

```   prov:qualifiedGeneration ?generation
```
1. Turtle syntax for property chains
2.  :hasGrandparent owl:propertyChainAxiom ( :hasParent  :hasParent ) .
3.  :hasUncle owl:propertyChainAxiom ( :hasParent  :hasSibling ) .
me
```   :hasParent :dad;
```

.

```    :hasSibling :joe;
```

. ==>

me :hasUncle :joe .
1. prov:process owl:propertyChainAxiom ( prov:qualifiedGeneration ) .

prov:generated owl:propertyChainAxiom ( prov:qualifiedGeneration prov:entity ) . prov:wasGeneratedBy owl:propertyChainAxiom ( prov:qualifedGeneration prov:process ) . prov:used owl:propertyChainAxiom ( prov:qualifiedUsage prov:entity ) . prov:wasControlledBy owl:propertyChainAxiom( prov:qualifiedControl prov:entity ) .

insignificantresults
```  a prov:Entity;
prov:wasGeneratedBy :removeSignificantPairs;
prov:qualifiedGeneration [
a prov:Generation
#prov:entity :insignificantresults;
prov:process  :removeSignificantPairs; # this is NOT redundant here, since we came from an Entity and still don't know the PE.
prov:role daniel:insignificantresults;
]
.
```
significantResultsFiltered
```  a prov:Entity;
prov:wasGeneratedBy :removeSignificantPairs;
prov:qualifiedGeneration[
a prov:Generation
prov:entity :significantResultsFiltered;
prov:process  :removeSignificantPairs;
prov:role daniel:significantResultsFiletered;
] .
```

### OWL axioms

prov:qualifiedInvolvement # was: prov:qualification

```   rdfs:domain [ owl:unionOf ( prov:ProcessExecution prov:Entity ) ] ;
rdfs:range prov:QualifedInvolvement;
rdfs:comment "A ProcessExecution describes how it used an Entity, or and Entity describes how it was used by a ProcessExecution. If both directions are asserted, it is acceptable to reference the same instance of QualifiedInvolvement.";
rdfs:comment "This is a superproperty of several more specific properties; the more specific properties should be used instead.";
```

. prov:involvementQualifiedBy

```   rdfs:domain prov:Entity;
rdfs:range QualifiedInvolvement;
```

.

1. hg# prov:QualifiedInvolvement
2. hg# a owl:Class;
3. hg# rdfs:subClassOf [
4. hg# owl:onProperty prov:entity;
5. hg# owl:minCardinality 1
6. hg# ];
7. hg# .
8. prov:EntitysQualifiedInvolvment
9. rdfs:subClassOf prov:QualifiedInvolvement;
10. rdfs:subClassOf [
11. owl:onProperty prov:processExecution;
12. owl:minCardinality 1
13. ];
14. .
15. Subclasses of QualifiedInvolvement
16. From PE to Entity

prov:qualifedUsage rdfs:subPropertyOf prov:qualifiedInvolvement;

```                               rdfs:range prov:Usage .

```

prov:Usage rdfs:subClassOf prov:QualifiedInvolvement .

1. -----

prov:qualifiedControl rdfs:subPropertyOf prov:qualifiedInvolvement;

```                                rdfs:range prov:Control .

```

prov:Control rdfs:subClassOf prov:QualifiedInvolvement .

1. -----

prov:qualifiedParticipation rdfs:subPropertyOf prov:qualifiedInvolvement;

```                                         rdfs:range prov:Participation .

```

prov:Participation rdfs:subClassOf prov:QualifiedInvolvement .

1. -----
2. From Entity to PE

prov:qualifiedGeneration rdfs:subPropertyOf prov:qualifiedInvolvement;

```                                       rdfs:range prov:Generation .

```

prov:Generation rdfs:subClassOf prov:QualifiedInvolvement .

1. -----

prov:Role

```  rdfs:subClassOf prov:QualifiedInvolvement ;
owl:equivalentClass [
owl:onProperty prov:role;
owl:minCardinality 1;
];
rdfs:comment  "Stephan has concerns here.";
```

. prov:role rdfs:subPropertyOf prov:qualifier ;

```   rdfs:range ??? .
```

prov:entity rdfs:domain prov:QualifiedInvolvement;

```                rdfs:range prov:Entity;
rdfs:comment "The Entity that a Process Execution involved (used, controlled, generated) an Entity"
```

.

### NOTE

It makes absolutely NO sense for a QualifiedRelation QualifiedInvolvement (Usage, Control, Generation, Participation) to exist without being pointing at by a ProcessExecution. Involvement: happens to "touch upon" the ProcessExecution in some way.

### OPM-O

Relation classes: Usage, Generation, Control, Participation have Usage point to PE? Usage doesn't make sense by itself. The model includes two additional elements: qualifiers and annotations. These are both structured as sets of attribute-value pairs.

```   Qualifiers can be associated to relations, namely use and wasGeneratedBy, in order to further characterize their nature. Role is a pre-defined qualifier.
```
```   Annotations are used to provide additional, "free-form" information regarding any identifiable construct of the model, with no prescribed meaning. The difference between attributes and annotations is further clarified here.
```