--- a/dc-note/releases/NOTE-prov-dc-20130430/Overview.html Tue Apr 23 00:22:36 2013 +0200
+++ b/dc-note/releases/NOTE-prov-dc-20130430/Overview.html Tue Apr 23 01:05:06 2013 +0200
@@ -1078,7 +1078,7 @@
<td><a href="http://www.w3.org/TR/prov-o/#wasRevisionOf">prov:wasRevisionOf</a></td>
<td>rdfs:subPropertyOf</td>
<td><b><a href="http://purl.org/dc/terms/isVersionOf">dct:isVersionOf</a></b></td>
- <td>Similar to the previous property, <code>prov:wasRevisionOf</code> is more restrictive in the sense that it refers to revised version of a resource, while
+ <td>Similar to the previous property, <code>prov:wasRevisionOf</code> is more restrictive in the sense that it refers to a revised version of a resource, while
<code>dct:isVersionOf</code> involves versions, editions or adaptations of the original resource. As an example, "West Side Story" is a version (adaptation) of "Romeo and Juliet",
but not a revision.</td>
</tr>
@@ -1196,7 +1196,7 @@
on the available data. The graph in the CONSTRUCT part can be seen as a template
where the variables are placeholders that are filled with the values found in the data.
The mapping for each term encodes a similar graph to the one presented in <a href="#figure_mapping_example">Figure 1</a> (with small changes
- for creator and rightsHolder). With this mapping,
+ for <code>dct:creator</code> and <code>dct:rightsHolder</code>). With this mapping,
the difference in the complexity becomes obvious. Many blank nodes are created, so a subsequent cleanup phase that relates them and provides stable
URIs for the entities is required. Depending on the implementation, URIs can also be coined here for every specialization.
<!--Sometimes URIs for the specializations are also available and simply not exposed to the DC record.-->
@@ -1207,86 +1207,89 @@
<section id="dct-creator">
<h5><span class="secno">3.3.1.1 </span> dct:creator</h5>
A creator is the agent in charge of the <code>prov:Create</code> activity that generated a specialization of the entity <code>?document</code>. The agent is assigned the role <code>prov:Creator</code>.
- <pre class="code"> CONSTRUCT {
- ?document a prov:Entity ;
- prov:wasAttributedTo ?agent.
+ <pre class="code">
+CONSTRUCT {
+ ?document a prov:Entity ;
+ prov:wasAttributedTo ?agent.
- ?agent a prov:Agent .
+ ?agent a prov:Agent .
- _:activity a prov:Activity, prov:Create ;
- prov:wasAssociatedWith ?agent;
- prov:qualifiedAssociation [
- a prov:Association;
- prov:agent ?agent;
- prov:hadRole [a prov:Creator].
- ].
+ _:activity a prov:Activity, prov:Create ;
+ prov:wasAssociatedWith ?agent;
+ prov:qualifiedAssociation [
+ a prov:Association;
+ prov:agent ?agent;
+ prov:hadRole [a prov:Creator].
+ ].
- _:resultingEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasAttributedTo ?agent.
+ _:resultingEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasAttributedTo ?agent.
} WHERE {
- ?document dct:creator ?agent.
+ ?document dct:creator ?agent.
}
</pre>
</section>
<section id="dct-contributor">
<h5><span class="secno">3.3.1.2 </span>dct:contributor</h5>
Contributor is mapped following the previous pattern. Only the roles and activities change:
- <pre class="code"> CONSTRUCT {
- ?document a prov:Entity ;
- prov:wasAttributedTo ?agent .
+ <pre class="code">
+CONSTRUCT {
+ ?document a prov:Entity ;
+ prov:wasAttributedTo ?agent .
- ?agent a prov:Agent .
+ ?agent a prov:Agent .
- _:activity a prov:Activity, prov:Contribute ;
- prov:wasAssociatedWith ?agent ;
- prov:qualifiedAssociation [
- a prov:Association ;
- prov:agent ?agent ;
- prov:hadRole [a prov:Contributor].
- ].
+ _:activity a prov:Activity, prov:Contribute ;
+ prov:wasAssociatedWith ?agent ;
+ prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent ?agent ;
+ prov:hadRole [a prov:Contributor].
+ ].
- _:resultingEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasAttributedTo ?agent .
+ _:resultingEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasAttributedTo ?agent .
} WHERE {
- ?document dct:contributor ?agent .
+ ?document dct:contributor ?agent .
}
</pre>
</section>
<section id="dct-publisher">
<h5><span class="secno">3.3.1.3 </span>dct:publisher</h5>
In case of publication, a second specialization representing the entity before the publication is necessary:
- <pre class="code"> CONSTRUCT {
- ?document a prov:Entity ;
- prov:wasAttributedTo ?agent .
-
- ?agent a prov:Agent .
-
- _:usedEntity a prov:Entity;
- prov:specializationOf ?document.
+ <pre class="code">
+CONSTRUCT {
+ ?document a prov:Entity ;
+ prov:wasAttributedTo ?agent .
- _:activity a prov:Activity, prov:Publish ;
- prov:used _:usedEntity;
- prov:wasAssociatedWith ?agent ;
- prov:qualifiedAssociation [
- a prov:Association ;
- prov:agent ?agent ;
- prov:hadRole [a prov:Publisher] .
- ].
+ ?agent a prov:Agent .
+
+ _:usedEntity a prov:Entity;
+ prov:specializationOf ?document.
- _:resultingEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasDerivedFrom _:usedEntity
- prov:wasGeneratedBy _:activity ;
- prov:wasAttributedTo ?agent .
+ _:activity a prov:Activity, prov:Publish ;
+ prov:used _:usedEntity;
+ prov:wasAssociatedWith ?agent ;
+ prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent ?agent ;
+ prov:hadRole [a prov:Publisher] .
+ ].
+
+ _:resultingEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasDerivedFrom _:usedEntity
+ prov:wasGeneratedBy _:activity ;
+ prov:wasAttributedTo ?agent .
} WHERE {
- ?document dct:publisher ?agent .
+ ?document dct:publisher ?agent .
}
</pre>
<p></p>
@@ -1294,32 +1297,33 @@
<section id="dct-rightsHolder">
<h5><span class="secno">3.3.1.4 </span>dct:rightsHolder</h5>
The rightsHolder manages the rights of a resource, getting some attribution for the ownership by being ascribed to it:
- <pre class="code"> CONSTRUCT {
- ?document a prov:Entity ;
- prov:wasAttributedTo ?agent .
-
- ?agent a prov:Agent .
-
- _:oldRightsEntity a prov:Entity;
- prov:specializationOf ?document.
+ <pre class="code">
+CONSTRUCT {
+ ?document a prov:Entity ;
+ prov:wasAttributedTo ?agent .
- _:activity a prov:Activity, prov:RightsAssignment ;
- prov:used _:oldRightsEntity;
- prov:wasAssociatedWith ?agent ;
- prov:qualifiedAssociation [
- a prov:Association ;
- prov:agent ?agent ;
- prov:hadRole [a prov:RightsHolder] .
- ].
+ ?agent a prov:Agent .
+
+ _:oldRightsEntity a prov:Entity;
+ prov:specializationOf ?document.
- _:newRightsEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasDerivedFrom _:oldRightsEntity
- prov:wasGeneratedBy _:activity ;
- prov:wasAttributedTo ?agent .
+ _:activity a prov:Activity, prov:RightsAssignment ;
+ prov:used _:oldRightsEntity;
+ prov:wasAssociatedWith ?agent ;
+ prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent ?agent ;
+ prov:hadRole [a prov:RightsHolder] .
+ ].
+
+ _:newRightsEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasDerivedFrom _:oldRightsEntity
+ prov:wasGeneratedBy _:activity ;
+ prov:wasAttributedTo ?agent .
} WHERE {
- ?document dct:rightsHolder ?agent .
+ ?document dct:rightsHolder ?agent .
}
</pre>
<p></p>
@@ -1341,11 +1345,12 @@
<section id="term_date">
<h5><span class="secno">3.3.2.1 </span> dct:date</h5>
<p>Term defined as a point or period of time associated with an event in the lifecycle of the resource.</p>
- <pre class="code"> CONSTRUCT{
- _:event a prov:InstantaneousEvent ;
- prov:atTime ?date .
+ <pre class="code">
+CONSTRUCT{
+ _:event a prov:InstantaneousEvent ;
+ prov:atTime ?date .
} WHERE {
- ?document dct:date ?date.
+ ?document dct:date ?date.
}
</pre>
Note that the above inference would not generally be considered useful due to the ambiguity of <code>dct:date</code> (we don't know how the entity is
@@ -1354,23 +1359,24 @@
<section id="dct-created">
<h5><span class="secno">3.3.2.2 </span> dct:created</h5>
<p></p>
- <pre class="code"> CONSTRUCT{
- ?document a prov:Entity .
+ <pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Create ;
+ _:activity a prov:Activity, prov:Create ;
- # The “output”
- _:createdEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “output”
+ _:createdEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:created ?date.
+ ?document dct:created ?date.
}
</pre>
</section>
@@ -1378,29 +1384,30 @@
<section id="dct-issued">
<h5><span class="secno">3.3.2.3 </span>dct:issued</h5>
<p>
- </p><pre class="code"> CONSTRUCT{
- ?document a prov:Entity .
+ </p><pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Publish ;
- prov:used _:usedEntity .
-
- # The “input”
- _:usedEntity a prov:Entity .
- prov:specializationOf ?document .
+ _:activity a prov:Activity, prov:Publish ;
+ prov:used _:usedEntity .
- # The “output”
- _:issEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:wasDerivedFrom _:usedEntity ;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “input”
+ _:usedEntity a prov:Entity .
+ prov:specializationOf ?document .
+
+ # The “output”
+ _:issEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:wasDerivedFrom _:usedEntity ;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:issued ?date.
+ ?document dct:issued ?date.
}
</pre>
<p></p>
@@ -1409,28 +1416,28 @@
<h5><span class="secno">3.3.2.4 </span>dct:modified</h5>
<p></p><pre class="code">
CONSTRUCT{
- ?document a prov:Entity .
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Modify ;
- prov:used _:usedEntity .
+ _:activity a prov:Activity, prov:Modify ;
+ prov:used _:usedEntity .
- # The “input”
- _:usedEntity a prov:Entity .
+ # The “input”
+ _:usedEntity a prov:Entity .
prov:specializationOf ?document .
- # The “output”
- _:modifiedEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:wasDerivedFrom _:usedEntity ;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “output”
+ _:modifiedEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:wasDerivedFrom _:usedEntity ;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:modified ?date.
+ ?document dct:modified ?date.
}
</pre>
<p></p>
@@ -1439,28 +1446,28 @@
<h5><span class="secno">3.3.2.5 </span>dct:dateAccepted</h5>
<p></p><pre class="code">
CONSTRUCT{
- ?document a prov:Entity .
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Accept ;
- prov:used _:usedEntity .
-
- # The “input”
- _:usedEntity a prov:Entity .
- prov:specializationOf ?document .
+ _:activity a prov:Activity, prov:Accept ;
+ prov:used _:usedEntity .
- # The “output”
- _:acceptedEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:wasDerivedFrom _:usedEntity ;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “input”
+ _:usedEntity a prov:Entity .
+ prov:specializationOf ?document .
+
+ # The “output”
+ _:acceptedEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:wasDerivedFrom _:usedEntity ;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:dateAccepted ?date.
+ ?document dct:dateAccepted ?date.
}
</pre>
<p></p>
@@ -1468,49 +1475,51 @@
<section id="dct-datecopyrighted">
<h5><span class="secno">3.3.2.6 </span>dct:dateCopyrighted</h5>
By creating a resource we gain automatic copyright over it, so <code>_:usedEntity</code> is not required in this complex mapping.
- <p></p><pre class="code">CONSTRUCT{
- ?document a prov:Entity .
+ <p></p><pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Copyright ;
- # The “output”
- _:copyrightedEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ _:activity a prov:Activity, prov:Copyright ;
+ # The “output”
+ _:copyrightedEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:dateCopyrighted ?date.
+ ?document dct:dateCopyrighted ?date.
}</pre>
</section>
<section id="dct-datesubmitted">
<h5><span class="secno">3.3.2.7 </span>dct:dateSubmitted</h5>
- <p></p><pre class="code"> CONSTRUCT{
- ?document a prov:Entity .
+ <p></p><pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Submit ;
- prov:used _:usedEntity .
+ _:activity a prov:Activity, prov:Submit ;
+ prov:used _:usedEntity .
- # The “input”
- _:usedEntity a prov:Entity .
- prov:specializationOf ?document .
+ # The “input”
+ _:usedEntity a prov:Entity .
+ prov:specializationOf ?document .
- # The “output”
- _:submittedEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:wasDerivedFrom _:usedEntity ;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “output”
+ _:submittedEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:wasDerivedFrom _:usedEntity ;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:dateSubmitted ?date.
+ ?document dct:dateSubmitted ?date.
}
</pre>
<p></p>
@@ -1538,26 +1547,27 @@
which is the subject of replacement, thus, <code>_:newEntity</code> was derived from <code>_:oldEntity</code>.
</p>
<p>
- </p><pre class="code">CONSTRUCT{
- ?document a prov:Entity .
- ?document2 a prov:Entity.
+ </p><pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
+ ?document2 a prov:Entity.
- _:activity a prov:Activity, prov:Replace ;
- prov:used _:oldEntity.
+ _:activity a prov:Activity, prov:Replace ;
+ prov:used _:oldEntity.
- # The “input”
- _:oldEntity a prov:Entity;
- prov:specializationOf ?document2 ;
+ # The “input”
+ _:oldEntity a prov:Entity;
+ prov:specializationOf ?document2 ;
- # The “output”
- _:newEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity;
- prov:wasDerivedFrom _:oldEntity ;
- prov:alternateOf _:oldEntity.
+ # The “output”
+ _:newEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity;
+ prov:wasDerivedFrom _:oldEntity ;
+ prov:alternateOf _:oldEntity.
} WHERE {
- ?document dct:replaces ?document2.
+ ?document dct:replaces ?document2.
}
</pre><p></p>
</section>
@@ -1579,29 +1589,30 @@
creator and created, publisher and issued, modified and contributor, etc.). By combining some of the queries, some of the records
could be grouped creating more complete PROV assertions.</p>
<p>The example below shows how to conflate the blank nodes for <code>dct:creator</code> and <code>dct:created</code> properties:
- </p><pre class="code"> CONSTRUCT{
- ?document a prov:Entity .
+ </p><pre class="code">
+CONSTRUCT{
+ ?document a prov:Entity .
- _:activity a prov:Activity, prov:Create.
- prov:wasAssociatedWith ?agent
- prov:qualifiedAssociation [
- a prov:Association;
- prov:agent ?agent;
- prov:hadRole [a prov:Creator] .
- ] .
+ _:activity a prov:Activity, prov:Create.
+ prov:wasAssociatedWith ?agent
+ prov:qualifiedAssociation [
+ a prov:Association;
+ prov:agent ?agent;
+ prov:hadRole [a prov:Creator] .
+ ] .
- # The “output”
- _:createdEntity a prov:Entity ;
- prov:specializationOf ?document ;
- prov:wasGeneratedBy _:activity ;
- prov:wasGeneratedAtTime ?date;
- prov:qualifiedGeneration [
- a prov:Generation ;
- prov:atTime ?date ;
- prov:activity _:activity .
- ] .
+ # The “output”
+ _:createdEntity a prov:Entity ;
+ prov:specializationOf ?document ;
+ prov:wasGeneratedBy _:activity ;
+ prov:wasGeneratedAtTime ?date;
+ prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:atTime ?date ;
+ prov:activity _:activity .
+ ] .
} WHERE {
- ?document dct:creator ?agent;
+ ?document dct:creator ?agent;
dct:created ?date.
}
</pre>