Skip to content

Commit 51bffe2

Browse files
authored
Merge pull request #92 from bitol-io/dev
Dev
2 parents c125b04 + 13b2d3d commit 51bffe2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+10595
-4236
lines changed

.github/workflows/docs-site-deploy.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
name: docs-site-deploy
22
on:
33
push:
4+
tags:
5+
- *
46
branches:
57
- main
68
permissions:
@@ -26,10 +28,8 @@ jobs:
2628
path: .cache
2729
restore-keys: |
2830
mkdocs-material-
29-
- run: pip install mkdocs-open-in-new-tab mike
30-
- run: pip install mkdocs-material
31-
- run: pip install "mkdocs-material[imaging]"
32-
- run: bash script/build_docs.sh
31+
- run: pip install mkdocs-material mkdocs-open-in-new-tab "mkdocs-material[imaging]" mkdocs-awesome-pages-plugin mike
32+
- run: bash src/script/build_docs.sh
3333
- run: |
3434
latest_tag=$(git describe --tags --abbrev=0)
3535
mike deploy --push --update-aliases "$latest_tag" latest
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: validate-examples
2+
on:
3+
push:
4+
branches: ["*"]
5+
6+
jobs:
7+
deploy:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
- uses: actions/setup-node@v4
12+
with:
13+
node-version: latest
14+
- name: Install ajv
15+
run: |
16+
npm i -g ajv-cli ajv-formats
17+
- name: Validate examples
18+
run: bash src/script/validate-examples.sh

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,10 @@
33
.idea
44
site
55
*.iml
6+
.cache
7+
8+
docs/changelog.md
9+
docs/contributing.md
10+
docs/home.md
11+
docs/vendors.md
12+
docs/examples/**/*.md

CHANGELOG.md

Lines changed: 81 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,76 @@ image: "https://raw.githubusercontent.com/bitol-io/artwork/main/horizontal/color
66

77
This document tracks the history and evolution of the **Open Data Contract Standard**.
88

9+
# v3.0.0 - 2024-10-05 - IN REVIEW
10+
11+
* **New section**: Support & communication channels.
12+
* **New section**: Servers.
13+
* **Changes** to fundamentals :
14+
* Rename `uuid` to `id`.
15+
* Add `name`.
16+
* Rename `quantumName` to `dataProduct` and make it optional.
17+
* Rename `datasetDomain` to `domain` (we avoid the dataset prefix).
18+
* Drop `datasetKind` (example: `virtualDataset`, was optional, have not seen any usage).
19+
* Drop `userConsumptionMode` (examples: `analytical`, was optional, already deprecated in v2.).
20+
* Drop `sourceSystem` (example: `bigQuery`, information will be encoded in servers).
21+
* Drop `sourcePlatform` (example: `googleCloudPlatform`, information will be encoded in servers).
22+
* Drop `productSlackChannel` (will move to support channels).
23+
* Drop `productFeedbackUrl` (will move to support channels).
24+
* Drop `productDl` (will move to support channels).
25+
* Drop `username` (credentials should not be stored in the data contract).
26+
* Drop `password` (credentials should not be stored in the data contract).
27+
* Drop `driverVersion` (will move to servers if needed).
28+
* Drop `driver` (will move to servers if needed).
29+
* Drop `server` (will move to servers if needed).
30+
* Drop `project` (BigQuery-specific, will move to servers).
31+
* Drop `datasetName` (BigQuery-specific, will move to servers).
32+
* Drop `database` (BigQuery-specific, will move to servers).
33+
* Drop `schedulerAppName` (not part of the contract).
34+
* **Changes** to Schema:
35+
* Major changes, check spec.
36+
* Adds support for non table formats, hierarchies, and arrays.
37+
* `name` is a new field
38+
* `items` is a new field
39+
* `priorTableName` is not supported anymore, if needed, consider a custom property.
40+
* `table` is not supported anymore, if needed, consider using `name`.
41+
* `columns` is now `properties`
42+
* `dataGranularity` is now `dataGranularityDescription`.
43+
* `encryptedColumnName`is now `encryptedName`.
44+
* `partitionStatus` is now `partitioned`.
45+
* `clusterStatus` is not supported anymore, if needed, consider a custom property.
46+
* `clusterKeyPosition` is not supported anymore, if needed, consider a custom property.
47+
* `sampleValues` is now `examples`.
48+
* `isNullable` is now `required`.
49+
* `isUnique` is now `unique`.
50+
* `isPrimaryKey` is now `primaryKey`.
51+
* `criticalDataElementStatus` is now `criticalDataElement`.
52+
* `clusterKeyPosition` is not supported anymore, if needed, consider a custom property.
53+
* `transformSourceTables` is now `transformSourceObjects`
54+
* Restrict `schema.*.logicalType` to be one of `string`, `date`, `number`, `integer`, `object`, `array`, `boolean`.
55+
* Add `schema.*.logicalTypeOptions`.
56+
* **Changes** to Data Quality:
57+
* Significant changes have been applied to support more tools and use cases. Please review the new section.
58+
* If needed, `templateName` is a custom property.
59+
* `toolName` is obsolete, replaced by `type=custom; engine: <engine name>`.
60+
* `scheduleCronExpression` is replaced by `schedule` and `scheduler`. `scheduleCronExpression: 0 20 * * *` becomes `schedule: 0 20 * * *` and `scheduler: cron`.
61+
* Pricing:
62+
* No changes.
63+
* **Changes** to team (fka stakeholders):
64+
* Replaces `stakeholders`. Content stays the same.
65+
* **Changes** to Role:
66+
* Added `description`
67+
* Changed `access` is not required anymore
68+
* Security:
69+
* No changes.
70+
* **Changes** to SLA:
71+
* Starting with v3, the schema is not purely tables and columns, hence minor modifications: columns are now elements.
72+
* `slaDefaultColumn` is now `slaDefaultElement`.
73+
* `column` is now `element`.
74+
* Explicit reference to Data QoS.
75+
* **Changes** to custom and other properties:
76+
* `systemInstance` is not supported anymore, if needed, consider a custom property.
77+
78+
979
# v2.2.2 - 2024-05-23 - APPROVED
1080

1181
* In JSON schema validation:
@@ -14,12 +84,13 @@ This document tracks the history and evolution of the **Open Data Contract Stand
1484
* Change `price.priceAmount` data type from `string` to `number`.
1585
* Change `slaProperties.value` data type from `string` to `oneOf[string, number]`.
1686
* Change `slaProperties.valueExt` data type from `string` to `oneOf[string, number]`.
17-
* Update [examples](docs/examples) to adhere to JSON schema.
18-
* Full example from README directs to [full-example.yaml](docs/examples/all/full-example.yaml).
87+
* Update [examples](docs/examples/README.md) to adhere to JSON schema.
88+
* Full example from README directs to [full-example.yaml](docs/examples/all/full-example.odcs.yaml).
1989
* Add in mkdocs for creating a [documentation website](https://bitol-io.github.io/open-data-contract-standard/). Check [building-doc.md](building-doc.md).
2090
* Add vendors page [vendors.md](vendors.md). Feel free to add anyone there.
2191

22-
# v2.2.1 - 2023-12-18 - APPROVED
92+
93+
# v2.2.1 - 2023-12-18 - REPLACED BY V2.2.2
2394

2495
* Reformat quality examples to be valid YAML.
2596
* Type of definition for authority have standard values: `businessDefinition`, `transformationImplementation`, `videoTutorial`, `tutorial`, and `implementation`.
@@ -28,7 +99,8 @@ This document tracks the history and evolution of the **Open Data Contract Stand
2899
* Integrated as part of [Bitol](https://lfaidata.foundation/projects/bitol/).
29100
* Reformat Markdown tables.
30101

31-
# v2.2.0 - 2023-07-27 - APPROVED
102+
103+
# v2.2.0 - 2023-07-27 - REPLACED BY V2.2.1
32104

33105
* New name to Open Data Contract Standard.
34106
* `templateName` is now called `standardVersion`, v2.2.0 parsers should account for this change and support both to avoid a breaking change.
@@ -37,12 +109,14 @@ This document tracks the history and evolution of the **Open Data Contract Stand
37109
* Various improvements and typo corrections.
38110
* Finalization of fork under AIDA User Group.
39111

40-
# v2.1.1 - 2023-04-26 - APPROVED
112+
113+
# v2.1.1 - 2023-04-26 - REPLACED BY V2.2.0
41114

42115
* Open source version.
43116
* Additional value field `valueExt` in SLA.
44117

45-
# v2.1.0 - 2023-03-23 - APPROVED
118+
119+
# v2.1.0 - 2023-03-23 - REPLACED BY V2.1.1
46120

47121
## Data Quality
48122
The data contract adds elements specifically for interfacing with the Data Quality tooling.
@@ -68,7 +142,7 @@ The service-level agreements not previously used are more detailed to follow the
68142
## Other
69143
Removed the weight for system ratings from the data contract. Their default values remain.
70144

71-
# v2.0.0 - SUPERSEED BY V2.1.0
145+
# v2.0.0 - REPLACED BY V2.1.0
72146

73147
## Guidelines & Evolution
74148
* [Type case](https://google.github.io/styleguide/jsoncstyleguide.xml?showone=Property_Name_Format#Property_Name_Format)

CONTRIBUTING.md

Lines changed: 2 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -4,88 +4,7 @@ description: "How you can contribute to the Open Data Contract Standard (ODCS)."
44
image: "https://raw.githubusercontent.com/bitol-io/artwork/main/horizontal/color/Bitol_Logo_color.svg"
55
---
66

7-
# Open Data Contract Standard
7+
# Contributing to Open Data Contract Standard
88

9-
## Executive summary
10-
First off, thanks for taking the time to contribute! ❤️
9+
Thank you for your interest in contributing to Open Data Contract Standard (ODCS). Please refer to the [TSC contributing guidelines](https://github.com/bitol-io/tsc/blob/main/CONTRIBUTING.md).
1110

12-
All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉
13-
14-
You do not have to be a member of AIDA User Group to contribute, although becoming a member is free. Strength is always in the number. Check [it out](https://aidausergroup.org/join/).
15-
16-
> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
17-
> - Star the project.
18-
> - Tweet about it.
19-
> - Refer this project in your project's readme.
20-
> - Mention the project at local meetups and tell your friends/colleagues.
21-
22-
<!-- omit in toc -->
23-
## Table of Contents
24-
25-
- [Code of Conduct](#code-of-conduct)
26-
- [I Have a Question](#i-have-a-question)
27-
- [I Want To Contribute](#i-want-to-contribute)
28-
- [Suggesting Enhancements](#suggesting-enhancements)
29-
- [Improving The Documentation](#improving-the-documentation)
30-
- [Join The Project Team](#join-the-project-team)
31-
32-
33-
## Code of Conduct
34-
35-
This project and everyone participating in it is governed by the
36-
[Open Data Contract Standard Code of Conduct](blob/master/CODE_OF_CONDUCT.md).
37-
By participating, you are expected to uphold this code. Please report unacceptable behavior
38-
to [@jgperrin](https://github.com/jgperrin).
39-
40-
41-
## I Have a Question
42-
43-
** New **
44-
45-
AIDA User Group also opened its Slack for Data Contract discussion. It is an alternate way of contributing to this project. The Slack channel is now [available](https://aidaug.slack.com/archives/C05UZRSBKLY).
46-
47-
You have to be a member of AIDA User Group (it's free) to have access to our Slack channel. All the details are [here](https://aidausergroup.org/welcome/).
48-
49-
> If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/AIDAUserGroup/open-data-contract-standard).
50-
51-
Before you ask a question, it is best to search for existing [Issues](https://github.com/bitol-io/open-data-contract-standard/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.
52-
53-
If you then still feel the need to ask a question and need clarification, we recommend the following:
54-
55-
- Open a [New Issue](https://github.com/bitol-io/open-data-contract-standard/issues/new).
56-
- Provide as much context as you can about what you're running into.
57-
58-
We will then take care of the issue as soon as possible.
59-
60-
## I Want To Contribute
61-
62-
> ### Legal Notice <!-- omit in toc -->
63-
> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license.
64-
65-
### Suggesting Enhancements
66-
67-
This section guides you through submitting an enhancement suggestion for Data Contract Template, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
68-
69-
<!-- omit in toc -->
70-
#### Before Submitting an Enhancement
71-
72-
- Make sure that you are using the latest version.
73-
- Read the [documentation](https://github.com/AIDAUserGroup/open-data-contract-standard) carefully and find out if the functionality is already covered.
74-
- Perform a [search](https://github.com/bitol-io/open-data-contract-standard/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
75-
- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset.
76-
77-
<!-- omit in toc -->
78-
#### How Do I Submit a Good Enhancement Suggestion?
79-
80-
Enhancement suggestions are tracked as [GitHub issues](https://github.com/bitol-io/open-data-contract-standard/issues).
81-
82-
- Use a **clear and descriptive title** for the issue to identify the suggestion.
83-
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
84-
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.
85-
- **Explain why this enhancement would be useful** to most Open Data Contract Standard users. You may also want to point out the other projects that solved it better and which could serve as inspiration.
86-
87-
### Improving The Documentation
88-
Please contact [@jgperrin](https://github.com/jgperrin). Examples are always welcome.
89-
90-
## Join The Project Team
91-
Please contact [@jgperrin](https://github.com/jgperrin).

README.md

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Welcome!
1313
Thanks for your interest and for taking the time to come here! ❤️
1414

1515
## Executive summary
16-
This standard describes a structure for a **data contract**. Its current version is v2.2.2. It is available for you as an Apache 2.0 license. Contributions are welcome!
16+
This standard describes a structure for a **data contract**. Its current version is v3.0.0. It is available for you as an Apache 2.0 license. Contributions are welcome!
1717

1818
## Discover the open standard
1919
A reader-friendly version of the standard can be found on its [dedicated site](https://bitol-io.github.io/open-data-contract-standard/).
@@ -25,14 +25,18 @@ Discover the [Open Data Contract Standard](docs/README.md). This file contains s
2525
### The basics of a data contract
2626
A data contract defines the agreement between a data producer and consumers. A data contract contains several sections:
2727

28-
* [Fundamentals](docs/README.md#demographics).
29-
* [Schema](docs/README.md#dataset-and-schema).
30-
* [Data quality](docs/README.md#data-quality-).
31-
* [Service-level agreement (SLA)](docs/README.md#service-level-agreement).
32-
* [Security & stakeholders](docs/README.md#stakeholders).
33-
* [Custom properties](docs/README.md#other-properties).
28+
* [Fundamentals](docs/README.md#fundamentals).
29+
* [Schema](docs/README.md#schema).
30+
* [Data quality](docs/README.md#data-quality).
31+
* [Support & communication channels](docs/README.md#support-and-communication-channels)
32+
* [Pricing](docs/README.md#pricing)
33+
* [Team](docs/README.md#team)
34+
* [Roles](docs/README.md#roles)
35+
* [Service-level agreement (SLA)](docs/README.md#service-level-agreement-sla).
36+
* [Infrastructures & servers](docs/README.md#infrastructure-and-servers)
37+
* [Custom properties](docs/README.md#custom-properties).
3438

35-
![Data contract schema](docs/img/data-contract-v2.2.1-schema.svg "Data contract schema")
39+
![Data contract schema](docs/img/data-contract-diagram-latest.svg "Data contract schema")
3640

3741
*Figure 1: illustration of a data contract, its principal contributors, sections, and usage.*
3842

@@ -44,30 +48,11 @@ validation of your YAML files. Links below show how you can import the schema:
4448
- [IntelliJ](https://www.jetbrains.com/help/idea/json.html#ws_json_schema_add_custom)
4549
- [VS Code](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings)
4650

47-
## Contributing to the project
48-
Check out the [CONTRIBUTING](./CONTRIBUTING.md) file.
49-
5051
## Articles and Other Resources
52+
Check out the [resources](resources.md) page.
5153

52-
* 2024-07-17 - [Data Contracts in Action: Testing](https://medium.com/@pflooky/data-contracts-in-action-testing-111631338657)
53-
* 2024-06-12 - [The Future of Data Management: An Enabler of AI Development? A Basic Illustration with RAG, Open Standards, and Data Contracts](https://blog.owulveryck.info/2024/06/12/the-future-of-data-management-an-enabler-of-ai-development-a-basic-illustration-with-rag-open-standards-and-data-contracts.html)
54-
* 2024-05-30 - [ODCS Roadmap](https://medium.com/abeadata/odcs-roadmap-9b9a17367af4)
55-
* 2024-05-25 - [Conceptual model of Data Quality of Service as Code by Jarkko Moilanen](https://aidausergroup.org/2024/05/25/aida-user-group-forecaster-pi-day-highlights-data-quality-whats-new/)
56-
* 2024-02-06 - [Getting started with ODCS](https://medium.com/abeadata/getting-started-with-odcs-3ba790707879)
57-
* 2023-12-08 - [Why the Need for Standardizing Data Contracts?](https://medium.com/abeadata/why-the-need-for-standardizing-data-contracts-133bc3491148)
58-
* 2023-11-30 - [Linux Foundation AI & Data - Bitol Joins LF AI & Data as New Sandbox Project](https://lfaidata.foundation/blog/2023/11/30/bitol-joins-lf-ai-data-as-new-sandbox-project/)
59-
* 2023-11-30 - [AIDAUG - Bitol Joins LF AI & Data as New Sandbox Project](https://aidausergroup.org/2023/11/30/bitol-joins-lf-ai-data-as-new-sandbox-project/)
60-
* 2023-11-22 - [What is, and what isn’t, a data contract](https://datacreation.substack.com/p/what-is-and-what-isnt-a-data-contract)
61-
* 2023-10-01 - [Data Contracts: A Bridge Connecting Two Worlds](https://medium.com/@atanas.iliev.ai/data-contracts-a-bridge-connecting-two-worlds-404eff1d970d)
62-
* 2023-09-10 - [Data Contracts 101](https://medium.com/p/568a9adbf9a9)
63-
* 2023-08-10 - [Welcome to the Open Data Contract Standard](https://jgp.ai/2023/08/09/welcome-to-the-open-data-contract-standard/)
64-
* 2023-05-11 - [Data Contracts – Everything You Need to Know](https://www.montecarlodata.com/blog-data-contracts-explained/)
65-
* 2023-05-07 - [Data Engineering Weekly #130 - Data Contract in the Wild with PayPal’s Data Contract Template](https://www.dataengineeringweekly.com/p/data-engineering-weekly-130)
66-
* 2023-05-06 - [PayPal เปิด Data Contract เป็น Open Source Template ให้ไปใช้งานกัน](https://discuss.dataengineercafe.io/t/paypal-data-contract-open-source-template/581/1)
67-
* 2023-05-05 - [Jonathan Neo (j__neo ) on Reddit](https://www.reddit.com/r/dataengineering/comments/137glbo/comment/jixw5hj/?utm_source=reddit&utm_medium=web2x&context=3)
68-
* 2023-05-01 - [PayPal open sources its data contract template](https://jgp.ai/2023/05/01/paypal-open-sources-its-data-contract-template/)
69-
70-
If you spot an article about the Open Data Contract Standard, make a pull request!
54+
## Contributing to the project
55+
Check out the [CONTRIBUTING](./CONTRIBUTING.md) page.
7156

7257
## More
7358

0 commit comments

Comments
 (0)