Activity Association

An activity association, written wasAssociatedWith(id,a,ag,pl,attrs) in PROV-N, has the following constituents:
In the following example, a designer and an operator agents are associated with an activity. The designer's goals are achieved by a workflow ex:wf.
activity(ex:a,[prov:type="workflow execution"])
agent(ex:ag1,[prov:type="operator"])
agent(ex:ag2,[prov:type="designer"])
wasAssociatedWith(ex:a,ex:ag1,[prov:role="loggedInUser", ex:how="webapp"])
wasAssociatedWith(ex:a,ex:ag2,ex:wf,[prov:role="designer", ex:context="project1"])
entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", 
              ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI])
Since the workflow ex:wf is itself an entity, its provenance can also be expressed in PROV-DM: it can be generated by some activity and derived from other entities, for instance.
In some cases, one wants to indicate a plan was followed, without having to specify which agent was involved.
activity(ex:a,[prov:type="workflow execution"])
wasAssociatedWith(ex:a,-,ex:wf)
entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", 
              ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI])
In this case, it is assumed that an agent exists, but simply it has not been specified.

TO GO in PART 2

Need to determine where this goes. Probably section 4.

In associations, prov-dm assumes that an agent always exists, even if it has not been specified. This is formalized by the following inference.

Given an activity a and a plan pl, and a set of attribute-value pairs attrs, if wasAssociatedWith(a,-,pl, attrs) holds, then there exists an agent ag, such that wasAssociatedWith(a,ag,pl, attrs) also holds.