Re: [dxwg] Qualified forms [RQF]

**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