From a11553a799f4e28147321b99800e2b69499f96f3 Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Fri, 24 Jul 2020 19:13:07 -0800 Subject: [PATCH 1/8] Inital Dataset Guide section and proposed ADR on providing provenance relationships. Editing not completed yet on the guide, and still need to generate figures to illustrate. --- decisions/72-provenance.md | 25 +++++++++++++++++++++ guides/Dataset.md | 45 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 decisions/72-provenance.md diff --git a/decisions/72-provenance.md b/decisions/72-provenance.md new file mode 100644 index 0000000..70e02fe --- /dev/null +++ b/decisions/72-provenance.md @@ -0,0 +1,25 @@ +# Use PROV-O, isBasedOn, and ProvONE for provenance information + +Discussion: https://github.com/ESIPFed/science-on-schema.org/issues/72 + +## Status ## +_Pick one of:_ Proposed, Accepted, Rejected, Deprecated, Superseded + +Proposed + +## Decision ## + +Provide provenance information about data processing workflows, data derivation relationships, and versioning information using PROV-O and schema.org predicates. + +- [`schema:isBasedOn`](https://schema.org/isBasedOn). +- `PROV-O` namespace (http://www.w3.org/ns/prov#) predicates, including `prov:wasDerivedFrom`, `prov:wasRevisionOf`, `prov:used`, and `prov:generatedBy` +- [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` that create derived products + +## Context ## +High level relationships that link datasets based on their processing workflows and versioning relationships are critical for consumers to differentiate versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software that created these derived Datasets. The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of information, and should be used within Dataset descriptions, as most relevant properties are missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom`. + +## Consequences ## + +- Versioning and derivation relationships will be clearer +- Aggregators and search systems should use these properties to cluster versions of Datasets, and to provide bi-directional linkages to derived data products +- Software processing and other processing relationships can be provided via linkages to `prov:Activity`, and particularly `provone:Execution` and `provone:Program` for specifying software processes that create derived products. However, these relationships get complicated as multi-step software workflows can be complex. Providing these relationships is useful when researchers strive to describe reproducible research through software workflows. diff --git a/guides/Dataset.md b/guides/Dataset.md index f12a322..11b4e5c 100644 --- a/guides/Dataset.md +++ b/guides/Dataset.md @@ -19,6 +19,7 @@ - [Publisher / Provider](#publisher-provider) - [Funding](#funding) - [License](#license) + - [Provenance Relationships](#provenance-relationships) - [Advanced Publishing Techniques](#advanced-publishing-techniques) - [Attaching Physical Samples to a Dataset](#attaching-physical-samples-to-a-dataset) @@ -1038,6 +1039,50 @@ The following table contains the SPDX URIs for some of the most common licenses. Back to [top](#top) +### Provenance Relationships + +High level relationships that link datasets based on their processing workflows and versioning relationships are critical for data consumers and search engines to link different versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software and activities that created these derived datasets. + +The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of information, and should be used within Dataset descriptions, as most of the necessary provenance properties are missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates for consumers that might only be looking for one or the other. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom` for consistency. + +We recommend providing provenance information about data processing workflows, data derivation relationships, and versioning information using PROV-O and schema.org predicates, and describe the structures to do this in the following subsections. Aggregators and search systems should use these properties to cluster and cross-link versions of Datasets, and to provide bi-directional linkages to source and derived data products. + +#### Indicating an earlier version: `prov:wasRevisionOf` + +- TODO: Create figure showing version relationsips + +Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated. The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifer for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used. + +
+{
+  "@context": {
+    "@vocab": "https://schema.org/",
+    "prov": "http://www.w3.org/ns/prov#"
+  },
+  "@id": "https://doi.org/10.xxxx/Dataset.v2",
+  "@type": "Dataset",
+  "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016",
+  "prov:wasRevisionOf": "https://doi.org/10.xxxx/Dataset.v1"
+  ...
+}
+
+ +#### Indicating a source dataset: `schema:isBasedOn` and `prov:wasDerivedFrom` +- TODO: Create figure showing derivation relationsips +- [`schema:isBasedOn`](https://schema.org/isBasedOn). +- `PROV-O` (http://www.w3.org/ns/prov#) predicate: `prov:wasRevisionOf` +- `PROV-O` (http://www.w3.org/ns/prov#) predicate: including `prov:wasDerivedFrom` +- TODO: Add example SO entry + +#### Indicating a software workflow or processing activity: `prov:used` and `prov:wasGeneratedBy` + +- [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it. + +- TODO: Figure showing software workflow +- TODO: Add example SO entry + +Back to [top](#top) + ## Advanced Publishing Techniques From 5c538fb6c9c50f1af29708a963b278c754495afc Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Mon, 27 Jul 2020 08:53:33 -0800 Subject: [PATCH 2/8] Added section on `prov:wasDerivedFrom`. --- guides/Dataset.md | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/guides/Dataset.md b/guides/Dataset.md index 11b4e5c..236898a 100644 --- a/guides/Dataset.md +++ b/guides/Dataset.md @@ -1051,7 +1051,7 @@ We recommend providing provenance information about data processing workflows, d - TODO: Create figure showing version relationsips -Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated. The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifer for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used. +Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated. The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifer for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used.
 {
@@ -1059,21 +1059,41 @@ Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisio
     "@vocab": "https://schema.org/",
     "prov": "http://www.w3.org/ns/prov#"
   },
-  "@id": "https://doi.org/10.xxxx/Dataset.v2",
+  "@id": "https://doi.org/10.xxxx/Dataset-2.v2",
   "@type": "Dataset",
   "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016",
-  "prov:wasRevisionOf": "https://doi.org/10.xxxx/Dataset.v1"
+  "prov:wasRevisionOf": "https://doi.org/10.xxxx/Dataset-2.v1"
   ...
 }
 
#### Indicating a source dataset: `schema:isBasedOn` and `prov:wasDerivedFrom` + +A derived Dataset is one in which the values in the data are somehow related or created from the values in one or more source datasets. For example, raw voltage values from a sensor might be recorded in a raw data file, which is then processed through calibration functions to produce a derived dataset with values in scientific units. Other examples of derived data include data that has been error corrected, gap-filled, or integrated with other sources. + +To indicate that a Dataset has been derived from a source Dataset, use the [`prov:wasDerivedFrom`](https://www.w3.org/TR/prov-o/#wasDerivedFrom) property. This indicates that the current `schema:Dataset` was created in whole or in part from content in the source Dataset, and therefore does not represent an independent set of measurements. The value of the `prov:wasDerivedFrom` should be the canonical IRI for the identifer for the source dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used. In addition, if a persistent identifier for a digital object within a Dataset is available, the `prov:wasDerivedFrom` may also be used to indicate that that digital object was derived from that particular source object, rather than the overall Dataset. This allows one to be more specific about the exact relationship between the source and derived data objects. + +In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn`](https://schema.org/isBasedOn) property, which should be considered to be an equivalent property to `prov:wasDerivedFrom`. For compatibility with schema.org, we recommend that producers use `schema:isBasedOn` in addition to or instead of `prov:wasDerivedFrom` to indicate derivation relationships. + - TODO: Create figure showing derivation relationsips -- [`schema:isBasedOn`](https://schema.org/isBasedOn). -- `PROV-O` (http://www.w3.org/ns/prov#) predicate: `prov:wasRevisionOf` -- `PROV-O` (http://www.w3.org/ns/prov#) predicate: including `prov:wasDerivedFrom` - TODO: Add example SO entry + +
+{
+  "@context": {
+    "@vocab": "https://schema.org/",
+    "prov": "http://www.w3.org/ns/prov#"
+  },
+  "@id": "https://doi.org/10.xxxx/Dataset-2.v2",
+  "@type": "Dataset",
+  "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016",
+  "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1.v1"
+  "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1.v1"
+  ...
+}
+
+ #### Indicating a software workflow or processing activity: `prov:used` and `prov:wasGeneratedBy` - [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it. From c8a9f1bf378f88fe5e4d524cd8f64e6843862c6e Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Mon, 27 Jul 2020 15:21:57 -0800 Subject: [PATCH 3/8] Add initial figures for the provenance section to the Dataset guide. --- .../diagrams/dataset/dataset_prov_derived.png | Bin 0 -> 9180 bytes .../diagrams/dataset/dataset_prov_program.png | Bin 0 -> 33085 bytes .../dataset/dataset_prov_revision.png | Bin 0 -> 7431 bytes guides/Dataset.md | 33 +++++++++--------- 4 files changed, 16 insertions(+), 17 deletions(-) create mode 100644 assets/diagrams/dataset/dataset_prov_derived.png create mode 100644 assets/diagrams/dataset/dataset_prov_program.png create mode 100644 assets/diagrams/dataset/dataset_prov_revision.png diff --git a/assets/diagrams/dataset/dataset_prov_derived.png b/assets/diagrams/dataset/dataset_prov_derived.png new file mode 100644 index 0000000000000000000000000000000000000000..7deecacc186916102eaac7bcb8ec7df12206da98 GIT binary patch literal 9180 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 DO8!;A literal 0 HcmV?d00001 diff --git a/assets/diagrams/dataset/dataset_prov_program.png b/assets/diagrams/dataset/dataset_prov_program.png new file mode 100644 index 0000000000000000000000000000000000000000..d98ddfdebe13afd9e919f3de24c2c5a56f6a6e34 GIT binary patch literal 33085 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

Xtz}C~!%M zqwXX}?Q4$K!GvbxQpdXkohO!lIW`dDv@x}3AFz8gg!{8|SfCagaJ~*B@)9`23qWs^ zJk%+VAv4t@Au>;!T%YfMC#;8+p%FCm-01uKxKr0D2s)8LULTLQL@{=@H+SEh{Zoyi z2j^&=a=Ack>y|SzqGgF`0K-FucpZDAFD(EhU`p`(9K`Z>>P%~>6T(bRi(8DNRYnB1 z#LHOpJceC{j0#qwZ6j@ zL3GDwvT@w0vc5GQX}O{mXHnH@x+AD~c3GU*1Y?#|-4;p+Dl?xx0$(^CHoqEc-X_JI zLq4q|T9o3b6k$ay=J)0y)S;K_%eR-tnv;T3b@BM98?<_&aZ+(JGDU;8K zBW})D1Q~2hWmPcf!@Fh|A7!&smjtx1MzvouXd@7~i91l@#WcWP8c_}bH2_@^XB~U~i?q_q~;cXy| z`1&QE%Cs@k#BCKTj%bMtHZ4DDtKfuG(zTLH>dG0@jS(102)%N-)juO_XWbXI`0+?s z=5;`N$ZU8#vTo{W0YUY>y7Y(GxZC1Yhrv#E7^5tSU%+U)j7Y(-s0sYy@N$R9gx@Es zFuG`~vZ?x`(bpyPv!n*~a_+ER%dRnZ&&ISY_Mmo zZ%#56NDl>@Tz$pKiRj!xqfxlg1}oKdg~x-H6QQRIp_ZtCvZ=C!R~y+RSkorV;BiQRX)yWHSDk11 zYvCk|#&795Vl$qJ`sE7B+7&LS&W57;cbNV8o zF&0FJ9jFcLo+Kpj>+_2IV&*3QbuL^G_dsLgYTHtJvVaE$BeS^ocfGuB_T0ed)8EqV zs)C^EjgstVbdqu_lae-l`7f{L#dj=wiIW_a6!a0pZ9_Q)J5xN&WZo!$E-;ar@+{nL ziMKurlb3LehBa;(!VmgP%c?GKMbe7e3@VDMs<%n+fCGEGpdxt#ib&KSQKNU|xIWuF z<>1^^b)5lp)Fuc(jn|3f%` z#+EE<$Ks1W9N_@{lW?xPF$p8UzW3@LB{|It2i^0D*><>!&bco45 ze*%&bUzqtE@b+IgCkv_mN2K;U75tZp_|8}Vvp)V4!V9GNzi8|Oj3`728w#KE{*I^h zh$nvl;djRf>6dF)&+jYH{SLH&U%AX8f_34rQ5zUK_v8SilvGu|76{nhh7Ikj4Rl3d zMgF4f@_Yr8MmST@ac zRM+_=0nyNlD%+}D8}OZKhOLJukMVx#e9Eh&Exa2k2+nCbjmB&q@b$R70 zYBvy7ux{>u#rp$54e_c|9Y{?-PY0aXj9xthPP+)M__HtCqd)4o2;{kT9 zwOeLN7^?J;sHR@y`FqbXU{nKA`JPTa#4}1c?d2VN6B*w!nYR%kH_zkO`U}} zHQXp_{$gs9m1^DO{fCk%kne3zsfhTqrp2 G6!Bj@_oRvd literal 0 HcmV?d00001 diff --git a/guides/Dataset.md b/guides/Dataset.md index 236898a..ef5030e 100644 --- a/guides/Dataset.md +++ b/guides/Dataset.md @@ -75,7 +75,7 @@ Back to [top](#top) ### Identifier -Adding the [schema:identifier](https://schema.org/identifier) field can be done in three ways - a text description, a URL, or by using the [schema:PropertyValue](https://schema.org/PropertyValue) field. +Adding the [schema:identifier](https://schema.org/identifier) field can be done in three ways - a text description, a URL, or by using the [schema:PropertyValue](https://schema.org/PropertyValue) field. ![Identifiers](/assets/diagrams/dataset/dataset_identifier.svg "Dataset - Identifier") @@ -86,7 +86,7 @@ Adding the [schema:identifier](https://schema.org/identifier) field can be done Most identifiers have these properties: -- a **value**, +- a **value**, - a **domain** or **scheme** (in which the value is guaranteed to be unique), - (optionally) a **resolvable URL** (where the thing being identified can be found), - (optionally) a **domain prefix** (a token string of characters succeeded by a colon ':' that represents the domain or scheme). @@ -99,11 +99,11 @@ For example, the Digital Object Identifier (DOI) for a dataset may be: doi:10.50 - **prefix**: `doi` **Q: Can't we just say the scheme is a 'DOI'?** -**A:** Yes, but there's a better way - a URI or URL. Because the we are publishing schema.org to express the explicit values of our content, we want to explicitly identify and classify our content such that harvesters can determine when our content appears elsewhere on the web. By detectinng these shared pieces content, we form the [Web of Data](https://www.w3.org/standards/semanticweb/data). +**A:** Yes, but there's a better way - a URI or URL. Because the we are publishing schema.org to express the explicit values of our content, we want to explicitly identify and classify our content such that harvesters can determine when our content appears elsewhere on the web. By detectinng these shared pieces content, we form the [Web of Data](https://www.w3.org/standards/semanticweb/data). -Because the **scheme** `Digital Object Identifier (DOI)` is described using unstructured text, we need a better way to explicitly state this value. Fortunately, [identifiers.org](https://registry.identifiers.org/registry) has registered URIs for almost 700 different identifier schemes which can be browsed at: [https://registry.identifiers.org/registry](https://registry.identifiers.org/registry). +Because the **scheme** `Digital Object Identifier (DOI)` is described using unstructured text, we need a better way to explicitly state this value. Fortunately, [identifiers.org](https://registry.identifiers.org/registry) has registered URIs for almost 700 different identifier schemes which can be browsed at: [https://registry.identifiers.org/registry](https://registry.identifiers.org/registry). -We can specify the **scheme** as being a DOI with this identifiers.org Registry URI: +We can specify the **scheme** as being a DOI with this identifiers.org Registry URI: [https://registry.identifiers.org/registry/doi](https://registry.identifiers.org/registry/doi) @@ -126,7 +126,7 @@ Looking at the available fields from [schema:PropertyValue](https://schema.org/P - https://www.sciencebase.gov/catalog/item/56b3e649e4b0cc79997fb5ec For these reasons, we recommend that any identifier having a known prefix value should be included in the value succeeded by a colon to form ':', or for this DOI: `doi:10.5066/F7VX0DMQ`. - + **Q: How do I know if an Identifier has a known prefix?** **A:** Each Identifier in the identifiers.org Registry that has a known prefix will be specified on the identifers.org registry page under the section called '**Identifier Schemes**' at the field labeled '**Prefix**'. @@ -155,7 +155,7 @@ An example of using [schema:PropertyValue](https://schema.org/PropertyValue) to } -Optionally, the `schema:name` field can be used to give this specific identifier a label such as "DOI: 10.5066/F7VX0DMQ" or "DOI 10.5066/F7VX0DMQ", but `schema:name` should never be used to simply say "DOI". +Optionally, the `schema:name` field can be used to give this specific identifier a label such as "DOI: 10.5066/F7VX0DMQ" or "DOI 10.5066/F7VX0DMQ", but `schema:name` should never be used to simply say "DOI".

 {
@@ -312,7 +312,7 @@ In it's most basic form, the variable as a [schema:PropertyValue](https://schema
 }
 
-If a URI is available that identifies the variable, it should be included as the +If a URI is available that identifies the variable, it should be included as the [PropertyID](https://schema.org/propertyID):
@@ -376,7 +376,7 @@ Back to [top](#top)
 
 While this schema.org record represents metadata about a Dataset, many providers will also have other metadata records that may be more complete or that conform to other metadata formats and vocabularies that might be useful. For example, repositories often contain detailed records in ISO TC 211 formats, [EML](https://eml.ecoinformatics.org), and other formats. Aggregators and other consumers can make use of this additional metadata if they are linked in a standardized way to the schema.org record.  We recommend that the location of the alternative forms of the metadata be provided using the [schema:subjectOf](https://schema.org/subjectOf) and [schema:about](https://schema.org/about) properties:
 
-Link metadata documents to a [schema:Dataset](https://schema.org/Dataset) by using [schema:subjectOf](https://schema.org/subjectOf). 
+Link metadata documents to a [schema:Dataset](https://schema.org/Dataset) by using [schema:subjectOf](https://schema.org/subjectOf).
     - Or if a schema.org snippet describes the metadata as the main resource, then link to the Dataset it describes using [schema:about](https://schema.org/about).
 
 These two approaches are equivalent, and which is used depends on the subject of the schema.org record.
@@ -384,7 +384,7 @@ These two approaches are equivalent, and which is used depends on the subject of
 ![Metadata](/assets/diagrams/dataset/dataset_metadata.svg "Dataset - Metadata")
 
 Once the linkage has been made, further details about the metadata can be provided. We recommend using [schema:encodingFormat](https://schema.org/encodingFormat) to indicate the metadata format/vocabulary to which the metadata record conforms.  If it conforms to multiple formats, or to a specific and general format types, multiple types can be listed.  
-We use the [schema:DataDownload](https://schema.org/DataDownload) class for Metadata files so that we can use the [schema:MediaObject](https://schema.org/MediaObject) properties for describing bytesize, encoding, etc. 
+We use the [schema:DataDownload](https://schema.org/DataDownload) class for Metadata files so that we can use the [schema:MediaObject](https://schema.org/MediaObject) properties for describing bytesize, encoding, etc.
 
 It can be useful to aggregators and other consumers to indicate when the metadata record was last modified using `schema:dateModified`, which can be used to optimize harvesting schedules for search indices and other applications.
 
@@ -1049,9 +1049,9 @@ We recommend providing provenance information about data processing workflows, d
 
 #### Indicating an earlier version: `prov:wasRevisionOf`
 
-- TODO: Create figure showing version relationsips
+![Prov_versions](/assets/diagrams/dataset/dataset_prov_revision.png "Dataset - Revisions")
 
-Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated.  The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifer for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used.
+Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated.  The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifier for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used.
 
 
 {
@@ -1075,9 +1075,7 @@ To indicate that a Dataset has been derived from a source Dataset, use the [`pro
 
 In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn`](https://schema.org/isBasedOn) property, which should be considered to be an equivalent property to `prov:wasDerivedFrom`. For compatibility with schema.org, we recommend that producers use `schema:isBasedOn` in addition to or instead of `prov:wasDerivedFrom` to indicate derivation relationships.
 
-- TODO: Create figure showing derivation relationsips
-- TODO: Add example SO entry
-
+![Prov_derived](/assets/diagrams/dataset/dataset_prov_derived.png "Dataset - Derivations")
 
 
 {
@@ -1096,9 +1094,10 @@ In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn
 
 #### Indicating a software workflow or processing activity: `prov:used` and `prov:wasGeneratedBy`
 
-- [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it. 
+![Prov_program](/assets/diagrams/dataset/dataset_prov_program.png "Dataset - Workflow")
+
+- [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it.
 
-- TODO: Figure showing software workflow
 - TODO: Add example SO entry
 
 Back to [top](#top)

From 48f6bfe4f9e1c4091c9df63e9309a546fa21f02d Mon Sep 17 00:00:00 2001
From: Matt Jones 
Date: Mon, 27 Jul 2020 15:29:34 -0800
Subject: [PATCH 4/8] Switch to SVG format for images.

---
 .../diagrams/dataset/dataset_prov_derived.png   | Bin 9180 -> 0 bytes
 .../diagrams/dataset/dataset_prov_derived.svg   |   1 +
 .../diagrams/dataset/dataset_prov_program.png   | Bin 33085 -> 0 bytes
 .../diagrams/dataset/dataset_prov_program.svg   |   1 +
 .../diagrams/dataset/dataset_prov_revision.png  | Bin 7431 -> 0 bytes
 .../diagrams/dataset/dataset_prov_revision.svg  |   1 +
 guides/Dataset.md                               |   6 +++---
 7 files changed, 6 insertions(+), 3 deletions(-)
 delete mode 100644 assets/diagrams/dataset/dataset_prov_derived.png
 create mode 100644 assets/diagrams/dataset/dataset_prov_derived.svg
 delete mode 100644 assets/diagrams/dataset/dataset_prov_program.png
 create mode 100644 assets/diagrams/dataset/dataset_prov_program.svg
 delete mode 100644 assets/diagrams/dataset/dataset_prov_revision.png
 create mode 100644 assets/diagrams/dataset/dataset_prov_revision.svg

diff --git a/assets/diagrams/dataset/dataset_prov_derived.png b/assets/diagrams/dataset/dataset_prov_derived.png
deleted file mode 100644
index 7deecacc186916102eaac7bcb8ec7df12206da98..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9180
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
DO8!;A

diff --git a/assets/diagrams/dataset/dataset_prov_derived.svg b/assets/diagrams/dataset/dataset_prov_derived.svg
new file mode 100644
index 0000000..2f9fb46
--- /dev/null
+++ b/assets/diagrams/dataset/dataset_prov_derived.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/diagrams/dataset/dataset_prov_program.png b/assets/diagrams/dataset/dataset_prov_program.png
deleted file mode 100644
index d98ddfdebe13afd9e919f3de24c2c5a56f6a6e34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 33085
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
\ No newline at end of file
diff --git a/assets/diagrams/dataset/dataset_prov_revision.png b/assets/diagrams/dataset/dataset_prov_revision.png
deleted file mode 100644
index eb5d95bdcfadcbc2a623f1aa0eb85b363f057449..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7431
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

Xtz}C~!%M zqwXX}?Q4$K!GvbxQpdXkohO!lIW`dDv@x}3AFz8gg!{8|SfCagaJ~*B@)9`23qWs^ zJk%+VAv4t@Au>;!T%YfMC#;8+p%FCm-01uKxKr0D2s)8LULTLQL@{=@H+SEh{Zoyi z2j^&=a=Ack>y|SzqGgF`0K-FucpZDAFD(EhU`p`(9K`Z>>P%~>6T(bRi(8DNRYnB1 z#LHOpJceC{j0#qwZ6j@ zL3GDwvT@w0vc5GQX}O{mXHnH@x+AD~c3GU*1Y?#|-4;p+Dl?xx0$(^CHoqEc-X_JI zLq4q|T9o3b6k$ay=J)0y)S;K_%eR-tnv;T3b@BM98?<_&aZ+(JGDU;8K zBW})D1Q~2hWmPcf!@Fh|A7!&smjtx1MzvouXd@7~i91l@#WcWP8c_}bH2_@^XB~U~i?q_q~;cXy| z`1&QE%Cs@k#BCKTj%bMtHZ4DDtKfuG(zTLH>dG0@jS(102)%N-)juO_XWbXI`0+?s z=5;`N$ZU8#vTo{W0YUY>y7Y(GxZC1Yhrv#E7^5tSU%+U)j7Y(-s0sYy@N$R9gx@Es zFuG`~vZ?x`(bpyPv!n*~a_+ER%dRnZ&&ISY_Mmo zZ%#56NDl>@Tz$pKiRj!xqfxlg1}oKdg~x-H6QQRIp_ZtCvZ=C!R~y+RSkorV;BiQRX)yWHSDk11 zYvCk|#&795Vl$qJ`sE7B+7&LS&W57;cbNV8o zF&0FJ9jFcLo+Kpj>+_2IV&*3QbuL^G_dsLgYTHtJvVaE$BeS^ocfGuB_T0ed)8EqV zs)C^EjgstVbdqu_lae-l`7f{L#dj=wiIW_a6!a0pZ9_Q)J5xN&WZo!$E-;ar@+{nL ziMKurlb3LehBa;(!VmgP%c?GKMbe7e3@VDMs<%n+fCGEGpdxt#ib&KSQKNU|xIWuF z<>1^^b)5lp)Fuc(jn|3f%` z#+EE<$Ks1W9N_@{lW?xPF$p8UzW3@LB{|It2i^0D*><>!&bco45 ze*%&bUzqtE@b+IgCkv_mN2K;U75tZp_|8}Vvp)V4!V9GNzi8|Oj3`728w#KE{*I^h zh$nvl;djRf>6dF)&+jYH{SLH&U%AX8f_34rQ5zUK_v8SilvGu|76{nhh7Ikj4Rl3d zMgF4f@_Yr8MmST@ac zRM+_=0nyNlD%+}D8}OZKhOLJukMVx#e9Eh&Exa2k2+nCbjmB&q@b$R70 zYBvy7ux{>u#rp$54e_c|9Y{?-PY0aXj9xthPP+)M__HtCqd)4o2;{kT9 zwOeLN7^?J;sHR@y`FqbXU{nKA`JPTa#4}1c?d2VN6B*w!nYR%kH_zkO`U}} zHQXp_{$gs9m1^DO{fCk%kne3zsfhTqrp2 G6!Bj@_oRvd diff --git a/assets/diagrams/dataset/dataset_prov_revision.svg b/assets/diagrams/dataset/dataset_prov_revision.svg new file mode 100644 index 0000000..dc7aba9 --- /dev/null +++ b/assets/diagrams/dataset/dataset_prov_revision.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/guides/Dataset.md b/guides/Dataset.md index ef5030e..34826a0 100644 --- a/guides/Dataset.md +++ b/guides/Dataset.md @@ -1049,7 +1049,7 @@ We recommend providing provenance information about data processing workflows, d #### Indicating an earlier version: `prov:wasRevisionOf` -![Prov_versions](/assets/diagrams/dataset/dataset_prov_revision.png "Dataset - Revisions") +![Prov_versions](/assets/diagrams/dataset/dataset_prov_revision.svg "Dataset - Revisions") Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated. The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifier for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used. @@ -1075,7 +1075,7 @@ To indicate that a Dataset has been derived from a source Dataset, use the [`pro In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn`](https://schema.org/isBasedOn) property, which should be considered to be an equivalent property to `prov:wasDerivedFrom`. For compatibility with schema.org, we recommend that producers use `schema:isBasedOn` in addition to or instead of `prov:wasDerivedFrom` to indicate derivation relationships. -![Prov_derived](/assets/diagrams/dataset/dataset_prov_derived.png "Dataset - Derivations") +![Prov_derived](/assets/diagrams/dataset/dataset_prov_derived.svg "Dataset - Derivations")

 {
@@ -1094,7 +1094,7 @@ In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn
 
 #### Indicating a software workflow or processing activity: `prov:used` and `prov:wasGeneratedBy`
 
-![Prov_program](/assets/diagrams/dataset/dataset_prov_program.png "Dataset - Workflow")
+![Prov_program](/assets/diagrams/dataset/dataset_prov_program.svg "Dataset - Workflow")
 
 - [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it.
 

From 2464ef98d228ecb2b7ad30044dacda8a395e8a04 Mon Sep 17 00:00:00 2001
From: Matt Jones 
Date: Mon, 27 Jul 2020 16:55:59 -0800
Subject: [PATCH 5/8] Add software workflow provenance section and diagram.

---
 .../diagrams/dataset/dataset_prov_program.svg |  2 +-
 guides/Dataset.md                             | 41 ++++++++++++++-----
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/assets/diagrams/dataset/dataset_prov_program.svg b/assets/diagrams/dataset/dataset_prov_program.svg
index d0346e6..299229e 100644
--- a/assets/diagrams/dataset/dataset_prov_program.svg
+++ b/assets/diagrams/dataset/dataset_prov_program.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/guides/Dataset.md b/guides/Dataset.md
index 34826a0..48f8ac9 100644
--- a/guides/Dataset.md
+++ b/guides/Dataset.md
@@ -1041,9 +1041,9 @@ Back to [top](#top)
 
 ### Provenance Relationships
 
-High level relationships that link datasets based on their processing workflows and versioning relationships are critical for data consumers and search engines to link different versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software and activities that created these derived datasets.
+High level relationships that link datasets based on their processing workflows and versioning relationships are critical for data consumers and search engines to link different versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software and activities that created these derived datasets for reproducibility. Collectively, this is provenance information.
 
-The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of information, and should be used within Dataset descriptions, as most of the necessary provenance properties are missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates for consumers that might only be looking for one or the other. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom` for consistency.
+The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of provenance information, and should be used within Dataset descriptions, as most of the necessary provenance properties are currently missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates for consumers that might only be looking for one or the other. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom` for consistency.
 
 We recommend providing provenance information about data processing workflows, data derivation relationships, and versioning information using PROV-O and schema.org predicates, and describe the structures to do this in the following subsections. Aggregators and search systems should use these properties to cluster and cross-link versions of Datasets, and to provide bi-directional linkages to source and derived data products.
 
@@ -1051,7 +1051,7 @@ We recommend providing provenance information about data processing workflows, d
 
 ![Prov_versions](/assets/diagrams/dataset/dataset_prov_revision.svg "Dataset - Revisions")
 
-Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated.  The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifier for the dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used.
+Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisionOf`](https://www.w3.org/TR/prov-o/#wasRevisionOf) property. This indicates that the current `schema:Dataset` replaces or obsoletes the source Dataset indicated.  The value of the `prov:wasRevisionOf` should be the canonical IRI for the identifier for the original dataset, preferably to a persistently resolvable IRI such as as a DOI, but other persistent identifiers for the dataset can be used.
 
 
 {
@@ -1063,7 +1063,6 @@ Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisio
   "@type": "Dataset",
   "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016",
   "prov:wasRevisionOf": "https://doi.org/10.xxxx/Dataset-2.v1"
-  ...
 }
 
@@ -1083,22 +1082,44 @@ In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn "@vocab": "https://schema.org/", "prov": "http://www.w3.org/ns/prov#" }, - "@id": "https://doi.org/10.xxxx/Dataset-2.v2", + "@id": "https://doi.org/10.xxxx/Dataset-2", "@type": "Dataset", "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016", - "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1.v1" - "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1.v1" - ... + "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1", + "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1" }
#### Indicating a software workflow or processing activity: `prov:used` and `prov:wasGeneratedBy` +Frequently data are processed to create derived Datasets or other products using software programs that use some source data, transform it in various ways, and create the derived products. Understanding these software workflows promotes understanding of the products, and facilitates reproducibility. Describing a software workflow is really just a mechanism to provide more detail about how derived products were created when software was executed. The [ProvONE](https://purl.dataone.org/provone-v1-dev) vocabulary extends PROV to define a specific concept for an execution event (`provone:Execution`) during which a software program (`provone:Program`) is executed. During this execution, the software can use source data (`prov:used`) and generate outputs (`prov:wasGeneratedBy`), which then can be inferred to have been derived from the source data. + ![Prov_program](/assets/diagrams/dataset/dataset_prov_program.svg "Dataset - Workflow") -- [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` classes that result in derived products. This enables specification of a full software workflow, potentially in multiple steps, in which the execution of a `provone:Program` uses one or more `schema:Dataset`s as source data, and generates one or more `schema:Datasets` as derived outputs (which can be linked with `prov:wasDerivedFrom` as described above). The `prov:used` predicate links the source data to the `provone:Program` that used it, and the `prov:wasGeneratedBy` links the derived data to that same program that generated it. +Any portion of the software workflow can be described to increase information about derived datasets. For example, use `prov:used` to link an execution to one or more source datasets, and use `prov:wasGeneratedBy` to link an execution to one or more derived products. When information about the execution event itself is known, use `provone:Execution` to describe that event, and link it to the source and derived products, as well as the program. The program is often a software script that is itself dereferenceable, and may be part of the archived Dataset itself if it has an accessible IRI. + +
+{
+  "@context": {
+    "@vocab": "https://schema.org/",
+    "prov": "http://www.w3.org/ns/prov#",
+    "provone": "http://purl.dataone.org/provone/2015/01/15/ontology#"
+  },
+  "@id": "https://doi.org/10.xxxx/Dataset-2",
+  "@type": "Dataset",
+  "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016",
+  "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1",
+  "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1",
+  "prov:wasGeneratedBy": 
+      {
+        "@id": "https://example.org/executions/execution-42",
+        "@type": "provone:Execution",
+        "prov:hadPlan": "https://somerepository.org/datasets/10.xxxx/Dataset-2.v2/process-script.R",
+        "prov:used": "https://doi.org/10.xxxx/Dataset-1"
+      }
+}
+
-- TODO: Add example SO entry Back to [top](#top) From ef40ae295e68800896c2b3db438588178a15bca7 Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Thu, 21 Jan 2021 19:03:19 -0900 Subject: [PATCH 6/8] Add provenance example to full.jsonld. --- examples/dataset/full.jsonld | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/dataset/full.jsonld b/examples/dataset/full.jsonld index a4ba4eb..42600ea 100644 --- a/examples/dataset/full.jsonld +++ b/examples/dataset/full.jsonld @@ -1,6 +1,8 @@ { "@context": { - "@vocab": "https://schema.org/" + "@vocab": "https://schema.org/", + "prov": "http://www.w3.org/ns/prov#", + "provone": "http://purl.dataone.org/provone/2015/01/15/ontology#" }, "@id": "http://lod.example-data-repository.org/id/dataset/3300", "identifier": { @@ -210,5 +212,13 @@ } ] } - ] + ], + "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1", + "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1", + "prov:wasGeneratedBy": { + "@id": "https://example.org/executions/execution-42", + "@type": "provone:Execution", + "prov:hadPlan": "https://somerepository.org/datasets/10.xxxx/Dataset-2.v2/process-script.R", + "prov:used": "https://doi.org/10.xxxx/Dataset-1" + } } From fbd5b93fbf632eb00ae7cddec6da2020067fa5fa Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Thu, 21 Jan 2021 20:35:08 -0900 Subject: [PATCH 7/8] Updated provenace ADR to Accepted. --- decisions/72-provenance.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/decisions/72-provenance.md b/decisions/72-provenance.md index 70e02fe..45309e7 100644 --- a/decisions/72-provenance.md +++ b/decisions/72-provenance.md @@ -3,20 +3,19 @@ Discussion: https://github.com/ESIPFed/science-on-schema.org/issues/72 ## Status ## -_Pick one of:_ Proposed, Accepted, Rejected, Deprecated, Superseded -Proposed +__Accepted__ ## Decision ## -Provide provenance information about data processing workflows, data derivation relationships, and versioning information using PROV-O and schema.org predicates. +Provide provenance information about data processing workflows, data derivation relationships, and versioning information using PROV-O, ProvONE, and schema.org predicates. - [`schema:isBasedOn`](https://schema.org/isBasedOn). - `PROV-O` namespace (http://www.w3.org/ns/prov#) predicates, including `prov:wasDerivedFrom`, `prov:wasRevisionOf`, `prov:used`, and `prov:generatedBy` - [ProvONE](https://purl.dataone.org/provone-v1-dev), which specializes PROV for reproducible software workflows, can be used to specify `provone:Program` and `provone:Execution` that create derived products ## Context ## -High level relationships that link datasets based on their processing workflows and versioning relationships are critical for consumers to differentiate versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software that created these derived Datasets. The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of information, and should be used within Dataset descriptions, as most relevant properties are missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom`. +High level relationships that link datasets based on their processing workflows and versioning relationships are critical for consumers to differentiate versions of a [schema:Dataset](https://schema.org/Dataset), to clarify when a dataset is derived from one or more source Datasets, and to specify linkages to the software that created these derived Datasets. The [PROV-O](https://www.w3.org/TR/prov-o/) recommendation provides the widely-adopted vocabulary for representing this type of information, and should be used within Dataset descriptions, as most relevant properties are missing from schema.org. The main exception is [`schema:isBasedOn`](https://schema.org/isBasedOn), which provides a predicate for indicating that a Dataset was derived from one or more source Datasets. Producers and consumers should interpret `schema:isBasedOn` to be an equivalent property to `prov:wasDerivedFrom` (in the `owl:equivalentProperty` sense). Either is acceptable for representing derivation relationships, but there is utility in expressing the relationship with both predicates. When other `PROV` predicates are used, it is preferred to use `prov:wasDerivedFrom`. Workflow relationships among processing software and both source and derived data files shoudl be described with `prov:used` and `prov:generatedBy` predicates, and by using workflow classes from ProvONE. ## Consequences ## From 2bd9eb64f4ce63a89185689d4b69547a637a2c91 Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Wed, 27 Jan 2021 13:25:32 -0900 Subject: [PATCH 8/8] Incorporate `@id` into provenance statements to be LOD compliant. --- examples/dataset/full.jsonld | 6 +++--- guides/Dataset.md | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/dataset/full.jsonld b/examples/dataset/full.jsonld index 42600ea..52ff2ad 100644 --- a/examples/dataset/full.jsonld +++ b/examples/dataset/full.jsonld @@ -213,12 +213,12 @@ ] } ], - "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1", - "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1", + "prov:wasDerivedFrom": {"@id": "https://doi.org/10.xxxx/Dataset-1"}, + "schema:isBasedOn": {"@id": "https://doi.org/10.xxxx/Dataset-1"}, "prov:wasGeneratedBy": { "@id": "https://example.org/executions/execution-42", "@type": "provone:Execution", "prov:hadPlan": "https://somerepository.org/datasets/10.xxxx/Dataset-2.v2/process-script.R", - "prov:used": "https://doi.org/10.xxxx/Dataset-1" + "prov:used": {"@id": "https://doi.org/10.xxxx/Dataset-1"} } } diff --git a/guides/Dataset.md b/guides/Dataset.md index 947c779..3e077a2 100644 --- a/guides/Dataset.md +++ b/guides/Dataset.md @@ -1100,7 +1100,7 @@ Link a Dataset to a prior version that it replaces by adding a [`prov:wasRevisio "@id": "https://doi.org/10.xxxx/Dataset-2.v2", "@type": "Dataset", "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016", - "prov:wasRevisionOf": "https://doi.org/10.xxxx/Dataset-2.v1" + "prov:wasRevisionOf": { "@id": "https://doi.org/10.xxxx/Dataset-2.v1" } }
@@ -1123,8 +1123,8 @@ In addition to `prov:wasDerivedFrom`, schema.org provides the [`schema:isBasedOn "@id": "https://doi.org/10.xxxx/Dataset-2", "@type": "Dataset", "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016", - "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1", - "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1" + "prov:wasDerivedFrom": { "@id": "https://doi.org/10.xxxx/Dataset-1" }, + "schema:isBasedOn": { "@id": "https://doi.org/10.xxxx/Dataset-1" } }
@@ -1146,14 +1146,14 @@ Any portion of the software workflow can be described to increase information ab "@id": "https://doi.org/10.xxxx/Dataset-2", "@type": "Dataset", "name": "Removal of organic carbon by natural bacterioplankton communities as a function of pCO2 from laboratory experiments between 2012 and 2016", - "prov:wasDerivedFrom": "https://doi.org/10.xxxx/Dataset-1", - "schema:isBasedOn": "https://doi.org/10.xxxx/Dataset-1", + "prov:wasDerivedFrom": { "@id": "https://doi.org/10.xxxx/Dataset-1" }, + "schema:isBasedOn": { "@id": "https://doi.org/10.xxxx/Dataset-1" }, "prov:wasGeneratedBy": { "@id": "https://example.org/executions/execution-42", "@type": "provone:Execution", "prov:hadPlan": "https://somerepository.org/datasets/10.xxxx/Dataset-2.v2/process-script.R", - "prov:used": "https://doi.org/10.xxxx/Dataset-1" + "prov:used": { "@id": "https://doi.org/10.xxxx/Dataset-1" } } }