Skip to content

Commit a4caa39

Browse files
committed
Update docs (very basic yet)
1 parent 75b50d5 commit a4caa39

1 file changed

Lines changed: 16 additions & 61 deletions

File tree

docs/source/dev/data_model.md

Lines changed: 16 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -16,73 +16,28 @@ All the data is collected in a directory called `.hermes` located in the root of
1616
You should not need to interact with this data directly.
1717
Instead, use {class}`hermes.model.context.HermesContext` and respective subclasses to access the data in a consistent way.
1818

19-
20-
## Harvest Data
21-
22-
The data of the havesters is cached in the sub-directory `.hermes/harvest`.
23-
24-
2519
## Data representation
2620

27-
We are trying to be fully JSON-LD compliant. However, there are two special cases, where we are a bit more lazy:
21+
*hermes* operates on expanded JSON-LD datasets.
22+
All internal data must be valid JSON-LD datasets in expanded form.
23+
All internal data must use CodeMeta vocabulary where applicable.
24+
All vocabulary used in internal datasets must be defined by a JSON-LD context.
2825

29-
- Storing provenance of harvested data (for later curation)
30-
- Storing alternatives of harvested data (for later curation)
26+
*hermes* provides classes that facilitate the access to the expanded JSON-LD data.
3127

32-
Internally, `hermes` works with the expanded version of the JSON-LD file.
33-
However, there are helper classes that allow you to use compact references.
28+
### *hermes* internal processing data
3429

35-
For the storing of provenance and alternatives, we introduce our own terms.
36-
Especially, we add a `hermes:meta` key to the top level record.
37-
This top level key contains a list of additional meta-metadata (i.e., provenance and alternatives).
30+
*hermes* collects internal processing information in the `hermes-rt` namespace.
3831

39-
Each entry in the meta-metadata list is a dictionary that contains at least a `reference` value and one or more of
40-
`provenance` and `alternative` keys.
41-
The `refrence` value should be a valid JSON Path that references the object that is subject to these metadata.
42-
The `provenance` value should be a JSON dataset that keeps information about where the data came from.
43-
The `alternative` value should be a list with alternative records.
32+
## Data cache
4433

45-
Each alternative record contains a `value` and probably an additional `provenance` key.
34+
For each processing step there exists a command directory in the `.hermes` dir.
35+
Within this command, there exists one further plugin directory for each plugin.
36+
Within this plugin diretory, there are up to for files stores:
4637

47-
Example:
38+
- `codemeta.json`: The (possibly extended) CodeMeta data representation of the dataset.
39+
This should be valid compact JSON-LD data.
40+
- `expanded.json`: The expanded representation of the dataset. This should be valid expanded JSON-LD data.
41+
- `context.json`: The JSON-LD context that can be used to transform `expanded.json` into `codemeta.json`.
42+
- `prov.json`: A JSON-LD dataset that contains the provenance collected by *hermes* during the run.
4843

49-
```json
50-
{
51-
"@context": [
52-
"https://doi.org/10.5063/schema/codemeta-2.0",
53-
{"hermes": "https://schema.software-metadata.pub/hermes/1.0"},
54-
{"legalName": {"@id": "schema:name"}}
55-
],
56-
"@type": "SoftwareSourceCode",
57-
"author": [
58-
{
59-
"@id": "https://orcid.org/0000-0001-6372-3853",
60-
"@type": "Person",
61-
"affiliation": {
62-
"@type": "Organization",
63-
"legalName": "German Aerospace Center (DLR)"
64-
},
65-
"familyName": "Meinel",
66-
"givenName": "Michael",
67-
"email": "michael.meinel@dlr.de"
68-
}
69-
],
70-
"description": "Tool to automate software publication. Not stable yet.",
71-
"identifier": "https://doi.org/10.5281/zenodo.13221384",
72-
"license": "https://spdx.org/licenses/Apache-2.0",
73-
"name": "hermes",
74-
"version": "0.8.1",
75-
"hermes:meta": [
76-
{
77-
"reference": "$",
78-
"provenance": { "harvester": "cff", "source": "CITATION.cff" }
79-
},
80-
{
81-
"reference": "$.author.0.affiliation.legalName",
82-
"alternative": [
83-
{"value": "DLR e.V.", "provenance": { "harvester": "orcid" }}
84-
],
85-
}
86-
]
87-
}
88-
```

0 commit comments

Comments
 (0)