Warning:
This wiki has been archived and is now read-only.
Talk:Qualifed Involvements in PROV-O
from http://titanpad.com/8ykJqzcFNj:
http://www.w3.org/2011/prov/wiki/Qualifed_Involvements_in_PROV-O
Qualifed Involvements in PROV-O
qualifiers
Contents
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
- Turtle syntax for property chains
- :hasGrandparent owl:propertyChainAxiom ( :hasParent :hasParent ) .
- :hasUncle owl:propertyChainAxiom ( :hasParent :hasSibling ) .
- me
:hasParent :dad;
.
- dad
:hasSibling :joe;
. ==>
- me :hasUncle :joe .
- 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;
.
- hg# prov:QualifiedInvolvement
- hg# a owl:Class;
- hg# rdfs:subClassOf [
- hg# owl:onProperty prov:entity;
- hg# owl:minCardinality 1
- hg# ];
- hg# .
- prov:EntitysQualifiedInvolvment
- rdfs:subClassOf prov:QualifiedInvolvement;
- rdfs:subClassOf [
- owl:onProperty prov:processExecution;
- owl:minCardinality 1
- ];
- .
- Subclasses of QualifiedInvolvement
- From PE to Entity
prov:qualifedUsage rdfs:subPropertyOf prov:qualifiedInvolvement;
rdfs:range prov:Usage .
prov:Usage rdfs:subClassOf prov:QualifiedInvolvement .
- -----
prov:qualifiedControl rdfs:subPropertyOf prov:qualifiedInvolvement;
rdfs:range prov:Control .
prov:Control rdfs:subClassOf prov:QualifiedInvolvement .
- -----
prov:qualifiedParticipation rdfs:subPropertyOf prov:qualifiedInvolvement;
rdfs:range prov:Participation .
prov:Participation rdfs:subClassOf prov:QualifiedInvolvement .
- -----
- From Entity to PE
prov:qualifiedGeneration rdfs:subPropertyOf prov:qualifiedInvolvement;
rdfs:range prov:Generation .
prov:Generation rdfs:subClassOf prov:QualifiedInvolvement .
- -----
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/