-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProMoTe.owl
More file actions
1221 lines (967 loc) · 85.4 KB
/
ProMoTe.owl
File metadata and controls
1221 lines (967 loc) · 85.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
@prefix : <https://github.com/Stefan-Driessen/ProMoTe#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://github.com/Stefan-Driessen/ProMoTe#> .
<https://github.com/Stefan-Driessen/ProMoTe> rdf:type owl:Ontology ;
owl:imports <http://www.w3.org/2004/02/skos/core> ,
<http://www.w3.org/ns/dcat> ,
<http://www.w3.org/ns/prov-o-20130430> ;
rdfs:isDefinedBy "https://github.com/Stefan-Driessen/ProMoTe" .
#################################################################
# Annotation properties
#################################################################
### http://purl.org/dc/elements/1.1/description
<http://purl.org/dc/elements/1.1/description> rdf:type owl:AnnotationProperty .
### http://purl.org/dc/terms/description
<http://purl.org/dc/terms/description> rdf:type owl:AnnotationProperty ;
<http://www.w3.org/2004/02/skos/core#definition> "A human-readable account of the resource."@en ;
:pmt:motivation "Descriptions make the resource more Understandable. Additionally, descriptions can contribute to Discoverability if they are indexed in a data catalog."@en .
### http://purl.org/dc/terms/title
<http://purl.org/dc/terms/title> rdf:type owl:AnnotationProperty ;
<http://www.w3.org/2004/02/skos/core#definition> "A name given to the item."@en ;
:pmt:motivation "A title contributes to Discoverability, Addressability (if unique), and Understandability."@en ;
rdfs:range rdfs:Literal .
### https://github.com/Stefan-Driessen/ProMoTe#Estimated_Value
:Estimated_Value rdf:type owl:AnnotationProperty ;
rdfs:comment "An indication of the value the resource provides for the company."@en ;
rdfs:label "estimated value"@en ;
:pmt:motivation "Explicitly including an estimated value is necessary for establishing that a resource or distribution is Valuable."@en ;
<https://vocab.org/vann/#usageNote> "Ideally, the estimated value is backed by a quantifier, such as money or manhours saved. Otherwise, a qualitative description of the value provided can be provided."@en ,
"In commercial settings estimated value can be used as the price of the resource."@en .
### https://github.com/Stefan-Driessen/ProMoTe#knowledgeURI
:knowledgeURI rdf:type owl:AnnotationProperty ;
rdfs:comment "A link to documentation about the institutional knowledge."@en ;
rdfs:label "knowledge URI" ;
<https://vocab.org/vann/#usageNote> "Best practice is to store institutional knowledge in a business glossary or domain ontologies."@en ;
rdfs:domain :class-institutional-knowledge .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:consumeInstructions
:pmt:consumeInstructions rdf:type owl:AnnotationProperty ;
rdfs:comment "Human-readable instructions on how to consume data through this output port."@en ;
rdfs:label "consume instructions"@en ;
rdfs:seeAlso "https://www.w3.org/TR/vocab-dcat-2/#Property:data_service_endpoint_description" ;
:pmt:motivation "Consume instructions help with making the data Natively Accessible, Reusable, and, potentially, Interoperable."@en ;
<https://vocab.org/vann/#usageNote> "Consume instructions can serve as the informal couterpart to the pmt:dataContract, which captures the formal promises and expectations of this output port."@en ;
rdfs:domain :class-output-port .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:consumerPromise
:pmt:consumerPromise rdf:type owl:AnnotationProperty ;
rdfs:comment "A promise required from the data consumer to the pmt:dataProvider that is captured in the data contract."@en ;
rdfs:label "consumer promise"@en ;
:pmt:motivation "Consumer promises contribute to making data products Feedback-Driven and Security."@en ;
<https://vocab.org/vann/#usageNote> "Consumer promises can also be captured in a pmt:SLA, pmt:SLO or in a pmt:policy."@en ;
rdfs:domain :class-data-contract .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:motivation
:pmt:motivation rdf:type owl:AnnotationProperty .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:plannedEndDate
:pmt:plannedEndDate rdf:type owl:AnnotationProperty ;
rdfs:comment "The date by which the use case plans to stop consuming data products."@en ;
rdfs:label "planned end date"@en ;
:pmt:motivation "Planned end dates of use cases are important for establishing Value and achieving Feedback-Driven development."@en ;
<https://vocab.org/vann/#usageNote> "If there is no foreseeable end date, the planned end date can be indefinite."@en ,
"Keeping track of a planned end date helps with data product maintenance. and versioning. There is no need to put effort into maintaining a data product if there are no active use cases."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:providerPromise
:pmt:providerPromise rdf:type owl:AnnotationProperty ;
rdfs:comment "A promise made by the pmt:dataProvider to the data consumer that is captured in the data contract."@en ;
rdfs:label "provider promise"@en ;
:pmt:motivation "Provider promises contribute to Truthfulness & Trustworthiness, Native Accessibility and Security."@en ;
<https://vocab.org/vann/#usageNote> "Provider promises can also be captured in a pmt:SLA, pmt:SLO or in a pmt:policy."@en ;
rdfs:domain :class-data-contract .
### https://vocab.org/vann/#usageNote
<https://vocab.org/vann/#usageNote> rdf:type owl:AnnotationProperty ;
rdfs:label "vann:usageNote" .
#################################################################
# Object Properties
#################################################################
### dct:identifier
<dct:identifier> rdf:type owl:ObjectProperty ;
rdfs:label "identifier"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "An unambiguous reference to the resource within a given context."@en ;
:pmt:motivation "A unique identifier is a necessity for Addressability."@en ;
<https://vocab.org/vann/#usageNote> "Common values are a urn or url."@en .
### http://xmlns.com/foaf/0.1/primaryTopic
<http://xmlns.com/foaf/0.1/primaryTopic> rdf:type owl:ObjectProperty .
### https://github.com/Stefan-Driessen/ProMoTe#appliesToPort
:appliesToPort rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-contract ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-input-port
:class-output-port
)
] ;
rdfs:comment "The output port to which this policy applies."@en ;
rdfs:label "applies to port"@en ;
:pmt:motivation "Linking data contracts to output ports makes data products Feedback-Driven, Truthful & Trustworthy, Valuable and Secure."@en .
### https://github.com/Stefan-Driessen/ProMoTe#control-port-property-policy
:control-port-property-policy rdf:type owl:ObjectProperty ;
rdfs:domain :class-control-port ;
rdfs:comment "A policy that can be managed through this control port." ;
rdfs:label "managed policy"@en ;
<https://vocab.org/vann/#usageNote> "A wide variety of policies may exist that manage different aspects of the data product such as: computational policies, data product standardized protocols, and automated tests and automated monitoring." ,
"Best practice is to use additional documentation to describe and manage the different types of policies that exist within a data mesh ecosystem." .
### https://github.com/Stefan-Driessen/ProMoTe#data-contract-property-policy
:data-contract-property-policy rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-contract ;
rdfs:comment "A policy that is explained and enforced in the data contract." ;
rdfs:label "policy"@en ;
:pmt:motivation "Policies can contribute to one or more of Understandability, Truthfulness & Trustworthiness and Security." ;
<https://vocab.org/vann/#usageNote> "A wide variety of policies may exist that manage different aspects of the data product such as: computational policies, data product standardized protocols, and automated tests and automated monitoring." ,
"Best practice is to use additional documentation to describe and manage the different types of policies that exist within a data mesh ecosystem." .
### https://github.com/Stefan-Driessen/ProMoTe#data-product-property-output-port
:data-product-property-output-port rdf:type owl:ObjectProperty ;
owl:inverseOf :property-exposes-data-product ;
rdfs:domain :class-data-product ;
rdfs:range :class-output-port ;
rdfs:comment "An output port that exposes a distribution of this data product."@en ;
rdfs:label "output port"@en ;
:pmt:motivation "Output ports make different distributions of a data product's datasets Natively Accessible in a Reusable manner. Additionally, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#dataset-property-logical-schema
:dataset-property-logical-schema rdf:type owl:ObjectProperty ;
rdfs:domain :class-dataset ;
rdfs:comment "A description of the data structure and internal relations at the dataset-level." ;
rdfs:label "logical schema"@en ;
:pmt:motivation "Logical schemas contribute to Understandability and Interoperability." ;
<https://vocab.org/vann/#usageNote> "Logical schemas describe the structure of data that holds true across different distributions of the dataset. Structural descriptions of different distributions are described in pmt:technicalSchema." .
### https://github.com/Stefan-Driessen/ProMoTe#distribution-property-output-port
:distribution-property-output-port rdf:type owl:ObjectProperty ;
owl:inverseOf :output-port-property-distribution ;
rdfs:domain :class-distribution ;
rdfs:range :class-output-port ;
rdfs:comment "An output port that exposes this distribution."@en ;
rdfs:label "corresponding output port"@en ;
:pmt:motivation "Output ports make different distributions of a data product's datasets Natively Accessible and Reusable. Additionally, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#endpointURI
:endpointURI rdf:type owl:ObjectProperty ;
rdfs:domain :class-output-port ;
rdfs:seeAlso "dcat:endpointURL"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "A unique URI for the endpoint of this output port."@en ;
:pmt:motivation "Unique endpoints contribute to Addressability and Native Accessibility."@en .
### https://github.com/Stefan-Driessen/ProMoTe#enforcementLogic
:enforcementLogic rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-product ;
rdfs:range :EnforcementLogic ;
rdfs:comment "The logic or code used to (semi-)automatically enforce the policies that govern the data product."@en ;
rdfs:label "enforcement logic" ;
:pmt:motivation "Automating enforcement logic contributes to the Truthfulness & Trustworthiness of the data product."@en .
### https://github.com/Stefan-Driessen/ProMoTe#input-port-property-corresponding-data-product
:input-port-property-corresponding-data-product rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-control-port
:class-input-port
)
] ;
rdfs:comment "The data product of this input port." ;
rdfs:label "corresponding data product"@en ;
:pmt:motivation "Keeping track of who consumes what data contributes to determining Value, as well as establishing data lineage. In addition to making data products Feedback-Driven, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#output-port-property-distribution
:output-port-property-distribution rdf:type owl:ObjectProperty ;
rdfs:domain :class-output-port ;
rdfs:range :class-distribution ;
rdfs:comment "The distributions that are exposed for consumption through this output port."@en ;
rdfs:label "exposes distribution"@en ;
:pmt:motivation "Grouping together multiple distributions per output port helps with Native Accessibility and Reusability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-control-port
:property-control-port rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-product ;
rdfs:range :class-control-port ;
rdfs:comment "A control port through which the policies of this data product are managed."@en ;
rdfs:label "control port"@en ;
:pmt:motivation "Control ports are primarily used to monitor the Truthfulness & Trustworthiness of data products. They can also be used to enforce Interoperability and Security."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-data-contract
:property-data-contract rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-input-port
:class-output-port
)
] ;
rdfs:comment "A data contract associated with an output port. If the output port is the input port of another data contract, the data contract regulates how the data flows into that data product."@en ;
rdfs:label "data contract"@en ;
:pmt:motivation "Data Contracts contribute to Understandability, Truthfulness & Trustworthiness, Native Accessibility and Security."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-data-provider
:property-data-provider rdf:type owl:ObjectProperty ;
rdfs:subPropertyOf :property-resource-provider ;
rdfs:domain :class-data-product ;
rdfs:comment "The actor responsible for providing the data product." ;
rdfs:label "data provider"@en ;
:pmt:motivation "Data providers are essential to achieve Addressability, as well as making the development of the resource Feedback-Driven." .
### https://github.com/Stefan-Driessen/ProMoTe#property-dataset
:property-dataset rdf:type owl:ObjectProperty ;
owl:inverseOf :property-offered-in-data-product ;
rdfs:domain :class-data-product ;
rdfs:range :class-dataset ;
rdfs:comment "A dataset that is offered through this data product." ;
rdfs:label "data asset"@en ;
:pmt:motivation "Grouping one or more data assets together in a data product helps with Reusability, Discoverability, Addressability, Truthfulness and Trustworthiness, Understandability and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-defining-domain
:property-defining-domain rdf:type owl:ObjectProperty ;
owl:inverseOf :property-domain-knowledge ;
rdfs:domain :class-institutional-knowledge ;
rdfs:range :class-domain ;
rdfs:comment "The domain that defines and maintains the institutional knowledge."@en ;
rdfs:label "defining domain"@en ;
<https://vocab.org/vann/#usageNote> "It is possible that a piece of institutional knowledge is maintained on an organisation-wide level, rather than on a domain-level, but there should still be a domain responsible for maintining organisation-wide knowledge."@en ,
"This is an inverse property of pmt:institutionalKnowledge"@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-domain
:property-domain rdf:type owl:ObjectProperty ;
owl:inverseOf :property-resource ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:range :class-domain ;
rdfs:label "domain"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "The domain from which the resource stems."@en ;
:pmt:motivation "Domains make resources more Addressable and Discoverable."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-domain-knowledge
:property-domain-knowledge rdf:type owl:ObjectProperty ;
rdfs:domain :class-domain ;
rdfs:range :class-institutional-knowledge ;
rdfs:comment "Existing terminology within the organisation or domain that relates to a pmt:Resource."@en ;
rdfs:label "domain knowledge"@en ;
:pmt:motivation "Institutional knowledge contributes to Discoverability, Understandability and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-exposes-data-product
:property-exposes-data-product rdf:type owl:ObjectProperty ;
rdfs:domain :class-output-port ;
rdfs:range :class-data-product ;
rdfs:comment "The data product that this output port exposes for consumption." ;
rdfs:label "exposes data product"@en ;
:pmt:motivation "Having multiple output ports per data product helps with Native Accessibility and Reusability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-input-port
:property-input-port rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-product ;
rdfs:range :class-input-port ;
rdfs:comment "An input port through which data is ingested into this data product."@en ;
rdfs:label "input port"@en ;
:pmt:motivation "In addition to making data products Feedback-Driven, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-newer-version
:property-newer-version rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:comment "A newer version of the data product, which will eventually replace this version."@en ,
"This property is used for versioning, keeping an older version available helps consumers of the resources by giving them time to migrate to the new resource."@en ;
rdfs:label "has new version"@en ;
rdfs:seeAlso "http://purl.org/dc/terms/hasVersion"@en ;
:pmt:motivation "Versioning in general contributes to Understandability, Truthfulness & Trustworthiness, Interoperability, Native Accessibility, and Reusability."@en ;
<https://vocab.org/vann/#usageNote> "Recommended usage is to describe until when this resource is available in the dct:description property."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-offered-in-data-product
:property-offered-in-data-product rdf:type owl:ObjectProperty ;
rdfs:domain :class-dataset ;
rdfs:range :class-data-product ;
rdfs:comment "A data product that makes this dataset available for consumption." ;
rdfs:label "offered in data product"@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-older-version
:property-older-version rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:comment "An older version of the data product, which this version is replacing."@en ,
"This property is used for versioning, keeping an older version available helps consumers of the resources by giving them time to migrate to the new resource."@en ;
rdfs:label "has old version"@en ;
rdfs:seeAlso "http://purl.org/dc/terms/isVersionOf"@en ;
:pmt:motivation "Versioning in general contributes to Understandability, Truthfulness & Trustworthiness, Interoperability, Native Accessibility, and Reusability."@en ;
<https://vocab.org/vann/#usageNote> "Recommended usage is to describe when the old resource is no longer available in the dct:description property."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-physical-schema
:property-physical-schema rdf:type owl:ObjectProperty ;
rdfs:domain :class-distribution ;
rdfs:comment "A description of the data structure and internal relations at the distribution-level." ;
rdfs:label "physical schema"@en ;
:pmt:motivation "Physical schemas help with Understandability and Interoperability." ;
<https://vocab.org/vann/#usageNote> "Physical schemas describe the structure of data of a specific distribution of a pmt:DataAseset. Structural descriptions that hold true across all distributions of a dataset are described in pmt:logicalSchema."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-resource
:property-resource rdf:type owl:ObjectProperty ;
rdfs:domain :class-domain ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:comment "A resource offered in the domain." ;
rdfs:label "has resource"@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-resource-provider
:property-resource-provider rdf:type owl:ObjectProperty ;
rdfs:domain :class-resource ;
rdfs:range <http://www.w3.org/ns/prov#Agent> ;
rdfs:label "resource provider"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "The agent responsible for providing the resource."@en ;
:pmt:motivation "Resource providers are necessary to achieve Addressability, as well as making the development of the resource Feedback-Driven."@en ;
<https://vocab.org/vann/#usageNote> "Resource Providers are either data product providers or use case providers."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-resource-type
:property-resource-type rdf:type owl:ObjectProperty ;
rdfs:domain :class-resource ;
rdfs:comment "The type of the resource, either a data product, data asset or a use case"@en ;
rdfs:label "type"@en ;
rdfs:seeAlso "https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/type" ;
:pmt:motivation "Describing the type of resource contributes to Discoverability and Understandability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#property-service-level-agreement
:property-service-level-agreement rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-contract ;
rdfs:comment "A service level agreement related to the delivery of data through the output port of this data contract." ;
rdfs:label "SLA"@en ;
:pmt:motivation "Service level agreements contribute to Understandability, Truthfulness & Trustworthiness, Native Accessibility and Security." ;
<https://vocab.org/vann/#usageNote> "Best practice is to use additional documentation to describe and manage SLAs in the data mesh ecosystem." .
### https://github.com/Stefan-Driessen/ProMoTe#property-service-level-objective
:property-service-level-objective rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-contract ;
rdfs:comment "A service level objective related to the delivery of data through the output port of this data contract." ;
rdfs:label "SLO"@en ;
:pmt:motivation "Service level objectives contribute to Understandability, Truthfulness & Trustworthiness, Native Accessibility and Security." ;
<https://vocab.org/vann/#usageNote> "Best practice is to use additional documentation to describe and manage SLOs in the data mesh ecosystem." .
### https://github.com/Stefan-Driessen/ProMoTe#resource-property-consumed-by
:resource-property-consumed-by rdf:type owl:ObjectProperty ;
owl:inverseOf :resource-property-consumes ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-output-port
:class-resource
)
] ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-input-port
:class-resource
:class-use-case
)
] ;
rdfs:comment "An input port of a data product or a use case that consumes this data product." ;
rdfs:label "is consumed by"@en ;
:pmt:motivation "In addition to making data products Feedback-Driven, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability." ;
<https://vocab.org/vann/#usageNote> "Linking consuming data products helps establish data lineage, whereas linking use cases to data products improves the discoverability, understandability of the data product and helps establish a pmt:estimatedValue" .
### https://github.com/Stefan-Driessen/ProMoTe#resource-property-consumes
:resource-property-consumes rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-input-port
:class-resource
)
] ;
rdfs:range [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-output-port
:class-resource
)
] ;
rdfs:comment "A resource or output port of a data product which is consumed to create or maintain this resource or input port."@en ;
rdfs:label "consumes"@en ;
:pmt:motivation "In addition to making data products Feedback-Driven, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#resource-property-institutional-knowledge
:resource-property-institutional-knowledge rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-distribution
:class-resource
)
] ;
rdfs:range :class-institutional-knowledge ;
rdfs:comment "Existing terminology within the organisation or domain that relates to a pmt:Resource."@en ;
rdfs:label "institutional knowledge"@en ;
:pmt:motivation "Institutional knowledge contributes to Discoverability, Understandability and Interoperability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#resource-property-source-system
:resource-property-source-system rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :class-dataset
:class-distribution
)
] ;
rdfs:comment "An IT system that generates or stores data in this resource, such as a speficic data warehouse, data lake, or database."@en ;
rdfs:label "source system"@en ;
:pmt:motivation "In addition to making data products Feedback-Driven, tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability."@en ;
<https://vocab.org/vann/#usageNote> "This property can be used to describe either where a specific data asset or distribution lives or give information on the input port of a data product."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:accessManagement
:pmt:accessManagement rdf:type owl:ObjectProperty ;
rdfs:domain :class-output-port ;
rdfs:label "access management"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "The management and enforcement of access rights on an output port."@en ;
:pmt:motivation "Access Mangement contributes to Security, Native Accessibility and Feedback-Driven."@en ;
<https://vocab.org/vann/#usageNote> "Access Management is usually provided by the organisation as part of a larger IAM framework"@en ,
"Access management and enforcement should also be described in the pmt: DataContract associated with the pmt:OutputPort"@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:catalogRecord
:pmt:catalogRecord rdf:type owl:ObjectProperty ;
rdfs:range <http://www.w3.org/ns/dcat#CatalogRecord> ;
rdfs:label "catalog record"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "The record describing this resource in a data catalog"@en ;
:pmt:motivation "Catalog records contribute to Discoverability, Addressability, Understandability, Interoperability and Value."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:distribution
:pmt:distribution rdf:type owl:ObjectProperty ;
rdfs:subPropertyOf <http://www.w3.org/ns/dcat#distribution> ;
rdfs:domain :class-dataset ;
rdfs:range :class-distribution ;
rdfs:label "distribution"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "A physical manifestion of (a subset of) the data asset."@en ;
:pmt:motivation "Distributions make data assets Natively Accessible."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:domainOwner
:pmt:domainOwner rdf:type owl:ObjectProperty ;
rdfs:range <http://www.w3.org/ns/prov#Person> ;
rdfs:label "domain owner" ;
<http://www.w3.org/2004/02/skos/core#definition> "The person who carries the high-level responsibility for domain, the business processes in it and the data they generate."@en ;
:pmt:motivation "Domain owners help assign responsibility for the different data products, which contributes to Addressability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:domainParticipant
:pmt:domainParticipant rdf:type owl:ObjectProperty ;
rdfs:range <http://www.w3.org/ns/prov#Agent> ;
rdfs:label "domain participant" ;
<http://www.w3.org/2004/02/skos/core#definition> "A person who is active within the domain."@en ;
:pmt:motivation "Domain participants can have various relations to the data product and its data. Registering them contributes to Addressability."@en .
### https://github.com/Stefan-Driessen/ProMoTe#pmt:transformationLogic
:pmt:transformationLogic rdf:type owl:ObjectProperty ;
rdfs:domain :class-data-product ;
rdfs:range :TransformationLogic ;
rdfs:comment "The logic or code used to transform data coming in from the input ports of the data product to the distributions that are exposerd through the output ports."@en ;
rdfs:label "transformation logic"@en ;
:pmt:motivation "Transformation logic is necessary to create distributions that are Natively Accessible and guarantee a certain level of Truthfulness and Trustworthiness and/or Interoperability." .
### https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#issued
<https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#issued> rdf:type owl:ObjectProperty ;
rdfs:comment "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ;
rdfs:label "Date Issued"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "Date of formal issuance of the resource."@en ;
:pmt:motivation "Adding the date issued contributes to the Understandability of the resource."@en .
### https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#modified
<https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#modified> rdf:type owl:ObjectProperty ;
rdfs:comment "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ;
rdfs:label "Date Modified"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "Date on which the resource was changed."@en ;
:pmt:motivation "The date modified contributes to the Understandability, Interoperability, and Trustworthiness & Truthfulness."@en .
#################################################################
# Data properties
#################################################################
### http://www.w3.org/ns/dcat#keyword
<http://www.w3.org/ns/dcat#keyword> :pmt:motivation "Keywords contribute primarily to Discoverability and, to a lesser extent, to Understandability."@en .
### https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#language
<https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#language> rdf:type owl:DatatypeProperty ;
rdfs:comment "Recommended practice is to use either a non-literal value representing a language from a controlled vocabulary such as ISO 639-2 or ISO 639-3, or a literal value consisting of an IETF Best Current Practice 47 [IETF-BCP47] language tag."@en ;
rdfs:label "Language"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "A language of the resource."@en ;
:pmt:motivation "Describing the language of the resource contributes primarily to Understandability."@en .
#################################################################
# Classes
#################################################################
### https://github.com/Stefan-Driessen/ProMoTe#EnforcementLogic
:EnforcementLogic rdf:type owl:Class .
### https://github.com/Stefan-Driessen/ProMoTe#TransformationLogic
:TransformationLogic rdf:type owl:Class .
### https://github.com/Stefan-Driessen/ProMoTe#class-control-port
:class-control-port rdf:type owl:Class ;
rdfs:comment "A control port through which a data product's policies can be managed by external parties such as the pmt:dataProvider or a federated governance team." ;
rdfs:label "Control Port"@en ;
:pmt:motivation "Control Ports allow external parties to observe and influence the management of the data product, effectively contributing to Truthfulness and Trustworthiness, as well as Security."@en ;
<https://vocab.org/vann/#usageNote> "Since control ports are highly dependent on the infrastructure provided in the data mesh, as well as the policies employed in the organisation, description of control ports SHOULD be extended with external documentation as the situation requires." .
### https://github.com/Stefan-Driessen/ProMoTe#class-data-contract
:class-data-contract rdf:type owl:Class ;
rdfs:comment "A collection of enforceable promises concerning the delivery of a data product or use case." ;
rdfs:label "Data Contract"@en ;
:pmt:motivation "Data Contracts contribute to Understandability, Truthfulness & Trustworthiness, Native Accessibility and Security." ;
<https://vocab.org/vann/#usageNote> "Best practice is to have one data contract standard or template per output port and a signed data contract entity for each pmt:UseCase"@en ,
"Data contracts are highly dependable on the requirements and culture of the organisation implementing a data mesh. External standards, can and should be used to establish and describe data contracts. Examples include the SCC for transferring data outside of the EU, ISO9001 for security purposes or the Linux foundation' open standard for data contracts."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-data-product
:class-data-product rdf:type owl:Class ;
rdfs:subClassOf :class-resource ;
rdfs:label "Data Product"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "A data product in a product oriented architecture. Data products consist of one or more owned data assets that have been optimised for consumption by external consumers."@en ;
<https://vocab.org/vann/#usageNote> "The class of all data products that exist and are registered in the data catalog of the data mesh." ,
"This class describes all everything that holds true across all underlying datasets, distributions, and output ports in the data product." .
### https://github.com/Stefan-Driessen/ProMoTe#class-dataset
:class-dataset rdf:type owl:Class ;
rdfs:subClassOf <http://www.w3.org/ns/dcat#Dataset> ,
:class-resource ;
rdfs:comment "A collection of data that can be described by a single logical schema and be consumed in one or more techincal representations (distributions) through one or more output ports." ;
rdfs:label "Data Asset"@en ;
rdfs:seeAlso "http://www.w3.org/ns/dcat#Dataset" ;
:pmt:motivation "Grouping data together on a conceptual level helps grealy with Addressability and Discoverability. It can also contribute to Interoperability and Reusability."@en ;
<https://vocab.org/vann/#usageNote> "Data Assets describe data on a conceptual level. Data products provide information on one or more data assets grouped together."@en ,
"One or more representations (distributions) of each data asset might be available, with differing schematic layouts and formats or serializations."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-distribution
:class-distribution rdf:type owl:Class ;
rdfs:subClassOf <http://www.w3.org/ns/dcat#Distribution> ;
rdfs:comment "A specific representation of a data asset. A dataset might be available in multiple serializations that may differ in various ways, including natural language, media-type or format, schematic organization, temporal and spatial resolution, level of detail or profiles (which might specify any or all of the above)."@en ;
rdfs:label "Distribution"@en ;
rdfs:seeAlso "http://www.w3.org/ns/dcat#Distribution" ;
:pmt:motivation "Distributions make data assets Natively Accessible."@en ;
<https://vocab.org/vann/#usageNote> "This represents a general availability of a dataset. It implies no information about the actual access method of the data, which is described in pmt:OutputPort." .
### https://github.com/Stefan-Driessen/ProMoTe#class-domain
:class-domain rdf:type owl:Class ;
rdfs:comment "The organisational sphere of knowledge and activity from which resources and actors originate."@en ;
rdfs:label "Domain"@en ;
:pmt:motivation "Domains make resources more Addressable and Discoverable."@en ;
<https://vocab.org/vann/#usageNote> "Aligning data and software with domains is one of the primary concerns of building a data mesh and domain-driven design in general."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-input-port
:class-input-port rdf:type owl:Class ;
rdfs:comment "An input port of a data product which relates to a source system or an output port of another data product." ;
rdfs:label "Input Port"@en ;
:pmt:motivation "Keeping track of who consumes what data contributes to determining Value, as well as establishing data lineage. Tracking lineage in general contributes to Discoverability, Addressability, Understandability, and Interoperability." .
### https://github.com/Stefan-Driessen/ProMoTe#class-institutional-knowledge
:class-institutional-knowledge rdf:type owl:Class ;
rdfs:comment "Superclass of documentation within the organisation or domain that can be related to a pmt:Resource."@en ;
rdfs:label "Institutional Knowledge"@en ;
:pmt:motivation "Institutional knowledge contributes to Discoverability, Understandability and Interoperability."@en ;
<https://vocab.org/vann/#usageNote> "Examples include how the data relates to specifically defined terms, business objects or business processes."@en ,
"Recommended usage is to organise institutional knowledge in (existing) ontologies or business glossaries."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-output-port
:class-output-port rdf:type owl:Class ;
rdfs:comment "An output port of a data product that exposes one or more distributions."@en ;
rdfs:label "Output Port"@en ;
:pmt:motivation "Output ports are necessary for achieving Native Accessability and Security. When designed well, they also contribute greatly to Reusability."@en ;
<https://vocab.org/vann/#usageNote> "Output ports make available one or more distributions through an access methods with an associated data contract."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-resource
:class-resource rdf:type owl:Class ;
owl:disjointUnionOf ( :class-data-product
:class-dataset
:class-use-case
) ;
rdfs:label "pmt:Resource" ;
<https://vocab.org/vann/#usageNote> "If the data catalog also contains information on data sevices, this class can be used in conjunction with dcat:DataService."@en .
### https://github.com/Stefan-Driessen/ProMoTe#class-use-case
:class-use-case rdf:type owl:Class ;
rdfs:subClassOf :class-resource ;
rdfs:label "Use Case"@en ;
<http://www.w3.org/2004/02/skos/core#definition> "A use case of a data product, in a data mesh environment."@en ;
:pmt:motivation "Explicitly tracking use cases contributes to Discoverability, Understandability, Interoperability, Value and Feedback-Driven development." ;
<https://vocab.org/vann/#usageNote> "If use cases generate new data, they can, over time also lead to new data products." ,
"This is the class of all use cases that consume data products and are registered in the data catalog of the data mesh." .
#################################################################
# Individuals
#################################################################
### https://api-endpoint.url
<https://api-endpoint.url> rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "This is a stub for example purposes. Normally this would refer to an actual endpoint where a consumer can query the data warehouse."@en ;
rdfs:comment "Note that the endpoint is shared by two endpoints. Access through the different distributions is managed through the pmt:accessManagement"@en ;
rdfs:label "https://api-endpoint.url"@en .
### https://kafka-topic.url
<https://kafka-topic.url> rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "This is a stub for example purposes. Normally this would refer to an actual endpoint where a consumer can subscribe to the topic."@en ;
rdfs:label "https://kafka-topic.url"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Alice
:Alice rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Alice is the Data Provider of the Subscription Data Product"@en .
### https://github.com/Stefan-Driessen/ProMoTe#AnonymisedOUtputPort
:AnonymisedOUtputPort rdf:type owl:NamedIndividual ,
:class-output-port ;
:endpointURI <https://api-endpoint.url> ;
:property-data-contract :Data_Contract_B ;
:property-exposes-data-product :SubscriptionsDataProduct ;
:resource-property-consumed-by :Use_Case_B ;
:pmt:accessManagement :Sales_Domain_Data_Warehouse_Access_Management ;
<http://purl.org/dc/terms/description> "This output port grants sql-based access to an anonymised version of the data in the subscriptions data product. It is generally accessible for most purposes in the company."@en ;
<http://purl.org/dc/terms/title> "Subscriptions Anonymized Output Port"@en ;
rdfs:label "Anonymized Output Port"@en ;
:pmt:consumeInstructions "In order to consume data through this output port, contact Alice at alice@email.com. Then read the documentation on this output port at https://documentation-anonoutputport.company.com"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Anonymised_Distribution_Schemas
:Anonymised_Distribution_Schemas rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "This is a stub for the phyiscal schemas of the anonymised distributions."@en ;
rdfs:comment "Normally, these would be stored in a data catalogue."@en ;
rdfs:label "Anonymized Distribution Schemas"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Anonymized_SQL-based_Distributions
:Anonymized_SQL-based_Distributions rdf:type owl:NamedIndividual ,
:class-distribution ;
<http://purl.org/dc/terms/format> :SQL ;
:distribution-property-output-port :AnonymisedOUtputPort ;
:property-physical-schema :Anonymised_Distribution_Schemas ;
:resource-property-consumed-by :Use_Case_B ;
:resource-property-source-system :Sales_Domain_Data_Warehouse ;
<http://purl.org/dc/terms/description> "An anonymised version of the complete sql-based distributions with any personally identifiable information has been removed or changed. This is used as a basis for the subscription output port."@en ;
<http://purl.org/dc/terms/title> "Anon-Tab"@en ;
rdfs:comment "Normally each distribution would be an individual entity with its own metadata entry in a data catalogue. For the example purposes, these have been grouped together."@en ;
rdfs:label "Anonymized SQL-based Distributions"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Bob
:Bob rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Bob is in charge of assisting customers with subscription cancellation."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Charlie
:Charlie rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Charlie is in charge of the targeted marketing campaign."@en .
### https://github.com/Stefan-Driessen/ProMoTe#CompanyPolicy
:CompanyPolicy rdf:type owl:NamedIndividual ;
rdfs:comment "Every signed data contract includes a clause that the data provider and data consumer sit at least once per year to confirm that data contract is still relevant."@en ;
rdfs:label "Company Policy"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Complete_Distribution_Schemas
:Complete_Distribution_Schemas rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "This is a stub for the physical schemas of the complete distributions."@en ;
rdfs:comment "Normally, these would be stored in a data catalogue."@en ;
rdfs:label "Complete Distribution Schemas"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Complete_SQL-based_Distributions
:Complete_SQL-based_Distributions rdf:type owl:NamedIndividual ,
:class-distribution ;
<http://purl.org/dc/terms/format> :SQL ;
:distribution-property-output-port :FullOutputPort ;
:property-physical-schema :Complete_Distribution_Schemas ;
:resource-property-consumed-by :Use_Case_A ;
:resource-property-source-system :Sales_Domain_Data_Warehouse ;
<http://purl.org/dc/terms/description> "The complete collection of tables and views for the \"Customer\", \"Subscription\", and \"Product\" data assets. These are used both for internal use in the Sales domain and as the basis for the subscription data product."@en ;
<http://purl.org/dc/terms/title> "Subscr-Tab"@en ;
rdfs:comment "Normally each distribution would be an individual entity with its own metadata entry in a data catalogue. For the example purposes, these have been grouped together."@en ;
rdfs:label "Complete SQL-based Distributions"@en .
### https://github.com/Stefan-Driessen/ProMoTe#CustomerDataAsset
:CustomerDataAsset rdf:type owl:NamedIndividual ,
:class-dataset ,
[ rdf:type owl:Class ;
owl:complementOf :class-data-contract
] ;
<http://www.w3.org/ns/dcat#distribution> :Anonymized_SQL-based_Distributions ,
:Complete_SQL-based_Distributions ,
:Kafka_Based_Distributions ;
:dataset-property-logical-schema :Figure_4.5 ;
:property-domain :Sales_Domain ;
:resource-property-institutional-knowledge :Sales_Domain_Knowledge ;
<https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#language> "English" ;
<http://purl.org/dc/terms/description> "Customers are natural persons that subscribe to products at the company."@en ;
<http://purl.org/dc/terms/title> "Customer"@en ;
rdfs:label "Customer Data Asset"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Data_Contract_A
:Data_Contract_A rdf:type owl:NamedIndividual ,
:class-data-contract ;
:appliesToPort :FullOutputPort ;
:data-contract-property-policy :CompanyPolicy ;
:property-service-level-agreement :Sales_Domain_Data_Warehouse_SLA ;
<http://purl.org/dc/terms/description> "The data contract associated with with the full output port of the subscriptions data product."@en ;
rdfs:comment "Data Contracts can be described extensively in their own ontology."@en ,
"Normally this would refer to a formal data contract document."@en ;
rdfs:label "Data Contract A"@en ;
:pmt:consumerPromise "This data will only be used to assist in the subscription cancellation process."@en ;
:pmt:providerPromise "Associated quality checks are run every night at 01.00."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Data_Contract_B
:Data_Contract_B rdf:type owl:NamedIndividual ,
:class-data-contract ;
:appliesToPort :AnonymisedOUtputPort ;
:data-contract-property-policy :CompanyPolicy ;
:property-service-level-agreement :Sales_Domain_Data_Warehouse_SLA ;
<http://purl.org/dc/terms/description> "The data contract associated with with the anonymised output port of the subscriptions data product."@en ;
rdfs:comment "Data Contracts can be described extensively in their own ontology."@en ,
"Normally this would refer to a formal data contract document."@en ;
rdfs:label "Data Contract B"@en ;
:pmt:consumerPromise "This data will not be combined with any outside data that could un-anonymise it."@en ;
:pmt:providerPromise "Associated quality checks are run every night at 01.00."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Data_Contract_C
:Data_Contract_C rdf:type owl:NamedIndividual ,
:class-data-contract ;
:appliesToPort :StreamingOutputPort ;
:data-contract-property-policy :CompanyPolicy ;
:property-service-level-agreement :Sales_Domain_Event_Store_SLA ;
<http://purl.org/dc/terms/description> "The data contract associated with with the streaming output port of the subscriptions data product."@en ;
rdfs:comment "Data Contracts can be described extensively in their own ontology."@en ,
"Normally this would refer to a formal data contract document."@en ;
rdfs:label "Data Contract C"@en ;
:pmt:consumerPromise "This data will only be used to make information available to customers on the website."@en ;
:pmt:providerPromise "Once changed, data will become availble after, at most 1 minute."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Dave
:Dave rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Dave is in charge of the front-end of the company website."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Deals_and_Campaings_Data_Product
:Deals_and_Campaings_Data_Product rdf:type owl:NamedIndividual ,
:class-data-product ;
:resource-property-consumed-by :Use_Case_C ;
:resource-property-consumes :Use_Case_B ;
:resource-property-institutional-knowledge :Marketing_Domain_Glossary ;
<http://purl.org/dc/elements/1.1/description> "A data product that contains information on the various deals and campaigns ongoing at the media company."@en ;
rdfs:comment "This data product is not fully worked out and only serves as an example to illustrate how RDF can be applied to deduce interoperability between data products."@en ;
rdfs:label "Deals and Campaigns Data Product" .
### https://github.com/Stefan-Driessen/ProMoTe#Erica
:Erica rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Erica is the domain owner of the Sales Domain"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Figure_4.5
:Figure_4.5 rdf:type owl:NamedIndividual ;
rdfs:label "Figure 4.5"@en ;
rdfs:seeAlso "Figure 4.5 in the dissertation"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Fred
:Fred rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Fred is the domain owner of the marketing domain."@en .
### https://github.com/Stefan-Driessen/ProMoTe#FullOutputPort
:FullOutputPort rdf:type owl:NamedIndividual ,
:class-output-port ;
:endpointURI <https://api-endpoint.url> ;
:property-data-contract :Data_Contract_A ;
:property-exposes-data-product :SubscriptionsDataProduct ;
:resource-property-consumed-by :Use_Case_A ;
:pmt:accessManagement :Sales_Domain_Data_Warehouse_Access_Management ;
<http://purl.org/dc/terms/description> "This output port grants full access to the subscription data product. It should only be used by people whose processing purpose is in line with GDPR limitations."@en ;
<http://purl.org/dc/terms/title> "Subscriptions Full Output Port"@en ;
rdfs:label "Full Output Port"@en ;
:pmt:consumeInstructions "In order to consume data through this output port, contact Alice at alice@email.com. Then read the documentation on this output port at https://documentation-fulloutputport.company.com"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Gina
:Gina rdf:type owl:NamedIndividual ,
<http://www.w3.org/ns/prov#Person> ;
<http://purl.org/dc/terms/description> "Gina is the domain owner of the website domain."@en .
### https://github.com/Stefan-Driessen/ProMoTe#Kafka
:Kafka rdf:type owl:NamedIndividual .
### https://github.com/Stefan-Driessen/ProMoTe#Kafka_Based_Distributions
:Kafka_Based_Distributions rdf:type owl:NamedIndividual ,
:class-distribution ;
<http://purl.org/dc/terms/format> :Kafka_Stream ;
:distribution-property-output-port :StreamingOutputPort ;
:property-physical-schema :Kafka_Based_Distributions ;
:resource-property-consumed-by :Use_Case_C ;
:resource-property-source-system :Sales_Domain_Event_Store ;
<http://purl.org/dc/terms/description> "The complete collection of partitions in the Kafka topic exposing the \"Customer\" \"Subscription\" and \"Product\" data assets. These are used as a basis for the subscription data product."@en ;
<http://purl.org/dc/terms/title> "Subscr-Top"@en ;
rdfs:comment "Normally each distribution would be an individual entity with its own metadata entry in a data catalogue. For the example purposes, these have been grouped together."@en ;
rdfs:label "Kafka Topic Distributions"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Kafka_Distribution_Schemas
:Kafka_Distribution_Schemas rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "This is a stub for the physical schemas of the kafka topic distributions."@en ;
rdfs:comment "Normally, these would be stored in a data catalogue."@en ;
rdfs:label "Kafka Distributions Schemas"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Kafka_Stream
:Kafka_Stream rdf:type owl:NamedIndividual ;
rdfs:comment "In most organisations data formats can be standardised."@en ;
rdfs:label "Kafka Stream"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Marketing_Domain
:Marketing_Domain rdf:type owl:NamedIndividual ,
:class-domain ;
:pmt:domainOwner :Fred ;
:pmt:domainParticipant :Charlie ,
:Fred ;
<http://purl.org/dc/terms/description> "The marketing domain contains all data related to marketing business processes."@en ;
<http://purl.org/dc/terms/title> "Marketing Domain"@en ;
rdfs:label "Marketing Domain" .
### https://github.com/Stefan-Driessen/ProMoTe#Marketing_Domain_Glossary
:Marketing_Domain_Glossary rdf:type owl:NamedIndividual ,
:class-institutional-knowledge ;
<http://purl.org/dc/terms/relation> :Sales_Domain_Knowledge ;
:property-defining-domain :Marketing_Domain ;
<http://purl.org/dc/elements/1.1/description> "The business glossary describis the meaning and origin of data assets in the Marketing Domain."@en ;
rdfs:comment "This institutional knowledge is not fully worked out and only serves as an example to illustrate how RDF can be applied to deduce interoperability between data products."@en ;
rdfs:label "Marketing Domain Glossary"@en .
[ rdf:type owl:Axiom ;
owl:annotatedSource :Marketing_Domain_Glossary ;
owl:annotatedProperty <http://purl.org/dc/terms/relation> ;
owl:annotatedTarget :Sales_Domain_Knowledge ;
rdfs:comment "There exists a well-described relation between the products in the sales domain business glossary and the campaigns and deals that offer discounts on various products."@en
] .
### https://github.com/Stefan-Driessen/ProMoTe#ProductDataAsset
:ProductDataAsset rdf:type owl:NamedIndividual ,
:class-dataset ;
<http://www.w3.org/ns/dcat#distribution> :Anonymized_SQL-based_Distributions ,
:Complete_SQL-based_Distributions ,
:Kafka_Based_Distributions ;
:dataset-property-logical-schema :Figure_4.5 ;
:property-domain :Sales_Domain ;
:resource-property-institutional-knowledge :Sales_Domain_Knowledge ;
<https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#language> "English" ;
<http://purl.org/dc/terms/description> "These are the products offered by the company to customers through subscriptions."@en ;
<http://purl.org/dc/terms/title> "Product"@en ;
rdfs:label "Product Data Asset"@en .
### https://github.com/Stefan-Driessen/ProMoTe#SQL
:SQL rdf:type owl:NamedIndividual ;
rdfs:comment "In most organisations data formats can be standardised."@en ;
rdfs:label "SQL Format"@en .
### https://github.com/Stefan-Driessen/ProMoTe#Sales_CRM_System
:Sales_CRM_System rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "The Sales CRM operational system is used by the company to facilitate the sales process and generates data on the customers and their subscriptions."@en ;
<http://purl.org/dc/terms/title> "Sales CRM System API"@en ;
rdfs:label "Sales CRM System" .
### https://github.com/Stefan-Driessen/ProMoTe#Sales_CRM_System_API
:Sales_CRM_System_API rdf:type owl:NamedIndividual ,
:class-input-port ;
:resource-property-source-system :Sales_CRM_System_API ;
<http://purl.org/dc/terms/description> "The API that makes data available from the CRM. This is used as the input port for the Subscriptions Data Product."@en ;
rdfs:label "Sales CRM System API" .
### https://github.com/Stefan-Driessen/ProMoTe#Sales_Domain
:Sales_Domain rdf:type owl:NamedIndividual ,
:class-domain ;
:property-domain-knowledge :Sales_Domain_Knowledge ;
:pmt:domainOwner :Erica ;
:pmt:domainParticipant :Alice ,
:Erica ;
<http://purl.org/dc/terms/description> "The sales domain contains all data related to sales business processes."@en ;
<http://purl.org/dc/terms/title> "Sales Domain"@en ;
rdfs:label "Sales Domain" .
### https://github.com/Stefan-Driessen/ProMoTe#Sales_Domain_Data_Warehouse
:Sales_Domain_Data_Warehouse rdf:type owl:NamedIndividual ;
<http://purl.org/dc/terms/description> "The data warehouse used by the sales domain."@en ;
<http://purl.org/dc/terms/title> "Sales Domain Data Warehouse"@en ;
rdfs:label "Sales Domain Data Warehouse" .
### https://github.com/Stefan-Driessen/ProMoTe#Sales_Domain_Data_Warehouse_Access_Management