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/