Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
932cb9a
WIP: add membership credentials
jdsika Jul 2, 2025
1052745
feat: add trust framework 2411
jdsika Jul 4, 2025
d36c0d4
renamings
jdsika Jul 22, 2025
6f7f29f
add development of trust framework
jdsika Aug 5, 2025
bb0fe58
add new files
jdsika Aug 5, 2025
3de171e
WIP
jdsika Aug 6, 2025
68c0fc1
WIP
jdsika Aug 7, 2025
67a1b15
ready for first review
jdsika Aug 8, 2025
27b1849
Reorganized revocation entries
flhps Nov 3, 2025
8d77ab6
Add general semantic type for the SimpulseIdCredential
jdsika Nov 26, 2025
af3c707
Rename CRSetEntry to ascs:CRSetEntry
jdsika Nov 26, 2025
4a335d1
Introduce harbour:VerifiableCredential
jdsika Nov 26, 2025
bccbeeb
CRSet must be present in the in harbour:VerifiableCredential
jdsika Nov 26, 2025
e9b46fa
StatusList Array, rename Policies
jdsika Nov 26, 2025
c8e2d0b
Add additional types in credential example
jdsika Nov 26, 2025
a7e053d
Remove suffix in member did:web
jdsika Nov 26, 2025
f121949
A lot of renaming
jdsika Nov 26, 2025
5992379
more renames
jdsika Nov 26, 2025
e9f93b8
RENAMES
jdsika Nov 26, 2025
f73190e
refine member credential
jdsika Nov 26, 2025
ccca579
Add explanations for examples
flhps Nov 26, 2025
341e57d
Remove illegal schema comments
flhps Nov 26, 2025
45e9d10
a lot of changes
jdsika Nov 27, 2025
9fb2bdc
muchas changes 2
jdsika Nov 27, 2025
9e75ca4
FINALOS CHANGES
jdsika Nov 27, 2025
f79a107
refine readmes
jdsika Nov 28, 2025
cab7963
FELIX REVIEWWWW
jdsika Nov 28, 2025
9f9663c
MORE STUFFFF
jdsika Nov 28, 2025
678f36c
Company keys are admin keys
flhps Nov 28, 2025
74181cf
reworking did:web subdomains
jdsika Dec 1, 2025
3027398
further adding programs and refining key signing delegation
jdsika Dec 1, 2025
8780385
remove did:pkh and refine ontology
jdsika Dec 1, 2025
4baebd5
WIP linkML
jdsika Dec 11, 2025
9644f60
WIP LInkML
jdsika Dec 11, 2025
78a153d
WIP
jdsika Dec 11, 2025
8d59aef
WIP
jdsika Dec 12, 2025
0bad8f4
wip
jdsika Dec 12, 2025
ffc4d11
WIPPPPP
jdsika Jan 14, 2026
e0a0482
First Draft of VC Evidence
flhps Jan 17, 2026
8933ad6
update ontologies repository
jdsika Jan 20, 2026
4f6562b
remove submodule
jdsika Jan 20, 2026
f77d403
change installation instructions
jdsika Jan 22, 2026
a530112
attempt to fix examples with gx address aliases
jdsika Jan 22, 2026
a473744
attempted fix
jdsika Jan 22, 2026
6ec534e
attempted fix
jdsika Jan 22, 2026
b0ce6ad
reworked
jdsika Jan 22, 2026
2aadcbb
validation working, now fixing issues
jdsika Jan 22, 2026
7a38eb4
fix admin credential validation
jdsika Jan 22, 2026
ddd0ed4
add ci validation script
jdsika Jan 22, 2026
b731fd1
remove sub sub module from ci
jdsika Jan 22, 2026
b34f109
fix gitlab clone failure
jdsika Jan 22, 2026
ae0a1b4
fix gitlab clone failure 2
jdsika Jan 22, 2026
cc42297
fix gitlab clone failure 3
jdsika Jan 22, 2026
8524940
fix gitlab clone failure 4
jdsika Jan 22, 2026
eb53529
fix gitlab clone failure 5
jdsika Jan 22, 2026
78fd91c
fix gitlab clone failure 6
jdsika Jan 22, 2026
25875e2
fix gitlab clone failure 7
jdsika Jan 22, 2026
4e93ee1
fix gitlab clone failure 8
jdsika Jan 22, 2026
4f32c37
WIP: Harmonize IRIs
jdsika Jan 22, 2026
a63bea4
harbour WIP
jdsika Jan 23, 2026
4b15704
IRI normalization
jdsika Jan 23, 2026
e369140
feat: refine did:web and credential semantics
jdsika Feb 18, 2026
31e63b9
chore: update ontology-management-base submodule
jdsika Feb 18, 2026
197b880
# Commit Message
jdsika Feb 19, 2026
bb2ab27
chore: update submodules
jdsika Feb 19, 2026
a20a26f
feat: rework credentials as domain layer on harbour-credentials
jdsika Feb 27, 2026
93b74fe
chore: update copilot instructions for new project structure
jdsika Feb 27, 2026
87fee8b
feat: replace inline gxParticipant with harbourCredential IRI references
jdsika Mar 2, 2026
04ae418
fix(ci): align CI pipeline with Makefile targets
jdsika Mar 2, 2026
2a60de8
refactor(linkml): eliminate SHACL post-processing with proper schema …
jdsika Mar 5, 2026
fbcd262
fix(examples): resolve storyline consistency issues across credential…
jdsika Mar 6, 2026
4c7980b
feat(gx): Gaia-X 25.11 compliance, DID key linkage, evidence delegation
jdsika Mar 9, 2026
93be6bb
fix(ci): generate harbour + simpulseid artifacts before tests
jdsika Mar 9, 2026
e2e2bed
feat: did:ethr migration, docs completion, and build fixes
jdsika Mar 9, 2026
46a7f32
feat: model audit fixes, SHACL validation, and markdownlint tooling
jdsika Mar 10, 2026
fd167b6
docs: add credential data model reference and improve documentation
jdsika Mar 10, 2026
a979140
chore: update harbour-credentials submodule (did: prefix fix)
jdsika Mar 10, 2026
e6a31b9
refactor: use context-mapped short names in examples
jdsika Mar 10, 2026
c788e3a
refactor: move personal attributes into gxParticipant composition
jdsika Mar 10, 2026
afa9f28
chore: replace black/isort/flake8 with ruff
jdsika Mar 11, 2026
e9d8ca2
fix(shacl): resolve all SHACL validation failures
jdsika Mar 11, 2026
6581bbd
fix(ci): update harbour submodule with HTTPS submodule URLs
jdsika Mar 11, 2026
35b733c
fix(did): align SimpulseID Base resolver modeling
jdsika Mar 12, 2026
5f1107d
feat(workflow): group story and validation commands
jdsika Mar 12, 2026
78353a9
fix(simpulseid): align examples and docs with harbour namespace restr…
jdsika Mar 17, 2026
a070e61
chore: update linkml fork pin and regenerate artifacts
jdsika Mar 18, 2026
1e30f6d
chore: update OMB submodule pin to main
jdsika Mar 19, 2026
0d72578
feat(release): add w3id artifact publishing and clean up contexts
jdsika Mar 20, 2026
ddc2fee
chore: update harbour-credentials with covering axiom fix
jdsika Mar 20, 2026
8550e64
chore: update harbour with HTTPS schema.org GX artifacts
jdsika Mar 21, 2026
184caf8
chore: update harbour with HTTPS schema.org example fixes
jdsika Mar 21, 2026
9867aac
fix(examples): use https://schema.org/ in DID fixture contexts
jdsika Mar 21, 2026
ddf7a7f
fix(examples): add schema prefix to DID fixture contexts
jdsika Mar 21, 2026
edf7179
feat: add deterministic and xsd-anyuri-as-iri flags to simpulseid gen…
jdsika Mar 26, 2026
93bd644
chore: add normalize-prefixes flag and pin submodules
jdsika Mar 26, 2026
0e81c03
chore: bump harbour-credentials and improve agent instructions
jdsika Mar 27, 2026
49f4cfd
chore: bump harbour-credentials for test assertion fixes
jdsika Mar 27, 2026
c670c4b
chore: bump harbour-credentials for ruff formatting
jdsika Mar 27, 2026
388e077
chore: update harbour-credentials submodule pin
jdsika Mar 27, 2026
5c0cc96
fix: align HarbourVerifiable* types and update evidence VP fixture
jdsika Mar 27, 2026
1804013
chore: update harbour-credentials submodule pin
jdsika Mar 27, 2026
1afdc16
chore: update harbour-credentials submodule pin
jdsika Mar 27, 2026
96c1552
chore: update harbour-credentials submodule pin
jdsika Mar 27, 2026
e1bd1f7
fix: add harbour core context to simpulseid evidence VPs
jdsika Mar 28, 2026
da673ee
chore: update harbour pin (hybrid deterministic serializer)
jdsika Mar 28, 2026
b20e751
chore: update harbour-credentials submodule pin (rebased linkml)
jdsika Mar 30, 2026
4e3adba
chore: update harbour-credentials submodule pin (openlabel-v2 artifacts)
jdsika Mar 30, 2026
29862b2
chore: update harbour-credentials submodule pin (CI fixes)
jdsika Mar 30, 2026
97a5e61
fix(linkml): add rdfs:label slot for RDFS inference compatibility
jdsika Mar 30, 2026
c016ca3
refactor(linkml): rename publisher slot to avoid merge_dicts conflict
jdsika Mar 30, 2026
851bf42
refactor(linkml): consolidate credential types into simpulseid-core
jdsika Mar 31, 2026
b4f7b72
refactor(examples): standardize type values with prefixed CURIEs
jdsika Mar 31, 2026
025f690
refactor(examples): remove redundant harbour:Evidence from type arrays
jdsika Mar 31, 2026
98a4b57
fix: update harbour submodule with spec-aligned ranges
jdsika Apr 1, 2026
f8895cb
chore: bump harbour-credentials with interop test fix
jdsika Apr 1, 2026
eb27e4e
docs: add gitlab-ci-local to pre-push verification steps
jdsika Apr 1, 2026
3641e29
fix: align Makefile and CI with submodule dependency chain
jdsika Apr 2, 2026
a2eec92
ci: add OS and Python version matrix to all non-lint jobs
jdsika Apr 2, 2026
4002259
fix: Windows CI compatibility (long paths + shallow TS checkout)
jdsika Apr 2, 2026
447ef1a
fix: resolve DID fixture SHACL violations and Participant class_uri c…
jdsika Apr 3, 2026
89d1750
fix: align invalid test data with OrganizationParticipant class_uri
jdsika Apr 3, 2026
95a4568
chore: pin harbour-credentials with OMB v0.1.6 and sync w3id.org
jdsika Apr 4, 2026
f8d74e3
test: close SHACL test coverage gaps
jdsika Apr 4, 2026
56ec55c
ci: add cliff.toml, Node.js caching, and dependabot
jdsika Apr 4, 2026
d6b7c74
fix: align evidence VP nonce with EVES-009 delegation challenge format
jdsika Apr 4, 2026
bb98859
fix(ci): enable corepack before setup-node and fix Windows encoding
jdsika Apr 4, 2026
ee23c84
chore: pin harbour-credentials to main after squash merge
jdsika Apr 4, 2026
70fc6c8
chore: track harbour-credentials main branch in .gitmodules
jdsika Apr 4, 2026
c8285a8
chore: pin harbour-credentials with docs pipeline fix
jdsika Apr 4, 2026
c89c3ee
fix: pin harbour v1.0.0 and fix Windows CI failures
jdsika Apr 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.venv/
214 changes: 183 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,183 @@
# DEMIM Credentials

## Content
A public repository containing examples for (verifiable) credentials, associated json-ld context definitions and json manifests. The crendetials are used in the [Decentralized Digital Membership Management](https://identity.ascs.digital).
The DID of issuers and subjects and the UUIDs of the credentials have been aligned with the content of the following example [revocation registry](https://better-call.dev/ghostnet/KT1PZFXebyGvRFG8enbuVL9nrvTi4krYqeKt/storage.)

## Examples
There are two types of json-ld examples for the credentials. The member credentials and the user credential. The member credential is used to e.g. register a company with an application like e.g. [Simpulse](https://simpulse.de) for creating the company profile with minimal validated information. The user credential is used in asc(s ecosystem applications to set initial rights and roles.
The examples are once given with an external context definition and also with the attributes defined inline in the credential context itself. This is necessary as third-party libraries like [didkit](https://github.com/spruceid/didkit) do not allow external context loading due to security implications.

## Manifests
The manifest files are provided to render an identity card in a SSI wallet like e.g. [altme](https://altme.io) according to the identity foundation [wallet rendering specification](https://identity.foundation/wallet-rendering/).

## Todos
The context json files need to be hosted at https://schema.ascs.digital/AscsUserCredential/v1.
All terms need to be hosted as .pdf files at https://media.ascs.digital/terms/.

## Resources
* [Implementation Guide](https://www.w3.org/TR/vc-imp-guide/#creating-new-credential-types)
* [w3c credentials v1](https://www.w3.org/2018/credentials/v1)
* [w3c vc-json-schema](https://w3c.github.io/vc-json-schema/)
* [json schema specification](https://json-schema.org/specification)
* [public schemas](https://schema.org/)
* [transform tools](https://transform.tools/)
* [json-ld best practices](https://w3c.github.io/json-ld-bp/?specStatus=ED)
* [version 4 uuid](https://www.uuidgenerator.net/version4)
* [module: pkh-tezos](https://did.js.org/docs/api/modules/pkh_tezos/)
* [did-pkh-method-draft](https://github.com/w3c-ccg/did-pkh/blob/main/did-pkh-method-draft.md)
* [Multiassets](https://multiformats.io/)
* [Content Identifier (CID)](https://docs.ipfs.tech/concepts/content-addressing/#what-is-a-cid)
* [POC Content Identifier](https://github.com/GAIA-X4PLC-AAD/poc-ipfs-content-identifier)
# SimpulseID Credentials for the ENVITED Ecosystem

This repository contains the **Verifiable Credential (VC)** building blocks used by
[https://identity.ascs.digital/](https://identity.ascs.digital/)
to manage identities and memberships in the **ENVITED Ecosystem** of the
_Automotive Solution Center for Simulation e.V. (ASCS e.V.)_.

The repository provides:

- JSON-LD **contexts** for all SimpulseID credential types
- Example **Verifiable Credentials** (VC v2, OIDC4VP-ready)
- Example **did:web** DID documents for participants, programs, users, and admins
- **Wallet manifests** for card rendering in SSI wallets (e.g. Altme)
- RDF/OWL **ontologies** and SKOS vocabularies aligning with the Gaia-X Trust Framework and ENVITED Ecosystem Specifications (EVES)

All of this is intended to be **publicly hostable** and consumable by wallets, verifiers and services in the ENVITED ecosystem.

---

## Repository structure

### `contexts/`

JSON-LD context documents used by SimpulseID credentials, for example:

- `SimpulseIdCredentials.json` – main context for:
- `simpulseid:Participant`
- `simpulseid:AscsBaseMembership`
- `simpulseid:AscsEnvitedMembership`
- `simpulseid:Administrator`
- `simpulseid:User`
- `HarbourCredentials.json` – additional context for status / revocation information
- SKOS / code list contexts (e.g. legal form vocabulary)

These files are meant to be hosted under:

- `https://schema.ascs.digital/...`

and are referenced from the example credentials via their `@context` arrays.

---

### `examples/`

Example **Verifiable Credentials** that show how the contexts and ontologies are intended to be used.

Typical credential subjects include:

- **Participant** – organizational identity (e.g. BMW)
- **ASCS Base Membership** – base membership in ASCS e.V.
- **ASCS ENVITED Membership** – ENVITED program membership, linked to base membership
- **Administrator** – natural person with administrative rights in ENVITED / ASCS
- **User** – natural person with initial roles/rights in ENVITED ecosystem applications

Each VC uses:

- `https://www.w3.org/ns/credentials/v2` (VC Data Model v2)
- SimpulseID context from this repo
- Harbour context for `credentialStatus`
- `harbour:CRSetEntry` + `statusPurpose: "revocation"` for revocation status
- `gx:*` terms to stay compatible with the **Gaia-X Credential Format** and Trust Framework

#### `examples/did-web/`

Example **did:web DID documents** that correspond to identifiers used in the credentials, e.g.:

- Participants (`did:web:did.identity.ascs.digital:participants:...`)
- Programs (`did:web:did.identity.ascs.digital:programs:...`)
- Users & administrators (`did:web:did.identity.ascs.digital:users:...`)

These demonstrate:

- How organizational DIDs (ASCS, ENVITED programs, participants) are modelled
- How user/admin DIDs are defined _without leaking personal data_
- How to support key rotation and multiple chains (e.g. Tezos + Etherlink/EVM) via `blockchainAccountId`

In production, these DID documents are intended to be hosted under:

- `https://did.identity.ascs.digital/...`

---

### `manifests/`

Wallet **rendering manifests** for each credential type, following the
[Decentralized Identity Foundation Wallet Rendering specification](https://identity.foundation/wallet-rendering/).

They are used by wallets like **Altme** to:

- Render credential “cards” with titles, subtitles and key properties
- Show important fields such as:
- organization name, legal form, VAT ID
- membership program and hosting organization
- user/admin name, email, affiliation
- links to terms & conditions and privacy policies
- Map `credentialSubject` properties and dates (`issuanceDate`, `expirationDate`) to UI elements

Each manifest references:

- A SimpulseID schema / type (e.g. `simpulseid:Participant`)
- The issuer DID of the manifest (typically an ASCS did:web)

---

### `ontologies/`

RDF/OWL ontologies and vocabularies that define the **formal semantics** of SimpulseID types and properties, aligned with:

- **Gaia-X Trust Framework 24.11**
- **ENVITED Ecosystem Specifications (EVES)**
- **schema.org** and **vCard** where appropriate

Key elements include:

- `SimpulseIdOntology.ttl`

- Classes:
- `simpulseid:Participant` ⊑ `gx:LegalPerson`, `schema:Organization`
- `simpulseid:AscsBaseMembership`, `simpulseid:AscsEnvitedMembership` ⊑ `schema:ProgramMembership`
- `simpulseid:Administrator`, `simpulseid:User` ⊑ `gx:NaturalPerson`, `schema:Person`
- Program classes for base and ENVITED memberships
- Properties:
- `simpulseid:legalForm` → SKOS `simpulseid:LegalForm` concepts
- `simpulseid:termsAndConditions` → `gx:TermsAndConditions` resources
- `simpulseid:baseMembership` linking ENVITED membership to base membership
- Address modelling:
- `gx:Address` with **vCard** properties:
- `vcard:street-address`
- `vcard:postal-code`
- `vcard:locality`
- `vcard:region`
- `gx:countryCode` for ISO country codes

- Legal form SKOS vocabulary (e.g. `legalForm-v1.jsonld`)
- Code list of legal forms (`AG`, `GmbH`, `LLC`, `BenCom`, etc.)
- Used via `simpulseid:LegalForm` and `simpulseid:legalForm` in credentials

These ontologies are the **ground truth** for what the JSON-LD contexts and examples mean at RDF level.

---

## Intended usage within `https://identity.ascs.digital/`

The artifacts in this repository are used by the **ENVITED Ecosystem identity services** to:

- Issue and verify **Gaia-X compatible** Verifiable Credentials
- Support **self-sovereign identity** login flows via the **SSI-to-OIDC bridge**
- Provide consistent semantics for:
- ENVITED participants (organizations)
- ASCS base memberships
- ENVITED program memberships
- Administrative and user roles
- Render credential cards in SSI wallets for a smooth UX

Typical flow:

1. A participant (organization) is onboarded and receives a **Participant VC**.
2. The organization receives **ASCS base membership** and optionally **ENVITED membership** credentials.
3. Individual administrators and users receive **Admin/User VCs**, bound to opaque did:web identifiers under `did.identity.ascs.digital`.
4. Wallets like Altme use the **contexts** and **manifests** from this repo to display these credentials.
5. Services behind `identity.ascs.digital` use the **ontologies** and **Gaia-X compatible structures** to perform trust and membership checks.

---

## References

Some relevant specifications and resources:

- W3C Verifiable Credentials Data Model v2
<https://www.w3.org/TR/vc-data-model-2.0/>
- W3C Verifiable Credential Vocabulary (VC v2)
<https://www.w3.org/ns/credentials/v2>
- Gaia-X Credential Format & Trust Framework (24.11)
<https://docs.gaia-x.eu/technical-committee/identity-credential-access-management/>
- DIF Wallet Rendering specification
<https://identity.foundation/wallet-rendering/>
- JSON-LD 1.1 & best practices
<https://json-ld.org/>
<https://w3c.github.io/json-ld-bp/>
- JSON Schema
<https://json-schema.org/specification>
- schema.org
<https://schema.org/>
41 changes: 0 additions & 41 deletions contexts/AscsMemberCredential.json

This file was deleted.

38 changes: 0 additions & 38 deletions contexts/AscsUserCredential.json

This file was deleted.

24 changes: 24 additions & 0 deletions contexts/HarbourCredentials.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"@context": {
"@version": 1.1,
"@protected": true,
"harbour": "https://schema.reachhaven.com/HarbourCredentials/v1#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"harbour:VerifiableCredential": {
"@id": "harbour:VerifiableCredential"
},
"harbour:CRSetEntry": {
"@id": "harbour:CRSetEntry",
"@context": {
"@protected": true,
"id": "@id",
"type": "@type",
"statusPurpose": {
"@id": "https://www.w3.org/ns/credentials/status#statusPurpose",
"@type": "xsd:string"
}
}
}
}
}
Loading