Warning:
This wiki has been archived and is now read-only.
Bundle contextualization
Simon: "contextualization is between entity and bundle"
I see contextualization as an operation on an existing Entity. That operation is parameterized with a reference to a Bundle. The output of that operation is a new Entity that is a specialization the operand, and the "extra attribute" that was "further fixed" is a reference to the bundle. So, we have "Entity x", we apply contextualization to it, and we get a new "Entity x, as described in Bundle c".
So, I don't see it so much as Simon's "between an entity and a bundle", as I do it being "operation on an Entity, producing a (new) Entity, and bringing a Bundle into the picture".
Example 1
Walking through a contextualization example (each code snippet is cumulative):
Step 1
We have ex:Bob mentioned in ex:run1:
ex:run1 {
ex:Bob a prov:Entity; foo:bar "yes" .
}
Step 2
and we have another bundle where we'd like to "reference" that ex:Bob in _as per_ ex:run1. This is useful both for extension of description (for the asserter), AND useful for a consumer to "see what else" there is about ex:Bob.
tool:analysis01 {
ex:Bob a prov:Entity.
# I want to tell my consumers that I saw stuff, and am further describing, ex:Bob _as in_ ex:run1.
# But just saying ex:Bob doesn't get me to ex:run1, it just gets me to ex:Bob "anywhere".
}
Step 3
So, first "contextualize" ex:Bob _as_in_ ex:run1:
tool:analysis01 {
ex:Bob a prov:Entity. # This is redundant, it was an Entity over in ex:run1, too.
# This statement is about ex:Bob regardless of which Bundle he's talked about.
tool:Bob_as_in_run1
a prov:Entity, prov:ContextualizedEntity;
prov:contextualized ex:Bob; # This is how ex:run1 referred to it
prov:inContext ex:run1; # This is the bundle that the ex:Bob that I want to talk about is being described.
. # There. I now have a way to talk about ex:Bob _as_in_ the bundle ex:run1.
# We just "contextualized" ex:Bob, now we can talk about him.
# Contexualized subclass of [ onProperty prov:inContext, minCardinality 1 ],
# [ onProperty prov:contextualized, exactly 1 ] is silently assumed, to stay within RL.
# An inference that should fall from the above ContextualizedEntity above is:
tool:Bob_as_in_run1 prov:specializationOf ex:Bob .
# ^^ this can be produced by RDFS:
# prov:contextualized rdfs:subPropertyOf prov:specializationOf
# Further, we'd want:
# prov:contextualized rdfs:domain prov:ContextualizedEntity . # This was removed when we made ContextualizedDerivation, etc: rdfs:range prov:Entity .
# prov:inContext rdfs:domain prov:ContextualizedEntity . # No range defined, but is often prov:Bundle.
#
# ?contextualization
# prov:contextualized ?uri;
# prov:inContext ?bundle => ?uri dcterms:isReferencedBy ?bundle . # This could probably go both ways...
#
# We can describe the contextualized ex:Bob,
# which is our specializationOf ex:Bob that is special-er b/c it is in the "in ex:run1" Bundle.
tool:Bob_as_in_run1
tool:awesomeness "BAD PERFORMER";
.
# Make prov:contextualized Functional? (Luc's Example 2)
}
http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-contextualization
Example 2
bundle b1 entity(general1) activity(a1) used(a1,general1) endBundle
:b1 {
:general1 a prov:Entity .
:a1
a prov:Activity;
prov:used :general1;
.
}
bundle b2 entity(specific1) activity(a2) used(a2,specific1) specializationOf(specific1,general1) endBundle
:b2 {
:specific1
a prov:Entity;
prov:specializationOf :general1;
.
:a2
a prov:Activity;
prov:used :specific1;
.
}
BAD
bundle b3 entity(e) contextualizationOf(e, general1, bundle1) // e presents the facet of general1 in bundle1 contextualizationOf(e, specific1, bundle2) // e also presents the facet of specific1 in bundle2 endBundle
:b3 {
:e
a prov:Entity;
prov:contextualized :general1; # This pair gets confused with the next pair...
prov:inContext :bundle1;
prov:contextualized :specific1;
prov:inContext :bundle2;
.
}
How you do it
bundle b3 entity(e) contextualizationOf(e1, general1, bundle1) // e presents the facet of general1 in bundle1 contextualizationOf(e2, specific1, bundle2) // e also presents the facet of specific1 in bundle2 specializationOf(e,e1) specializationOf(e,e1) endBundle
:b3 {
:e1
a prov:Entity;
prov:contextualized :general1;
prov:inContext :bundle1;
.
:e2
a prov:Entity;
prov:contextualized :specific1;
prov:inContext :bundle2;
.
:e
prov:specializationOf :e1, :e2;
.
}