- From: Nicholas Car via GitHub <sysbot+gh@w3.org>
- Date: Sat, 23 Jun 2018 11:32:00 +0000
- To: public-dxwg-wg@w3.org
**challenging DROV-DC** I would like to challenge an assumption in [PROV-DC](https://www.w3.org/TR/2013/NOTE-prov-dc-20130430) that I think is unhelpful in mapping PROV to Dublin Core Terms. In examples like the `dct:publisher` mapping which is used as an illustrated example in [Figure 1](https://www.w3.org/TR/2013/NOTE-prov-dc-20130430/#figure_mapping_example), the assumption is that the `prov:Entity`, which is the domain of the `dct:publisher` property, is "The activity [`prov:Publish`] must have taken as input the document [`prov:Entity`] to be published...". No! the `prov:Entity` of interest is, in fact, the *output* of the activity (`Publish`). We don't care what was used behind the scenes ("taken as input"): we only care, and know about, the thing in the catalogue described by DCAT: the output of any `prov:Publish` activity. This greatly simplified modelling. Instead of modelling `:Dataset_X dct:publisher :Agent_Y ;` like this in PROV-O, as per [PROV-DC, dct:publisher](https://www.w3.org/TR/2013/NOTE-prov-dc-20130430/#dct-publisher): ``` :Dataset_X a prov:Entity ; prov:wasAttributedTo :Agent_Y . _:usedEntity a prov:Entity ; prov:specializationOf :Dataset_X . _:activity a prov:Activity, prov:Publish ; prov:used _:usedEntity ; prov:wasAssociatedWith :Agent_Y ; prov:qualifiedAssociation [ a prov:Association ; prov:agent :Agent_Y ; prov:hadRole [a prov:Publisher] . ]. _:resultingEntity a prov:Entity ; prov:specializationOf :Entity_X ; prov:wasDerivedFrom _:usedEntity ; prov:wasGeneratedBy _:activity ; prov:wasAttributedTo :Agent_Y . ``` we model it like this: ``` :Dataset_X a prov:Entity ; prov:wasAttributedTo :Agent_Y ; prov:wasGeneratedBy [ a prov:Activity, prov:Publish ; prov:generated :Dataset_X ; prov:wasAssociatedWith :Agent_Y ; prov:qualifiedAssociation [ a prov:Association ; prov:agent :Agent_Y ; prov:hadRole [a prov:Publisher] . ] . ] . ``` We could add in a blank node for an `prov:Entity`, unknown, like this: ``` :Dataset_X a prov:Entity ; prov:wasAttributedTo :Agent_Y ; prov:wasGeneratedBy [ a prov:Activity, prov:Publish ; prov:wasAssociatedWith :Agent_Y ; prov:qualifiedAssociation [ a prov:Association ; prov:agent :Agent_Y ; prov:hadRole [a prov:Publisher] . ] ; prov:used _:usedEntity . ] . ``` but why? We don't know anything about the pre-published `Entity` so where's the value. So in this way we have out `prov:hadRole` for a *Publisher* role without all the fuss of two extra used and generated unknown `Entities`. **Issued** Also, with this in mind we can then re-model `dct:issued` like this: ``` :Dataset_X dct:issued :DateTime_Z . :Dataset_X prov:generatedAtTime :DateTime_Z . ``` *Iff* the generating `prov:Activity` is, in fact, a specialised `prov:Publish` as per PROV-DC or, with qualified form: ``` :Dataset_X dct:issued :DateTime_Z . :Dataset_X a prov:Entity ; prov:qualifiedGeneration [ a prov:Generation ; prov:atTime :DateTime_Z ; prov:activity [ a prov:Publish ; ] ; ] ; ``` -- GitHub Notification of comment by nicholascar Please view or discuss this issue at https://github.com/w3c/dxwg/issues/79#issuecomment-399668872 using your GitHub account
Received on Saturday, 23 June 2018 11:32:05 UTC