Skip to content

Commit b06540a

Browse files
authored
docs: improve documentation and clean up project configuration (#2)
* reorient make tasks and clean up gen-project config * updates to config * move docs related javascript files * update readme, add other excel templates
1 parent bf07055 commit b06540a

12 files changed

Lines changed: 176 additions & 275 deletions

CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
:+1: First of all: Thank you for taking the time to contribute!
44

55
The following is a set of guidelines for contributing to
6-
oae-data-protocol. These guidelines are not strict rules.
6+
oae-data-protocol. The bulk of this document is provided as default
7+
contributing guidelines for LinkML projects. These guidelines are not strict rules.
78
Use your best judgment, and feel free to propose changes to this document
89
in a pull request.
910

Makefile

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -195,18 +195,6 @@ examples/output: src/$(SCHEMA_NAME)/schema/$(SCHEMA_NAME).yaml
195195
serve: mkd-serve
196196

197197

198-
# Generate dyanmic enums
199-
200-
ontologies/sea_names.ttl:
201-
rm -rf ontologies/sea_names.ttl
202-
curl 'https://vocab.nerc.ac.uk/collection/C16/current/' -H "Accept: text/turtle" > ontologies/sea_names.ttl
203-
204-
enums: ontologies/sea_names.ttl
205-
vskit expand -s src/oae_data_protocol/schema/dynamic_enums.yaml -o src/oae_data_protocol/schema/dynamic_enums_expanded.yaml --config vskit-config.yaml
206-
207-
json-schema:
208-
gen-json-schema src/oae_data_protocol/schema/oae_data_protocol.yaml -t OAEProject --title-from title > $(JSON_SCHEMA_OUT)
209-
210198

211199
# Python datamodel
212200
$(PYMODEL):

README.md

Lines changed: 98 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,104 @@
1-
# oae-data-protocol (⚠️ work in progress ⚠️)
1+
# OAE Data Protocol Schemas
22

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.
48
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.
611

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
841

942
## Repository Structure
1043

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.

config.yaml

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,19 @@
1-
# Configuration of generators (defaults illustrated)
1+
# Configuration of generators
2+
# See `make gen-project` task or https://linkml.io/linkml/generators/project-generator.html
23
---
34
includes:
45
- jsonschema
56
- python
7+
68
generator_args:
7-
excel:
8-
mergeimports: true
9-
owl:
10-
mergeimports: true
11-
metaclasses: true
12-
type_objects: true
13-
# throws 'Cannot handle metadata profile: rdfs'
14-
# metadata_profile: rdfs
15-
markdown:
16-
mergeimports: true
17-
graphql:
18-
mergeimports: true
19-
java:
20-
mergeimports: true
21-
metadata: true
22-
jsonld:
23-
mergeimports: true
249
jsonschema:
2510
mergeimports: true
2611
include_null: false
2712
top_class: OAEProject
2813
title_from: title
29-
jsonldcontext:
30-
mergeimports: true
3114
python:
3215
mergeimports: true
33-
prefixmap:
34-
mergeimports: true
35-
proto:
36-
mergeimports: true
37-
shacl:
38-
mergeimports: true
39-
shex:
40-
mergeimports: true
41-
sqlddl:
42-
mergeimports: true
43-
typescript:
44-
mergeimports: true
45-
metadata: true
4616

47-
...
17+
# Unused generators (can be re-enabled as needed):
18+
# excel, owl, markdown, graphql, java, jsonld, jsonldcontext,
19+
# prefixmap, proto, shacl, shex, sqlddl, typescript

0 commit comments

Comments
 (0)