Skip to content

Commit 53b0108

Browse files
seebiclaude
andcommitted
explain what the package type answer actually decides
The README named the two package types in a table row and nowhere else, so nothing said what choosing one does. Add a Package Types section: a vocabulary package is a single RDFS/OWL ontology, kept on its own so other packages can reuse exactly the ontology they need; a project package is the generic type without limitations, and is what anything that is not exactly one ontology has to be. Each states what it means for the generated manifest, and a short table collects the three things that actually differ. While there, mark the two dependency questions as project only and document the marketplace answer, which had no row at all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016MGuMik6ThZXqcQR6VhBHg
1 parent ce74f6d commit 53b0108

2 files changed

Lines changed: 59 additions & 3 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
1616
- Three authoring skills in the same directory: `package-content` (what `cpa-manifest.json` must declare, the licence rules, and how to check a package without a Corporate Memory connection), `build-projects` (DataIntegration project exports and workflow tasks) and `shapes` (the SHACL/shui shape catalog that drives the Explore UI)
1717
- vocabulary packages receive `package-content` only, since a build project and a shape catalog are things they do not have
1818

19+
### Changed
20+
21+
- The README now has a *Package Types* section explaining what the `package_type` answer decides - what each type ships, why a vocabulary package is asked no dependency questions, and which authoring skills a project package receives on top
22+
1923
## [1.5.0] 2026-09-16
2024

2125
### Added

‎README.md‎

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,57 @@
99

1010
A [Copier](https://copier.readthedocs.io/) template for creating [eccenca Corporate Memory (Marketplace) packages](https://go.eccenca.com/feature/marketplace-packages).
1111

12+
## Package Types
13+
14+
`package_type` is the first question the template asks, and it is more than a
15+
label: it decides what the generated manifest declares, which further questions
16+
you are asked, and which authoring skills the package receives.
17+
18+
### Vocabulary Package (`vocabulary`)
19+
20+
A vocabulary package ships a single RDFS/OWL ontology: the classes, properties
21+
and annotations of one schema. Keeping it on its own is the point of this type -
22+
other packages can then reuse exactly the ontology they need, instead of pulling
23+
in a bloated all-in-one project that happens to carry it as well.
24+
25+
Its graph entry is declared with `register_as_vocabulary: true`, so installing
26+
the package does not only load the graph, it registers it in the vocabulary
27+
catalog of Corporate Memory, where it becomes available to the tools that build
28+
on it. This is also why the graph needs an `owl:Ontology` declaration carrying
29+
VANN namespace metadata, see [Graphs](#graphs).
30+
31+
A marketplace vocabulary package cannot declare dependencies at all, so the
32+
template does not ask for `python_dependencies` or `vocab_dependencies` - an
33+
answer would have nowhere to go in the manifest.
34+
35+
### Project Package (`project`)
36+
37+
A project package is the generic type, and the one without limitations: it
38+
ships everything else a Corporate Memory setup could need, and several of them
39+
at once - DataIntegration project exports (`.zip`), data and shape graphs,
40+
images. If a package is not exactly one ontology, it is a project package.
41+
42+
Its graph entries are generated with `register_as_vocabulary: false`, because
43+
they carry data rather than schema - a package that also wants to register a
44+
vocabulary can still set the flag on an individual file entry.
45+
46+
A project package may depend on Python packages (typically cmem plugins,
47+
installed from PyPI) and on other marketplace packages. The template asks for
48+
both and turns the answers into the `dependencies` entries of the manifest -
49+
this is where a vocabulary package is named, rather than its ontology copied
50+
into this one.
51+
52+
### What the answer changes
53+
54+
Everything else is the same for both types - the repository layout, the
55+
`Taskfile.yaml`, the CI pipeline and the build, install and publish workflow:
56+
57+
| | vocabulary | project |
58+
|---|---|---|
59+
| generated graph entry | `register_as_vocabulary: true` | `register_as_vocabulary: false` |
60+
| dependency questions | not asked | `python_dependencies`, `vocab_dependencies` |
61+
| shipped [skills](#generated-structure) | `package-content`, `template-feedback` | the same, plus `build-projects` and `shapes` |
62+
1263
## Prerequisites
1364

1465
- Python 3.10+
@@ -32,12 +83,13 @@ copier copy -r develop gh:eccenca/cmem-package-template your-new-vocabulary-pack
3283

3384
| Variable | Description | Default |
3485
|----------|-------------|---------|
35-
| `package_type` | Type: vocabulary, project | `vocabulary` |
86+
| `package_type` | Type: vocabulary, project - see [Package Types](#package-types) | `vocabulary` |
3687
| `package_id` | Package ID (lowercase, hyphens allowed) | - |
3788
| `package_name` | Human-readable name | - |
3889
| `package_description` | Short description | - |
39-
| `python_dependencies` | Comma-separated Python package dependencies | - |
40-
| `vocab_dependencies` | Comma-separated vocabulary/project dependencies | - |
90+
| `python_dependencies` | Comma-separated Python package dependencies (project packages only) | - |
91+
| `vocab_dependencies` | Comma-separated vocabulary/project dependencies (project packages only) | - |
92+
| `marketplace` | Publish this package to the marketplace? A no leaves the publish job out of `.gitlab-ci.yml` | `true` |
4193
| `github_page` | Link to GitHub page of the package | - |
4294

4395
## Generated Structure

0 commit comments

Comments
 (0)