Talk:Qualifed Involvements in PROV-O

From Provenance WG Wiki
Revision as of 22:12, 6 November 2011 by Tlebo (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

from http://titanpad.com/8ykJqzcFNj:


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 .

Example 3: <from primer>

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
       ] 
       
       # Tim add:
       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;

.

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.

http://inference-web.org/w/images/b/b2/Opm.owl.rdf.manual.graffle.pdf http://openprovenance.org/model/opmo http://openprovenance.org/model/dependencies.jpg http://www.w3.org/TR/2011/WD-prov-dm-20111018/