Skip to content

Commit cb5e0b1

Browse files
committed
Work on community known values.
1 parent ac18592 commit cb5e0b1

2 files changed

Lines changed: 154 additions & 73 deletions

File tree

community-known-values/README.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# Community Known Values
2+
3+
This directory manages community-submitted Known Value assignments. Known Values are 64-bit unsigned integers representing ontological concepts, with the community namespace starting at code point 100,000.
4+
5+
## How to Submit a Request
6+
7+
1. **Create a JSON file** in the `requests/` directory following the naming convention: `<submitter>_<description>.json`
8+
2. **Choose your code points** — each entry must specify a `codepoint` value ≥ 100,000 that is not already assigned
9+
3. **Submit a Pull Request** with your request file(s)
10+
11+
Your PR will be automatically validated. If validation passes and the PR is merged, the code points will be registered in the community registry.
12+
13+
## JSON Schema
14+
15+
Each request file must conform to this schema:
16+
17+
```json
18+
{
19+
"$schema": "http://json-schema.org/draft-07/schema#",
20+
"type": "object",
21+
"required": ["request", "entries"],
22+
"properties": {
23+
"request": {
24+
"type": "object",
25+
"required": ["submitter", "description", "contact"],
26+
"properties": {
27+
"submitter": {
28+
"type": "string",
29+
"description": "Name or organization of the submitter"
30+
},
31+
"description": {
32+
"type": "string",
33+
"description": "Brief description of the request purpose"
34+
},
35+
"contact": {
36+
"type": "string",
37+
"description": "Email or GitHub handle for contact"
38+
},
39+
"url": {
40+
"type": "string",
41+
"format": "uri",
42+
"description": "Optional URL to documentation or specification"
43+
}
44+
}
45+
},
46+
"entries": {
47+
"type": "array",
48+
"minItems": 1,
49+
"items": {
50+
"type": "object",
51+
"required": ["codepoint", "canonical_name", "type", "description"],
52+
"properties": {
53+
"codepoint": {
54+
"type": "integer",
55+
"minimum": 100000,
56+
"description": "The requested code point (must be ≥ 100,000 and not already assigned)"
57+
},
58+
"canonical_name": {
59+
"type": "string",
60+
"pattern": "^[a-zA-Z][a-zA-Z0-9_]*$",
61+
"description": "CamelCase or snake_case identifier"
62+
},
63+
"type": {
64+
"type": "string",
65+
"enum": ["class", "property", "datatype", "constant"],
66+
"description": "The semantic type of this concept"
67+
},
68+
"uri": {
69+
"type": "string",
70+
"format": "uri",
71+
"description": "Optional authoritative URI for this concept"
72+
},
73+
"description": {
74+
"type": "string",
75+
"minLength": 10,
76+
"description": "Human-readable description (minimum 10 characters)"
77+
}
78+
}
79+
}
80+
}
81+
}
82+
}
83+
```
84+
85+
## Example Request File
86+
87+
```json
88+
{
89+
"request": {
90+
"submitter": "Example Organization",
91+
"description": "Custom credential types for our attestation framework",
92+
"contact": "@exampleorg",
93+
"url": "https://example.org/specs/credentials"
94+
},
95+
"entries": [
96+
{
97+
"codepoint": 100500,
98+
"canonical_name": "employmentCredential",
99+
"type": "class",
100+
"uri": "https://example.org/credentials#EmploymentCredential",
101+
"description": "A verifiable credential asserting current or past employment status"
102+
},
103+
{
104+
"codepoint": 100501,
105+
"canonical_name": "employerName",
106+
"type": "property",
107+
"description": "The name of the employer issuing an employment credential"
108+
}
109+
]
110+
}
111+
```
112+
113+
See [requests/_example_template.json](requests/_example_template.json) for a complete template.
114+
115+
## Field Reference
116+
117+
### Request Section (required)
118+
119+
| Field | Required | Description |
120+
| ------------- | -------- | ---------------------------------------- |
121+
| `submitter` | Yes | Your name or organization |
122+
| `description` | Yes | Brief description of the request purpose |
123+
| `contact` | Yes | GitHub handle or email for contact |
124+
| `url` | No | Link to documentation or specification |
125+
126+
### Entry Fields
127+
128+
| Field | Required | Description |
129+
| ---------------- | -------- | --------------------------------------------------- |
130+
| `codepoint` | Yes | Integer ≥ 100,000 (must not be already assigned) |
131+
| `canonical_name` | Yes | Identifier matching `^[a-zA-Z][a-zA-Z0-9_]*$` |
132+
| `type` | Yes | One of: `class`, `property`, `datatype`, `constant` |
133+
| `description` | Yes | Human-readable description (minimum 10 characters) |
134+
| `uri` | No | Authoritative URI for this concept |
135+
136+
## Validation
137+
138+
Your PR will be automatically validated. The validation checks:
139+
140+
- JSON syntax
141+
- Schema conformance
142+
- Code point validity (≥ 100,000)
143+
- Code point availability (not already assigned)
144+
- Uniqueness (no duplicate names, URIs, or code points within request)
145+
146+
If validation fails, fix the errors indicated in the PR comment and push again.
147+
148+
## Code Point Ranges
149+
150+
Organizations are encouraged to claim a contiguous range for their concepts to avoid fragmentation. Check the [community registry](../known-value-assignments/markdown/100000_community_registry.md) to see which code points are already assigned.
151+
152+
## Additional Documentation
153+
154+
For the full technical specification including workflow architecture and validation rules, see [Spec.md](Spec.md).

community-known-values/requests/README.md

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)