|
1 | | -# oae-data-protocol (⚠️ work in progress ⚠️) |
| 1 | +# OAE Data Protocol Schemas |
2 | 2 |
|
3 | | -Base ontology and data schemas for ocean alkalinity enhancement projects, experiments, and field trails. This project aims to be a technical complement to Submarine Scientific's [OAE Data Protocol](https://www.carbontosea.org/oae-data-protocol/), developed in conjunction with Carbon To Sea and NOAA. |
| 3 | +> ⚠️ **Alpha Software**: These schemas are under active development and may change |
| 4 | +> without notice. We do not currently guarantee backwards compatibility between |
| 5 | +> versions. Once the schemas stabilize, we will establish a formal release process |
| 6 | +> with semantic versioning to support clients and integrators who need stability |
| 7 | +> guarantees. |
4 | 8 |
|
5 | | -## Website |
| 9 | +The [OAE Data Management Protocol](http://carbontosea.org/oae-data-protocol/1-0-0/) outlines recommendations |
| 10 | +for producing consistent data and metadata for Ocean Alkalinity Enhancement (OAE) research projects. |
6 | 11 |
|
7 | | -[https://clevinson.github.io/oae-data-protocol](https://clevinson.github.io/oae-data-protocol) |
| 12 | +This repository provides machine-readable schemas and data standards for the protocol. It focuses on formal specifications for metadata about OAE projects, experiments, and datasets—not the individual data variables within datasets themselves. |
| 13 | + |
| 14 | +**For Protocol Compliance**: As of the v1.0 protocol launch (August 25, 2025), projects seeking to comply with the protocol guidelines should use the Excel templates available on the [protocol website](http://carbontosea.org/oae-data-protocol/1-0-0/). These templates are also available in the [`templates/excel`](./templates/excel) directory of this repository. |
| 15 | + |
| 16 | +**Beta Testing**: Organizations and researchers interested in testing the software tooling under development in this repository should contact [jacki@submarine.earth](mailto:jacki@submarine.earth). |
| 17 | + |
| 18 | +## What's Inside |
| 19 | + |
| 20 | +This repository contains [LinkML](https://linkml.io) schema definitions that can generate: |
| 21 | + |
| 22 | +- **JSON Schema** for data validation and form generation |
| 23 | +- **Python dataclasses** for programmatic data handling |
| 24 | +- **Documentation** (what you're reading now!) |
| 25 | +- Support for multiple serialization formats (JSON, YAML, RDF, etc.) |
| 26 | + |
| 27 | +## Documentation |
| 28 | + |
| 29 | +📖 **[View the schema documentation](https://submarine-mrv.github.io/oae-data-protocol)** |
| 30 | + |
| 31 | +## Quick Start |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | +### Using the Schemas |
| 36 | + |
| 37 | +The generated schemas are available in the `project/` directory: |
| 38 | + |
| 39 | +- `project/jsonschema/` - JSON Schema definitions |
| 40 | +- `src/oae_data_protocol/datamodel/` - Python dataclasses |
8 | 41 |
|
9 | 42 | ## Repository Structure |
10 | 43 |
|
11 | | -- [examples/](examples/) - example data |
12 | | -- [project/](project/) - project files (do not edit these) |
13 | | -- [src/](src/) - source files (edit these) |
14 | | - - [oae_data_protocol](src/oae_data_protocol) |
15 | | - - [schema](src/oae_data_protocol/schema) -- LinkML schema |
16 | | - (edit this) |
17 | | - - [datamodel](src/oae_data_protocol/datamodel) -- generated |
18 | | - Python datamodel |
19 | | -- [tests/](tests/) - Python tests |
20 | | - |
21 | | -## Developer Documentation |
22 | | - |
23 | | -<details> |
24 | | -To run commands you may use good old make or the command runner [just](https://github.com/casey/just/) which is a better choice on Windows. |
25 | | -Use the `make` command or `duty` commands to generate project artefacts: |
26 | | -* `make help` or `just --list`: list all pre-defined tasks |
27 | | -* `make all` or `just all`: make everything |
28 | | -* `make deploy` or `just deploy`: deploys site |
29 | | -</details> |
30 | | - |
31 | | -## Credits |
32 | | - |
33 | | -This project was made with |
34 | | -[linkml-project-cookiecutter](https://github.com/linkml/linkml-project-cookiecutter). |
| 44 | +``` |
| 45 | +├── src/ |
| 46 | +│ └── oae_data_protocol/ |
| 47 | +│ ├── schema/ # LinkML schema definitions (edit these!) |
| 48 | +│ └── datamodel/ # Generated Python dataclasses |
| 49 | +├── project/ # Generated project files (don't edit) |
| 50 | +├── examples/ # Example data files |
| 51 | +├── tests/ # Python tests |
| 52 | +└── docs/ # Generated documentation |
| 53 | +``` |
| 54 | + |
| 55 | +## Development |
| 56 | + |
| 57 | +### Installation |
| 58 | + |
| 59 | +```bash |
| 60 | +# Clone the repository |
| 61 | +git clone https://github.com/submarine-mrv/oae-data-protocol.git |
| 62 | +cd oae-data-protocol |
| 63 | + |
| 64 | +# Install dependencies |
| 65 | +make install |
| 66 | + |
| 67 | +# Generate schema artifacts |
| 68 | +make gen-project |
| 69 | +``` |
| 70 | + |
| 71 | +### Common Commands |
| 72 | + |
| 73 | +```bash |
| 74 | +make help # Show all available commands |
| 75 | +make gen-project # Regenerate schemas and Python code |
| 76 | +make test # Run tests |
| 77 | +make lint # Lint LinkML schemas |
| 78 | +make serve # Build and serve documentation locally |
| 79 | +``` |
| 80 | + |
| 81 | +### Working with Schemas |
| 82 | + |
| 83 | +The schema files in `src/oae_data_protocol/schema/` are the source of truth. Edit these files and run `make gen-project` to regenerate all derived artifacts. |
| 84 | + |
| 85 | +## Project Status |
| 86 | + |
| 87 | +**Current Status**: Alpha development |
| 88 | + |
| 89 | +We're actively developing and refining these schemas based on real-world usage and community feedback. |
| 90 | +Breaking changes may occur as we work toward a stable v1.0 release of these schemas which will have parity |
| 91 | +with v1.0.0 of the protocol. |
| 92 | + |
| 93 | +## Credits & Acknowledgments |
| 94 | + |
| 95 | +This project is built with: |
| 96 | +- [LinkML](https://linkml.io) for schema definitions |
| 97 | +- [linkml-project-cookiecutter](https://github.com/linkml/linkml-project-cookiecutter) for project structure |
| 98 | + |
| 99 | +Development of the OAE Data Protocol and its corresponding technical tooling has been made possible with |
| 100 | +funding and steering support from [Carbon To Sea](https://carbontosea.org). |
| 101 | + |
| 102 | +## License |
| 103 | + |
| 104 | +See [LICENSE](./LICENSE) for details. |
0 commit comments