Skip to content

Commit

Permalink
fix: Processed OMG ontology feedback (#58)
Browse files Browse the repository at this point in the history
* Initial changes in response to 2nd OMG AB feedback

* Second set of changes in response to OMG AB comments

* Additional note

* Further changes for consistency; use dprod-shapes

* Minor changes in response to PR comments

* Replace remaining uses of DPROD as a Vocabulary with Ontology

* fix(ontology): added `http://schema.org` namespace in order to support `sdo:affiliation`

* fix(build): added `dist/` dir to `.gitignore`

* fix(print): showing wrapped examples in printed PDF and shows links in examples

* fix(build): spec-generator code recreates dist directory

* fix(author): removed mikeb at his request

* fix(example): reformatted some examples and made more turtle compliant

* fix(404s): generate small HTML files for each class and property to avoid 404

* fix(generator): generator first removes then recreates `dist` directory

* fix(shacl): all references to shapes done in `dprod-shapes:` namespace

* fix(shacl): all references to shapes done in `dprod-shapes:` namespace

* fix(dublic-core): using dct:description no longer dc:description

* fix(pdf): wide format supported, wrapped examples

* fix(respec): temporary fix respec errors wrt missing references

---------

Co-authored-by: Pete Rivett <pete.rivett@federatedknowledge.com>
  • Loading branch information
jgeluk and rivettp authored Sep 3, 2024
1 parent 7b92f9a commit a3bb783
Show file tree
Hide file tree
Showing 7 changed files with 734 additions and 402 deletions.
4 changes: 4 additions & 0 deletions DPROD.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
220 changes: 220 additions & 0 deletions DPROD.drawio.xml

Large diffs are not rendered by default.

449 changes: 211 additions & 238 deletions ontology/dprod/dprod-dcatprofile.ttl

Large diffs are not rendered by default.

211 changes: 75 additions & 136 deletions ontology/dprod/dprod-ontology.ttl
Original file line number Diff line number Diff line change
@@ -1,160 +1,95 @@
# baseURI: https://ekgf.github.io/dprod/
# imports: http://purl.org/dc/terms/
# imports: http://www.w3.org/2004/02/skos/core
# imports: http://www.w3.org/ns/prov-o#
# imports: http://www.w3.org/ns/dcat
# imports: http://www.w3.org/ns/dcat#
# prefix: dprod


@base <https://ekgf.github.io/dprod/> .
@prefix dprod: <https://ekgf.github.io/dprod/> .
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dctype: <http://purl.org/dc/dcmitype/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix odrl: <http://www.w3.org/ns/odrl/2/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sdo: <http://schema.org/> .

# Since Dublin Core is not an ontology, declare here that the properties used are to be treated as AnnotationProperties in OWL
dct:description a owl:AnnotationProperty .
dct:contributor a owl:AnnotationProperty .
dct:license a owl:AnnotationProperty .
dct:modified a owl:AnnotationProperty .

dprod:
a owl:Ontology ;
rdfs:label "Data Product Vocabulary"@en ;
dc:description "DPROD is an RDF vocabulary designed to facilitate interoperability between data product descriptors." ;
dct:title "The Data Product (DPROD) Ontology"@en ;
rdfs:label "DPROD ontology"@en ;
dct:description "DPROD extends DCAT to enable publishers to describe Data Products and data services in a decentralized way."@en ;
rdfs:comment
"This vocabulary includes terms for the definition of the data product as defined from the Data Product Working Group. The vocabulary utilises the notion of Datasets as defined from DCAT vocabulary"@en ;
owl:imports <http://purl.org/dc/terms/> ;
owl:imports <http://www.w3.org/2004/02/skos/core> ;
owl:imports <http://www.w3.org/ns/prov-o#> ;
owl:imports <http://www.w3.org/ns/dcat> ;
dct:creator
[
a foaf:Person ;
foaf:name "Natasa Varytimou" ;
sdo:affiliation
[
foaf:homepage <https://ubs.com> ;
foaf:name "UBS" ;
] ;
] ;
dct:contributor
[
a foaf:Person ;
foaf:name "Pete Rivett" ;
foaf:homepage <https://www.linkedin.com/in/peterivett/> ;
] ;
dct:contributor
[
a foaf:Person ;
foaf:homepage <https://www.linkedin.com/in/jgeluk/> ;
sdo:affiliation
[
foaf:homepage <https://agnos.ai> ;
foaf:name "agnos.ai" ;
] ;
foaf:name "Jacobus Geluk" ;
] ;
dct:contributor
[
a foaf:Person ;
sdo:affiliation
[
foaf:homepage <https://eccenca.com> ;
foaf:name "eccenca GmbH" ;
] ;
foaf:name "Marcel Fröhlich" ;
] ;
dct:contributor
[
a foaf:Person ;
sdo:affiliation
[
foaf:homepage <https://brox.de> ;
foaf:name "Brox IT-Solutions GmbH"
] ;
foaf:name "Matthias Jurisch" ;
] ;

"The ontology utilizes the notion of Datasets as defined from DCAT vocabulary."@en ;
rdfs:comment "DPROD is an OWL ontology designed to facilitate interoperability between data product descriptors."@en ;
dct:license <https://creativecommons.org/licenses/by/4.0/> ;
dct:modified "2023-07-07"^^xsd:date ;
rdfs:comment "DPROD is an RDF vocabulary designed to facilitate interoperability between data product descriptors."@en ;
rdfs:label "The data product vocabulary"@en ;
owl:imports dct: ;
owl:imports <http://www.w3.org/2004/02/skos/core> ;
owl:imports <http://www.w3.org/ns/prov-o#> ;
dct:modified "2024-08-31"^^xsd:date ;
dct:publisher <https://www.omg.org/> ;
dct:contributor <https://www.linkedin.com/in/natasavaritimou/> ;
dct:contributor <https://www.linkedin.com/in/peterivett/> ;
dct:contributor <https://www.linkedin.com/in/jgeluk/> ;
dct:contributor <https://www.linkedin.com/in/marcel-fr%C3%B6hlich-648a043/> ;
dct:contributor <https://www.linkedin.com/in/matthias-jurisch/> ;
dct:contributor <https://www.linkedin.com/in/tonyseale/> ;
owl:imports <http://www.w3.org/ns/dcat#> ;
owl:versionInfo "Create the Data Product Ontology based on input and output DCAT datasets"@en ;
foaf:maker
[
foaf:homepage <http://www.ekgf.org/> ;
foaf:name "Enterprise Knowledge Graph Foundation" ;
] ;
owl:versionInfo "OMG Request For Comments Errata 2" ;
.


############################# DPROD Classes #########################

dprod:DataProduct
a owl:Class, rdfs:Class ;
dc:description
"A data product is a rational, managed, and governed collection of data, with purpose, value and ownership, meeting consumer needs over a planned life-cycle."@en ;
dct:description
"A rational, managed, and governed collection of data, with purpose, value and ownership, meeting consumer needs over a planned life-cycle."@en ;
rdfs:comment "A data product may have input and output ports, code and metadata"@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Data Product" ;
rdfs:label "data product" ;
rdfs:subClassOf dcat:Resource ;
.

dprod:DataProductLifecycleStatus
a owl:Class, rdfs:Class ;
dc:description
"The lifecycle status of the data product taken from a control list ( Ideation, Design, Build, Deploy, Consume )."@en ;
rdfs:comment "The lifecycle of the data product as defined from EDM Council CDMC"@en ;
dct:description
"The development status of the data product taken from a controlled list (e.g. Ideation, Design, Build, Deploy, Consume)."@en ;
rdfs:comment "The lifecycle of the data product as defined by EDM Council CDMC"@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Data Product Lifecycle Status" ;
rdfs:label "data product lifecycle status" ;
rdfs:subClassOf dprod:Enumeration ;
rdfs:seeAlso <https://edmcouncil.org/wp-content/uploads/2024/03/EDMWebinar_DPSIG_04-30-Presentation.pdf#page=7> ;
.

dprod:InformationSensitivityClassification
a owl:Class, rdfs:Class ;
rdfs:label "Information Sensitivity Classification" ;
dc:description
"A taxonomy of concepts that classifies the information within a dataset that indicates the level of control and protection that must be applied to the dataset."@en ;
rdfs:label "information sensitivity classification" ;
dct:description
"A classification of the information within a dataset to indicate the level of control and protection that must be applied."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:seeAlso <https://spec.edmcouncil.org/cdmc/ontology/Classification/InformationSensitivity> ;
.

dprod:Enumeration
a owl:Class, rdfs:Class ;
dc:description "The superclass of enumeration lists referenced from data product related artifacts."@en ;
dct:description "The superclass of enumeration lists referenced from data product related artifacts."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Enumeration" ;
rdfs:label "enumeration" ;
.

dprod:Protocol
a owl:Class, rdfs:Class ;
dc:description "A protocol, possibly including a specific version, used for communicating with a service."@en ;
dct:description "A detailed specification, possibly including a specific version, for how to communicate with a service."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Protocol" ;
rdfs:label "protocol" ;
.

dprod:SecuritySchemaType
a owl:Class, rdfs:Class ;
dc:description "A security schema type used for authentication and communication."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Security Schema Type" ;
.

dprod:Protocol
a owl:Class, rdfs:Class ;
dc:description "A protocol, possibly including a specific version, used for communicating with a service."@en ;
dct:description "A classification encompassing a set of rules used for authentication and communication."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:label "Protocol" ;
rdfs:label "security schema type" ;
.


Expand All @@ -166,10 +101,10 @@ dprod:dataProductOwner
# a rdfs:subPropertyOf prov:wasAttributedTo ; # in line with DCAT
rdfs:isDefinedBy dprod: ;
rdfs:domain dprod:DataProduct ;
rdfs:range foaf:Agent ;
dc:description
"The agent that is overall accountable for the data product. This includes managing the data product along its lifecycle ( creation, usage, versioning, deletion)."@en ;
rdfs:label "dataProductowner" ;
rdfs:range prov:Agent ;
dct:description
"The agent that is accountable overall for the data product, including managing it through its lifecycle."@en ;
rdfs:label "data product owner" ;
.

dprod:lifecycleStatus
Expand All @@ -178,109 +113,113 @@ dprod:lifecycleStatus
rdfs:isDefinedBy dprod: ;
rdfs:domain dprod:DataProduct ;
rdfs:range dprod:DataProductLifecycleStatus ;
dc:description
"The lifecycle status of the data product taken from a control list ( Ideation, Design, Build, Deploy, Consume ). "@en ;
rdfs:label "lifecycleStatus" ;
dct:description
"The development status of the data product. "@en ;
rdfs:label "lifecycle status" ;
.

dprod:informationSensitivityClassification
a rdfs:Property, owl:ObjectProperty ;
dc:description
dct:description
"More granular classification that indicates the level of control and protection that must be applied to the asset due to the nature of the data and its sensitivity or importance to the organization."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dcat:Dataset ;
rdfs:range dprod:InformationSensitiviyClassification ;
rdfs:label "information Sensitivity Classification" ;
rdfs:range dprod:InformationSensitivityClassification ;
rdfs:label "information sensitivity classification" ;
.

dprod:purpose
a rdfs:Property, owl:DatatypeProperty ;
dc:description "A description of the objectives and intended usage of the data product."@en ;
dct:description "A description of the objectives and intended usage of the data product."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dprod:DataProduct ;
rdfs:range xsd:string ;
rdfs:label "purpose" ;
.

dprod:domain
a rdfs:Property, owl:ObjectProperty ;
dc:description "The business or information area supported by the data product."@en ;
dct:description "The business or information area supported by the data product."@en ;
rdfs:comment
"The domain is intended to be a resource in its own right. This specification does not constrain the class to be used."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dprod:DataProduct ;
rdfs:label "domain" ;
.

dprod:inputPort
a rdfs:Property, owl:objectProperty ;
a rdfs:Property, owl:ObjectProperty ;
rdfs:domain dprod:DataProduct ;
rdfs:range dcat:DataService ;
rdfs:isDefinedBy dprod: ;
dc:description
"An input port describes a set of services exposed by a data product to collect its source data and makes it available for further internal transformation. An input port can receive data from one or more upstream sources in a push (i.e. asynchronous subscription) or pop mode (i.e. synchronous query). Each data product may have one or more input ports."@en ;
rdfs:label "inputPort" ;
dct:description
"A set of services exposed by a data product to collect its source data and makes it available for further internal transformation. An input port can receive data from one or more upstream sources in a push (i.e. asynchronous subscription) or pop mode (i.e. synchronous query). Each data product may have one or more input ports."@en ;
rdfs:label "input port" ;
.

dprod:outputPort
a rdfs:Property, owl:objectProperty ;
a rdfs:Property, owl:ObjectProperty ;
rdfs:domain dprod:DataProduct ;
rdfs:range dcat:DataService ;
rdfs:isDefinedBy dprod: ;
dc:description
"An output port describes a set of services exposed by a data product to share the generated data in a way that can be understood and trusted."@en ;
rdfs:label "outputPort" ;
dct:description
"A set of services exposed by a data product to share the generated data in a way that can be understood and trusted."@en ;
rdfs:label "output port" ;
.

dprod:inputDataset
a rdfs:Property, owl:objectProperty ;
a rdfs:Property, owl:ObjectProperty ;
rdfs:domain dprod:DataProduct ;
rdfs:range dcat:Dataset ;
rdfs:isDefinedBy dprod: ;
dc:description
dct:description
"The source data made available to the data product through input data services. Depending on the lifecycle of the data product, this may be a stated or inferred relationship aligned with the input ports."@en ;
rdfs:label "input Dataset" ;
rdfs:label "input dataset" ;
.

dprod:outputDataset
a rdfs:Property, owl:objectProperty ;
a rdfs:Property, owl:ObjectProperty ;
rdfs:domain dprod:DataProduct ;
rdfs:range dcat:Dataset ;
rdfs:isDefinedBy dprod: ;
dc:description
dct:description
"The data that is exposed by the data product through output data services in a way that can be understood and trusted. Depending on the lifecycle of the data product, this may be a stated or inferred relationship aligned with the output ports."@en ;
rdfs:label "output Dataset" ;
rdfs:label "output dataset" ;
.

dprod:isDistributionOf
a rdfs:Property, owl:objectProperty ;
a rdfs:Property, owl:ObjectProperty ;
owl:inverseOf dcat:distribution ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dcat:Distribution ;
dc:description "The dataset that this distribution makes available."@en ;
rdfs:label "isDistributionOf" ;
dct:description "The dataset that this distribution makes available."@en ;
rdfs:label "is distribution of" ;
.

dprod:isAccessServiceOf
a rdfs:Property, owl:ObjectProperty ;
dc:description "The dataset distribution that is being offered through this Data Service."@en ;
dct:description "The dataset distribution that is being offered through this data service."@en ;
rdfs:isDefinedBy dprod: ;
owl:inverseOf dcat:accessService ;
rdfs:domain dcat:DataService ;
rdfs:range dcat:Distribution ;
rdfs:label "is Access Service Of" ;
rdfs:label "is access service of" ;
.

dprod:protocol
a rdfs:Property, owl:ObjectProperty ;
dc:description "A protocol (possibly one of many options) used to communicate with this Data Service."@en ;
dct:description "A protocol (possibly one of many options) used to communicate with this data service."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dcat:DataService ;
# rdfs:range rdf:resource ; # better let user decide whether they want Protocol class or own class or skos
rdfs:label "protocol" ;
.

dprod:securitySchemaType
a rdfs:Property, owl:ObjectProperty ;
dc:description "The security schema type used for authentication and communication with this Data Service."@en ;
dct:description "The security schema type used for authentication and communication with this Data Service."@en ;
rdfs:isDefinedBy dprod: ;
rdfs:domain dcat:DataService ;
# rdfs:range rdf:resource ; # better let user decide whether they want SecuritySchemaType class or own class or skos
rdf:label "security schema type" ;
.
18 changes: 9 additions & 9 deletions ontology/dprod/dprod-redundant.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ dprod:DataProductShape
dc:description "The shape of the Data Product. A data product is a rational, managed, and governed collection of data, with purpose, value and ownership, meeting consumer needs over a planned life-cycle."@en ;
rdfs:isDefinedBy dprod:;
sh:targetClass dprod:DataProduct;
sh:property dprod:DataProduct-dataProductOwner;
sh:property dprod:DataProduct-domain;
sh:property dprod:DataProduct-inputPort;
sh:property dprod:DataProduct-outputPort;
sh:property dprod:DataProduct-purpose;
sh:property dprod:DataProduct-productionProcessDescription;
sh:property dprod-shapes:DataProduct-dataProductOwner;
sh:property dprod-shapes:DataProduct-domain;
sh:property dprod-shapes:DataProduct-inputPort;
sh:property dprod-shapes:DataProduct-outputPort;
sh:property dprod-shapes:DataProduct-purpose;
sh:property dprod-shapes:DataProduct-productionProcessDescription;
.

dprod:DataServiceShape
Expand All @@ -159,9 +159,9 @@ dprod:DataServiceShape
dc:description "The shape of the DCAT Data Service as used in the DPROD vocabulary. "@en ;
rdfs:isDefinedBy dprod:;
sh:targetClass dcat:DataService;
sh:property dprod:DataService-isAccessServiceOf ;
sh:property dprod:DataService-protocol ;
sh:property dprod:DataService-securitySchemaType;
sh:property dprod-shapes:DataService-isAccessServiceOf ;
sh:property dprod-shapes:DataService-protocol ;
sh:property dprod-shapes:DataService-securitySchemaType;
.

dprod:DistributionShape
Expand Down
Loading

0 comments on commit a3bb783

Please sign in to comment.