@twin.org/data-json-ld 0.0.3-next.9 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/es/helpers/jsonLdAliasKey.js +4 -0
- package/dist/es/helpers/jsonLdAliasKey.js.map +1 -0
- package/dist/es/helpers/jsonLdExistingProperty.js +4 -0
- package/dist/es/helpers/jsonLdExistingProperty.js.map +1 -0
- package/dist/es/helpers/jsonLdExistingPropertyEither.js +2 -0
- package/dist/es/helpers/jsonLdExistingPropertyEither.js.map +1 -0
- package/dist/es/helpers/jsonLdKeys.js +4 -0
- package/dist/es/helpers/jsonLdKeys.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithAliases.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithAliases.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithAtId.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithAtId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithAtType.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithAtType.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithContext.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithContext.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithId.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithNoAtId.js +4 -0
- package/dist/es/helpers/jsonLdObjectWithNoAtId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithNoAtType.js +4 -0
- package/dist/es/helpers/jsonLdObjectWithNoAtType.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithNoContext.js +4 -0
- package/dist/es/helpers/jsonLdObjectWithNoContext.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithNoId.js +4 -0
- package/dist/es/helpers/jsonLdObjectWithNoId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithNoType.js +4 -0
- package/dist/es/helpers/jsonLdObjectWithNoType.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalAtId.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalAtId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalAtType.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalAtType.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalContext.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalContext.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalId.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalId.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalType.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithOptionalType.js.map +1 -0
- package/dist/es/helpers/jsonLdObjectWithType.js +2 -0
- package/dist/es/helpers/jsonLdObjectWithType.js.map +1 -0
- package/dist/es/helpers/jsonLdOptionalKeys.js +4 -0
- package/dist/es/helpers/jsonLdOptionalKeys.js.map +1 -0
- package/dist/es/helpers/jsonLdRequiredKeys.js +2 -0
- package/dist/es/helpers/jsonLdRequiredKeys.js.map +1 -0
- package/dist/es/helpers/jsonLdWithAliases.js +2 -0
- package/dist/es/helpers/jsonLdWithAliases.js.map +1 -0
- package/dist/es/index.js +23 -0
- package/dist/es/index.js.map +1 -1
- package/dist/es/models/IJsonLdDocument.js.map +1 -1
- package/dist/es/schemas/JsonLdContainerType.json +17 -7
- package/dist/es/schemas/JsonLdContainerTypeArray.json +129 -142
- package/dist/es/schemas/JsonLdContextDefinition.json +76 -18
- package/dist/es/schemas/JsonLdContextDefinitionElement.json +1 -0
- package/dist/es/schemas/JsonLdContextDefinitionRoot.json +1 -0
- package/dist/es/schemas/JsonLdDocument.json +3 -3
- package/dist/es/schemas/JsonLdExpandedTermDefinition.json +101 -89
- package/dist/es/schemas/JsonLdGraphObject.json +2 -2
- package/dist/es/schemas/JsonLdIdMap.json +1 -0
- package/dist/es/schemas/JsonLdIncludedBlock.json +1 -0
- package/dist/es/schemas/JsonLdIndexMap.json +2 -1
- package/dist/es/schemas/JsonLdIndexMapItem.json +1 -0
- package/dist/es/schemas/JsonLdJsonArray.json +1 -0
- package/dist/es/schemas/JsonLdJsonObject.json +2 -8
- package/dist/es/schemas/JsonLdJsonPrimitive.json +14 -5
- package/dist/es/schemas/JsonLdJsonValue.json +1 -0
- package/dist/es/schemas/JsonLdLanguageMap.json +1 -0
- package/dist/es/schemas/JsonLdListObject.json +2 -2
- package/dist/es/schemas/JsonLdListOrSetItem.json +1 -0
- package/dist/es/schemas/JsonLdNodeObject.json +12 -72
- package/dist/es/schemas/JsonLdNodePrimitive.json +1 -0
- package/dist/es/schemas/JsonLdObject.json +3 -3
- package/dist/es/schemas/JsonLdSetObject.json +2 -2
- package/dist/es/schemas/JsonLdTypeMap.json +1 -0
- package/dist/es/schemas/JsonLdValueObject.json +99 -87
- package/dist/es/utils/jsonLdHelper.js +85 -11
- package/dist/es/utils/jsonLdHelper.js.map +1 -1
- package/dist/es/utils/jsonLdProcessor.js +134 -40
- package/dist/es/utils/jsonLdProcessor.js.map +1 -1
- package/dist/types/helpers/jsonLdAliasKey.d.ts +4 -0
- package/dist/types/helpers/jsonLdExistingProperty.d.ts +6 -0
- package/dist/types/helpers/jsonLdExistingPropertyEither.d.ts +6 -0
- package/dist/types/helpers/jsonLdKeys.d.ts +4 -0
- package/dist/types/helpers/jsonLdObjectWithAliases.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithAtId.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithAtType.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithContext.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithId.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithNoAtId.d.ts +4 -0
- package/dist/types/helpers/jsonLdObjectWithNoAtType.d.ts +4 -0
- package/dist/types/helpers/jsonLdObjectWithNoContext.d.ts +5 -0
- package/dist/types/helpers/jsonLdObjectWithNoId.d.ts +4 -0
- package/dist/types/helpers/jsonLdObjectWithNoType.d.ts +4 -0
- package/dist/types/helpers/jsonLdObjectWithOptionalAtId.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithOptionalAtType.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithOptionalContext.d.ts +9 -0
- package/dist/types/helpers/jsonLdObjectWithOptionalId.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithOptionalType.d.ts +7 -0
- package/dist/types/helpers/jsonLdObjectWithType.d.ts +7 -0
- package/dist/types/helpers/jsonLdOptionalKeys.d.ts +6 -0
- package/dist/types/helpers/jsonLdRequiredKeys.d.ts +5 -0
- package/dist/types/helpers/jsonLdWithAliases.d.ts +13 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/models/IJsonLdDocument.d.ts +0 -4
- package/dist/types/utils/jsonLdHelper.d.ts +31 -4
- package/dist/types/utils/jsonLdProcessor.d.ts +16 -13
- package/docs/changelog.md +401 -74
- package/docs/examples.md +214 -1
- package/docs/reference/classes/JsonLdDataTypes.md +1 -1
- package/docs/reference/classes/JsonLdHelper.md +130 -12
- package/docs/reference/classes/JsonLdProcessor.md +57 -64
- package/docs/reference/index.md +23 -0
- package/docs/reference/interfaces/IJsonLdContextDefinition.md +20 -20
- package/docs/reference/interfaces/IJsonLdGraphObject.md +7 -7
- package/docs/reference/interfaces/IJsonLdIdMap.md +1 -1
- package/docs/reference/interfaces/IJsonLdIndexMap.md +1 -1
- package/docs/reference/interfaces/IJsonLdJsonObject.md +1 -1
- package/docs/reference/interfaces/IJsonLdLanguageMap.md +1 -1
- package/docs/reference/interfaces/IJsonLdListObject.md +3 -3
- package/docs/reference/interfaces/IJsonLdNodeObject.md +17 -17
- package/docs/reference/interfaces/IJsonLdObject.md +16 -16
- package/docs/reference/interfaces/IJsonLdSetObject.md +3 -3
- package/docs/reference/interfaces/IJsonLdTypeMap.md +1 -1
- package/docs/reference/type-aliases/IJsonLdExpandedTermDefinition.md +7 -7
- package/docs/reference/type-aliases/IJsonLdValueObject.md +2 -2
- package/docs/reference/type-aliases/JsonLdAliasKey.md +15 -0
- package/docs/reference/type-aliases/JsonLdExistingProperty.md +19 -0
- package/docs/reference/type-aliases/JsonLdExistingPropertyEither.md +24 -0
- package/docs/reference/type-aliases/JsonLdKeys.md +11 -0
- package/docs/reference/type-aliases/JsonLdObjectWithAliases.md +16 -0
- package/docs/reference/type-aliases/JsonLdObjectWithAtId.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithAtType.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithContext.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithId.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithNoAtId.md +11 -0
- package/docs/reference/type-aliases/JsonLdObjectWithNoAtType.md +11 -0
- package/docs/reference/type-aliases/JsonLdObjectWithNoContext.md +12 -0
- package/docs/reference/type-aliases/JsonLdObjectWithNoId.md +11 -0
- package/docs/reference/type-aliases/JsonLdObjectWithNoType.md +11 -0
- package/docs/reference/type-aliases/JsonLdObjectWithOptionalAtId.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithOptionalAtType.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithOptionalContext.md +22 -0
- package/docs/reference/type-aliases/JsonLdObjectWithOptionalId.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithOptionalType.md +21 -0
- package/docs/reference/type-aliases/JsonLdObjectWithType.md +21 -0
- package/docs/reference/type-aliases/JsonLdOptionalKeys.md +11 -0
- package/docs/reference/type-aliases/JsonLdRequiredKeys.md +11 -0
- package/docs/reference/type-aliases/JsonLdWithAliases.md +17 -0
- package/docs/reference/variables/JsonLdContexts.md +3 -3
- package/docs/reference/variables/JsonLdTypes.md +26 -26
- package/package.json +10 -10
package/docs/examples.md
CHANGED
|
@@ -1 +1,214 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Data Json Ld Examples
|
|
2
|
+
|
|
3
|
+
These examples walk through context management, document processing, validation, and property access patterns for JSON-LD documents.
|
|
4
|
+
|
|
5
|
+
## JsonLdProcessor
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { JsonLdProcessor } from '@twin.org/data-json-ld';
|
|
9
|
+
|
|
10
|
+
JsonLdProcessor.setCacheLimit(900000);
|
|
11
|
+
console.log('Cache limit:', JsonLdProcessor.getCacheLimit());
|
|
12
|
+
|
|
13
|
+
JsonLdProcessor.setRedirects([
|
|
14
|
+
{
|
|
15
|
+
from: /^https:\/\/raw\.githubusercontent\.com\//,
|
|
16
|
+
to: 'https://cdn.example.org/github-content'
|
|
17
|
+
}
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
JsonLdProcessor.addRedirect(/^https:\/\/schema\.org\//, 'https://schema.org/');
|
|
21
|
+
console.log('Has redirects:', JsonLdProcessor.getRedirects().length > 0);
|
|
22
|
+
|
|
23
|
+
const loader = JsonLdProcessor.getDocumentLoader();
|
|
24
|
+
console.log('Loader type:', typeof loader);
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { JsonLdProcessor, type IJsonLdNodeObject } from '@twin.org/data-json-ld';
|
|
29
|
+
|
|
30
|
+
const compactedDoc = {
|
|
31
|
+
'@context': {
|
|
32
|
+
ex: 'https://example.org/vocab/',
|
|
33
|
+
name: 'ex:name'
|
|
34
|
+
},
|
|
35
|
+
'@id': 'urn:example:person:1',
|
|
36
|
+
name: 'Ada'
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const expanded = await JsonLdProcessor.expand(compactedDoc);
|
|
40
|
+
const compactedAgain = await JsonLdProcessor.compact(expanded[0], compactedDoc['@context']);
|
|
41
|
+
|
|
42
|
+
console.log('Compacted id:', compactedAgain['@id']);
|
|
43
|
+
|
|
44
|
+
const canonical = await JsonLdProcessor.canonize(expanded[0] as IJsonLdNodeObject);
|
|
45
|
+
console.log('Canonical includes id:', canonical.includes('urn:example:person:1'));
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import { JsonLdProcessor, type IJsonLdNodeObject } from '@twin.org/data-json-ld';
|
|
50
|
+
|
|
51
|
+
const contextA = 'https://example.org/context/base';
|
|
52
|
+
const contextB = {
|
|
53
|
+
ex: 'https://example.org/vocab/',
|
|
54
|
+
name: 'ex:name'
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const combined = JsonLdProcessor.combineContexts(contextA, contextB);
|
|
58
|
+
|
|
59
|
+
const documentWithNestedContexts: IJsonLdNodeObject = {
|
|
60
|
+
'@context': contextA,
|
|
61
|
+
'@graph': [
|
|
62
|
+
{
|
|
63
|
+
'@context': contextB,
|
|
64
|
+
'@id': 'urn:example:item:1',
|
|
65
|
+
'@type': 'ex:Person',
|
|
66
|
+
'ex:name': 'Ada'
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const gathered = JsonLdProcessor.gatherContexts(documentWithNestedContexts);
|
|
72
|
+
const filtered = JsonLdProcessor.removeContexts(gathered, [contextB]);
|
|
73
|
+
|
|
74
|
+
console.log('Combined is array:', Array.isArray(combined));
|
|
75
|
+
console.log('Filtered context equals contextA:', filtered === contextA);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import { JsonLdProcessor } from '@twin.org/data-json-ld';
|
|
80
|
+
|
|
81
|
+
await JsonLdProcessor.documentCacheAdd('https://example.org/context', {
|
|
82
|
+
'@context': {
|
|
83
|
+
ex: 'https://example.org/vocab/'
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
await JsonLdProcessor.documentCacheRemove('https://example.org/context');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Remote `@context` URLs: redirects and HTTP `Link` discovery
|
|
91
|
+
|
|
92
|
+
When a remote `@context` URL is a string, the default document loader resolves it in this order:
|
|
93
|
+
|
|
94
|
+
1. **Registered redirects** — `setRedirects` / `addRedirect` run first. If a pattern matches, the request uses the replacement URL only (no `HEAD` or discovery against the original namespace URL).
|
|
95
|
+
2. **GET with `Accept: application/ld+json`**. If the response is an **HTTP error** (for example **404**), the load fails and discovery does not run. If the response is **OK** but the body is **not valid JSON** (for example HTML), retry **GET** with **`Accept: application/json`**.
|
|
96
|
+
3. **HTTP `Link` discovery** — only if **both** `GET`s in step 2 failed with a **JSON decode** error: `HEAD` on the current URL (or `GET` if the server returns **405** / **501** for `HEAD`), then inspect `Link` for `rel="alternate"` and `type="application/ld+json"`, resolve the target URL, and **fetch that context document once** (at most **one** discovery hop per load chain).
|
|
97
|
+
|
|
98
|
+
Use **manual redirects** for stable overrides, offline tests, or hosts that do not expose a suitable `Link` header. Rely on **discovery** when the namespace URL serves HTML but advertises a JSON-LD context via `Link`.
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import { JsonLdProcessor } from '@twin.org/data-json-ld';
|
|
102
|
+
|
|
103
|
+
// Optional: force a namespace URL to a known context document (runs before discovery).
|
|
104
|
+
JsonLdProcessor.addRedirect(
|
|
105
|
+
/^https:\/\/example\.org\/vocab\/?$/,
|
|
106
|
+
'https://example.org/context/doc.jsonld'
|
|
107
|
+
);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Standards packages and `registerRedirects()`
|
|
111
|
+
|
|
112
|
+
Vocabulary packages (for example `@twin.org/standards-schema-org`) often expose `SchemaOrgDataTypes.registerRedirects()`, which forwards to `JsonLdProcessor.addRedirect` for a known namespace URL. That call is **optional** in many deployments: the default loader can reach the same JSON-LD context via **HTTP `Link` discovery** when the namespace URL returns HTML and advertises `rel="alternate"` with `type="application/ld+json"`. Prefer **explicit redirects** when you want predictable URLs without an extra `HEAD`/`GET` for discovery, **fully offline** or hermetic tests, or when the host does not send a usable `Link` header.
|
|
113
|
+
|
|
114
|
+
## JsonLdHelper
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { type IValidationFailure } from '@twin.org/core';
|
|
118
|
+
import { ValidationMode } from '@twin.org/data-core';
|
|
119
|
+
import { JsonLdHelper, type IJsonLdNodeObject } from '@twin.org/data-json-ld';
|
|
120
|
+
|
|
121
|
+
const compactedDocument = {
|
|
122
|
+
'@context': {
|
|
123
|
+
ex: 'https://example.org/vocab/',
|
|
124
|
+
id: '@id',
|
|
125
|
+
type: '@type',
|
|
126
|
+
name: 'ex:name'
|
|
127
|
+
},
|
|
128
|
+
id: 'urn:example:person:1',
|
|
129
|
+
type: 'ex:Person',
|
|
130
|
+
name: 'Ada'
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const failures: IValidationFailure[] = [];
|
|
134
|
+
await JsonLdHelper.validate(compactedDocument, failures, {
|
|
135
|
+
validationMode: ValidationMode.Either,
|
|
136
|
+
failOnMissingType: false
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const expanded = await JsonLdHelper.expand(compactedDocument);
|
|
140
|
+
const hasPersonType = await JsonLdHelper.isType(expanded, ['https://example.org/vocab/Person']);
|
|
141
|
+
const types = await JsonLdHelper.getType(expanded);
|
|
142
|
+
const id = await JsonLdHelper.getId(expanded);
|
|
143
|
+
|
|
144
|
+
console.log('Failure count:', failures.length);
|
|
145
|
+
console.log('Has person type:', hasPersonType);
|
|
146
|
+
console.log('Type list includes person:', types.includes('https://example.org/vocab/Person'));
|
|
147
|
+
console.log('Document id:', id);
|
|
148
|
+
|
|
149
|
+
const nodeObject = JsonLdHelper.toNodeObject(compactedDocument);
|
|
150
|
+
const structuredObject = JsonLdHelper.toStructuredObject<{ name: string }>(
|
|
151
|
+
nodeObject as IJsonLdNodeObject
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
console.log('Structured name:', structuredObject.name);
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { JsonLdHelper } from '@twin.org/data-json-ld';
|
|
159
|
+
|
|
160
|
+
const expandedDocument = [
|
|
161
|
+
{
|
|
162
|
+
'@id': 'urn:example:article:1',
|
|
163
|
+
'https://schema.org/name': [
|
|
164
|
+
{ '@value': 'Hello', '@language': 'en' },
|
|
165
|
+
{ '@value': 'Hallo', '@language': 'de' }
|
|
166
|
+
],
|
|
167
|
+
'https://schema.org/wordCount': [{ '@value': 240 }]
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
const title = await JsonLdHelper.getPropertyValue(
|
|
172
|
+
expandedDocument,
|
|
173
|
+
'https://schema.org/name',
|
|
174
|
+
'en'
|
|
175
|
+
);
|
|
176
|
+
const [nameValues, wordCountValues] = await JsonLdHelper.getPropertyValues(expandedDocument, [
|
|
177
|
+
'https://schema.org/name',
|
|
178
|
+
'https://schema.org/wordCount'
|
|
179
|
+
]);
|
|
180
|
+
|
|
181
|
+
console.log('English title:', title?.[0]);
|
|
182
|
+
console.log('Name value count:', nameValues?.length);
|
|
183
|
+
console.log('Word count value:', wordCountValues?.[0]);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
import { JsonLdHelper } from '@twin.org/data-json-ld';
|
|
188
|
+
|
|
189
|
+
const node = {
|
|
190
|
+
'@id': 'urn:example:item:1',
|
|
191
|
+
name: 'Ada',
|
|
192
|
+
role: 'Engineer'
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
const prefixed = JsonLdHelper.prefixProperties(node, 'ex', ['name', 'role']);
|
|
196
|
+
const stripped = JsonLdHelper.stripPrefixProperties(prefixed, 'ex');
|
|
197
|
+
|
|
198
|
+
console.log('Prefixed name:', prefixed['ex:name']);
|
|
199
|
+
console.log('Stripped name:', stripped.name);
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## JsonLdDataTypes
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
import { DataTypeHelper } from '@twin.org/data-core';
|
|
206
|
+
import { JsonLdContexts, JsonLdDataTypes, JsonLdTypes } from '@twin.org/data-json-ld';
|
|
207
|
+
|
|
208
|
+
JsonLdDataTypes.registerTypes();
|
|
209
|
+
|
|
210
|
+
const schema = await DataTypeHelper.getSchemaForType(
|
|
211
|
+
`${JsonLdContexts.Namespace}${JsonLdTypes.Document}`
|
|
212
|
+
);
|
|
213
|
+
console.log('Registered schema type:', schema?.type);
|
|
214
|
+
```
|
|
@@ -14,7 +14,7 @@ Class to help with JSON LD.
|
|
|
14
14
|
|
|
15
15
|
## Methods
|
|
16
16
|
|
|
17
|
-
### validate()
|
|
17
|
+
### validate() {#validate}
|
|
18
18
|
|
|
19
19
|
> `static` **validate**\<`T`\>(`document`, `validationFailures`, `options?`): `Promise`\<`boolean`\>
|
|
20
20
|
|
|
@@ -64,11 +64,11 @@ True if the document was valid.
|
|
|
64
64
|
|
|
65
65
|
***
|
|
66
66
|
|
|
67
|
-
### toNodeObject()
|
|
67
|
+
### toNodeObject() {#tonodeobject}
|
|
68
68
|
|
|
69
69
|
> `static` **toNodeObject**\<`T`\>(`object`): `T` & [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Convert an object to a JSON-LD node object.
|
|
72
72
|
|
|
73
73
|
#### Type Parameters
|
|
74
74
|
|
|
@@ -82,17 +82,45 @@ Expand an object to a JSON-LD node object.
|
|
|
82
82
|
|
|
83
83
|
`T`
|
|
84
84
|
|
|
85
|
-
The object to
|
|
85
|
+
The object to convert.
|
|
86
86
|
|
|
87
87
|
#### Returns
|
|
88
88
|
|
|
89
89
|
`T` & [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
90
90
|
|
|
91
|
-
The
|
|
91
|
+
The JSON-LD node object.
|
|
92
92
|
|
|
93
93
|
***
|
|
94
94
|
|
|
95
|
-
###
|
|
95
|
+
### toStructuredObject() {#tostructuredobject}
|
|
96
|
+
|
|
97
|
+
> `static` **toStructuredObject**\<`T`\>(`nodeObject`): `T`
|
|
98
|
+
|
|
99
|
+
Convert the JSON-LD node object to a structured object.
|
|
100
|
+
|
|
101
|
+
#### Type Parameters
|
|
102
|
+
|
|
103
|
+
##### T
|
|
104
|
+
|
|
105
|
+
`T` = `unknown`
|
|
106
|
+
|
|
107
|
+
#### Parameters
|
|
108
|
+
|
|
109
|
+
##### nodeObject
|
|
110
|
+
|
|
111
|
+
[`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
112
|
+
|
|
113
|
+
The JSON-LD node object to convert.
|
|
114
|
+
|
|
115
|
+
#### Returns
|
|
116
|
+
|
|
117
|
+
`T`
|
|
118
|
+
|
|
119
|
+
The structured object.
|
|
120
|
+
|
|
121
|
+
***
|
|
122
|
+
|
|
123
|
+
### expand() {#expand}
|
|
96
124
|
|
|
97
125
|
> `static` **expand**(`document`): `Promise`\<[`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)[]\>
|
|
98
126
|
|
|
@@ -114,7 +142,7 @@ The expanded JSON-LD document.
|
|
|
114
142
|
|
|
115
143
|
***
|
|
116
144
|
|
|
117
|
-
### isType()
|
|
145
|
+
### isType() {#istype}
|
|
118
146
|
|
|
119
147
|
> `static` **isType**(`documentOrExpanded`, `type`): `Promise`\<`boolean`\>
|
|
120
148
|
|
|
@@ -142,7 +170,7 @@ True if the document is of the specified type.
|
|
|
142
170
|
|
|
143
171
|
***
|
|
144
172
|
|
|
145
|
-
### getType()
|
|
173
|
+
### getType() {#gettype}
|
|
146
174
|
|
|
147
175
|
> `static` **getType**(`documentOrExpanded`): `Promise`\<`string`[]\>
|
|
148
176
|
|
|
@@ -164,9 +192,9 @@ The type(s) extracted from the document.
|
|
|
164
192
|
|
|
165
193
|
***
|
|
166
194
|
|
|
167
|
-
### getId()
|
|
195
|
+
### getId() {#getid}
|
|
168
196
|
|
|
169
|
-
> `static` **getId**(`documentOrExpanded`): `Promise`\<`string` \| `undefined`\>
|
|
197
|
+
> `static` **getId**(`documentOrExpanded`, `additionalIdProperties?`): `Promise`\<`string` \| `undefined`\>
|
|
170
198
|
|
|
171
199
|
Get the id from the document.
|
|
172
200
|
|
|
@@ -178,6 +206,12 @@ Get the id from the document.
|
|
|
178
206
|
|
|
179
207
|
The JSON-LD document to get the id from or already expanded document.
|
|
180
208
|
|
|
209
|
+
##### additionalIdProperties?
|
|
210
|
+
|
|
211
|
+
`string`[]
|
|
212
|
+
|
|
213
|
+
Optional additional properties to check for the id, in addition to "@id" and "id".
|
|
214
|
+
|
|
181
215
|
#### Returns
|
|
182
216
|
|
|
183
217
|
`Promise`\<`string` \| `undefined`\>
|
|
@@ -186,7 +220,7 @@ The id extracted from the document.
|
|
|
186
220
|
|
|
187
221
|
***
|
|
188
222
|
|
|
189
|
-
### getPropertyValue()
|
|
223
|
+
### getPropertyValue() {#getpropertyvalue}
|
|
190
224
|
|
|
191
225
|
> `static` **getPropertyValue**(`documentOrExpanded`, `propertyFullName`, `language?`): `Promise`\<[`IJsonLdNodePrimitive`](../type-aliases/IJsonLdNodePrimitive.md)[] \| `undefined`\>
|
|
192
226
|
|
|
@@ -220,7 +254,7 @@ Matching property values for the input property.
|
|
|
220
254
|
|
|
221
255
|
***
|
|
222
256
|
|
|
223
|
-
### getPropertyValues()
|
|
257
|
+
### getPropertyValues() {#getpropertyvalues}
|
|
224
258
|
|
|
225
259
|
> `static` **getPropertyValues**(`documentOrExpanded`, `propertyFullNames`, `language?`): `Promise`\<([`IJsonLdNodePrimitive`](../type-aliases/IJsonLdNodePrimitive.md)[] \| `undefined`)[]\>
|
|
226
260
|
|
|
@@ -251,3 +285,87 @@ Optional filter values by their language property.
|
|
|
251
285
|
`Promise`\<([`IJsonLdNodePrimitive`](../type-aliases/IJsonLdNodePrimitive.md)[] \| `undefined`)[]\>
|
|
252
286
|
|
|
253
287
|
Matching property values for each input property, in the same index order.
|
|
288
|
+
|
|
289
|
+
***
|
|
290
|
+
|
|
291
|
+
### prefixProperties() {#prefixproperties}
|
|
292
|
+
|
|
293
|
+
> `static` **prefixProperties**\<`T`\>(`nodeObject`, `prefix`, `properties?`): [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
294
|
+
|
|
295
|
+
Prefix all properties in the document with the provided prefix, except for JSON-LD properties.
|
|
296
|
+
This is useful for ensuring that all properties are fully qualified with a namespace.
|
|
297
|
+
For example, if the prefix is "ex" and the document has a property "name", it will be transformed to "ex:name".
|
|
298
|
+
|
|
299
|
+
#### Type Parameters
|
|
300
|
+
|
|
301
|
+
##### T
|
|
302
|
+
|
|
303
|
+
`T` *extends* [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
304
|
+
|
|
305
|
+
#### Parameters
|
|
306
|
+
|
|
307
|
+
##### nodeObject
|
|
308
|
+
|
|
309
|
+
`T`
|
|
310
|
+
|
|
311
|
+
The JSON-LD node object to prefix properties on.
|
|
312
|
+
|
|
313
|
+
##### prefix
|
|
314
|
+
|
|
315
|
+
`string`
|
|
316
|
+
|
|
317
|
+
The prefix to add to the properties.
|
|
318
|
+
|
|
319
|
+
##### properties?
|
|
320
|
+
|
|
321
|
+
`string`[]
|
|
322
|
+
|
|
323
|
+
Optional list of properties to prefix. If not provided, all properties except for JSON-LD properties.
|
|
324
|
+
|
|
325
|
+
#### Returns
|
|
326
|
+
|
|
327
|
+
[`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
328
|
+
|
|
329
|
+
A new JSON-LD node object with the properties prefixed.
|
|
330
|
+
|
|
331
|
+
***
|
|
332
|
+
|
|
333
|
+
### stripPrefixProperties() {#stripprefixproperties}
|
|
334
|
+
|
|
335
|
+
> `static` **stripPrefixProperties**\<`T`\>(`nodeObject`, `prefix`, `properties?`): [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
336
|
+
|
|
337
|
+
Strip a prefix from properties in the document, except for JSON-LD properties.
|
|
338
|
+
This is useful for converting fully qualified namespaced properties back to local names.
|
|
339
|
+
For example, if the prefix is "ex" and the document has a property "ex:name", it will be transformed to "name".
|
|
340
|
+
|
|
341
|
+
#### Type Parameters
|
|
342
|
+
|
|
343
|
+
##### T
|
|
344
|
+
|
|
345
|
+
`T` *extends* [`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
346
|
+
|
|
347
|
+
#### Parameters
|
|
348
|
+
|
|
349
|
+
##### nodeObject
|
|
350
|
+
|
|
351
|
+
`T`
|
|
352
|
+
|
|
353
|
+
The JSON-LD node object to strip prefixed properties from.
|
|
354
|
+
|
|
355
|
+
##### prefix
|
|
356
|
+
|
|
357
|
+
`string`
|
|
358
|
+
|
|
359
|
+
The prefix to remove from the properties.
|
|
360
|
+
|
|
361
|
+
##### properties?
|
|
362
|
+
|
|
363
|
+
`string`[]
|
|
364
|
+
|
|
365
|
+
Optional list of unprefixed properties to strip. If not provided, all matching prefixed properties.
|
|
366
|
+
|
|
367
|
+
#### Returns
|
|
368
|
+
|
|
369
|
+
[`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)
|
|
370
|
+
|
|
371
|
+
A new JSON-LD node object with the prefix stripped from matching properties.
|
|
@@ -14,11 +14,11 @@ JSON-LD Processor.
|
|
|
14
14
|
|
|
15
15
|
## Methods
|
|
16
16
|
|
|
17
|
-
### setDocumentLoader()
|
|
17
|
+
### setDocumentLoader() {#setdocumentloader}
|
|
18
18
|
|
|
19
19
|
> `static` **setDocumentLoader**(`documentLoader`): `void`
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Set the document loader used for retrieving JSON-LD documents.
|
|
22
22
|
|
|
23
23
|
#### Parameters
|
|
24
24
|
|
|
@@ -34,31 +34,21 @@ The document loader to use.
|
|
|
34
34
|
|
|
35
35
|
***
|
|
36
36
|
|
|
37
|
-
### getDocumentLoader()
|
|
37
|
+
### getDocumentLoader() {#getdocumentloader}
|
|
38
38
|
|
|
39
39
|
> `static` **getDocumentLoader**(): (`url`) => `Promise`\<`RemoteDocument`\>
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Get the document loader used for retrieving JSON-LD documents.
|
|
42
42
|
|
|
43
43
|
#### Returns
|
|
44
44
|
|
|
45
|
-
The document loader.
|
|
46
|
-
|
|
47
|
-
> (`url`): `Promise`\<`RemoteDocument`\>
|
|
48
|
-
|
|
49
|
-
##### Parameters
|
|
45
|
+
The active document loader function.
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`string`
|
|
54
|
-
|
|
55
|
-
##### Returns
|
|
56
|
-
|
|
57
|
-
`Promise`\<`RemoteDocument`\>
|
|
47
|
+
(`url`) => `Promise`\<`RemoteDocument`\>
|
|
58
48
|
|
|
59
49
|
***
|
|
60
50
|
|
|
61
|
-
### setCacheLimit()
|
|
51
|
+
### setCacheLimit() {#setcachelimit}
|
|
62
52
|
|
|
63
53
|
> `static` **setCacheLimit**(`cacheLimitMs`): `void`
|
|
64
54
|
|
|
@@ -78,7 +68,7 @@ The cache limit in milliseconds.
|
|
|
78
68
|
|
|
79
69
|
***
|
|
80
70
|
|
|
81
|
-
### getCacheLimit()
|
|
71
|
+
### getCacheLimit() {#getcachelimit}
|
|
82
72
|
|
|
83
73
|
> `static` **getCacheLimit**(): `number`
|
|
84
74
|
|
|
@@ -88,15 +78,16 @@ Get the cache limit for documents.
|
|
|
88
78
|
|
|
89
79
|
`number`
|
|
90
80
|
|
|
91
|
-
The
|
|
81
|
+
The cache limit in milliseconds.
|
|
92
82
|
|
|
93
83
|
***
|
|
94
84
|
|
|
95
|
-
### setRedirects()
|
|
85
|
+
### setRedirects() {#setredirects}
|
|
96
86
|
|
|
97
87
|
> `static` **setRedirects**(`redirects`): `void`
|
|
98
88
|
|
|
99
|
-
|
|
89
|
+
Replace the global redirect list (use [JsonLdProcessor.addRedirect](#addredirect) to append without replacing).
|
|
90
|
+
Redirects run before any HTTP GET or `Link` discovery; use them for stable overrides, tests, or hosts that do not expose a suitable `Link` header.
|
|
100
91
|
|
|
101
92
|
#### Parameters
|
|
102
93
|
|
|
@@ -112,7 +103,7 @@ The redirects to use.
|
|
|
112
103
|
|
|
113
104
|
***
|
|
114
105
|
|
|
115
|
-
### getRedirects()
|
|
106
|
+
### getRedirects() {#getredirects}
|
|
116
107
|
|
|
117
108
|
> `static` **getRedirects**(): `object`[]
|
|
118
109
|
|
|
@@ -126,7 +117,35 @@ The registered redirects.
|
|
|
126
117
|
|
|
127
118
|
***
|
|
128
119
|
|
|
129
|
-
###
|
|
120
|
+
### addRedirect() {#addredirect}
|
|
121
|
+
|
|
122
|
+
> `static` **addRedirect**(`from`, `to`): `void`
|
|
123
|
+
|
|
124
|
+
Append a redirect rule (ignored if the same `RegExp.source` is already registered).
|
|
125
|
+
Optional when the vocabulary URL supports HTTP `Link` discovery (`rel` includes `alternate`, `type` is `application/ld+json`) via the default document loader.
|
|
126
|
+
Standards packages often expose `registerRedirects()` helpers that call this method; those are optional for the same reason.
|
|
127
|
+
|
|
128
|
+
#### Parameters
|
|
129
|
+
|
|
130
|
+
##### from
|
|
131
|
+
|
|
132
|
+
`RegExp`
|
|
133
|
+
|
|
134
|
+
The URL to redirect from.
|
|
135
|
+
|
|
136
|
+
##### to
|
|
137
|
+
|
|
138
|
+
`string`
|
|
139
|
+
|
|
140
|
+
The URL to redirect to.
|
|
141
|
+
|
|
142
|
+
#### Returns
|
|
143
|
+
|
|
144
|
+
`void`
|
|
145
|
+
|
|
146
|
+
***
|
|
147
|
+
|
|
148
|
+
### compact() {#compact}
|
|
130
149
|
|
|
131
150
|
> `static` **compact**\<`T`\>(`document`, `context?`, `options?`): `Promise`\<`T`\>
|
|
132
151
|
|
|
@@ -170,7 +189,7 @@ The compacted JSON-LD document.
|
|
|
170
189
|
|
|
171
190
|
***
|
|
172
191
|
|
|
173
|
-
### expand()
|
|
192
|
+
### expand() {#expand}
|
|
174
193
|
|
|
175
194
|
> `static` **expand**\<`T`\>(`compacted`): `Promise`\<[`IJsonLdNodeObject`](../interfaces/IJsonLdNodeObject.md)[]\>
|
|
176
195
|
|
|
@@ -198,7 +217,7 @@ The expanded JSON-LD document.
|
|
|
198
217
|
|
|
199
218
|
***
|
|
200
219
|
|
|
201
|
-
### canonize()
|
|
220
|
+
### canonize() {#canonize}
|
|
202
221
|
|
|
203
222
|
> `static` **canonize**\<`T`\>(`document`, `options?`): `Promise`\<`string`\>
|
|
204
223
|
|
|
@@ -236,33 +255,7 @@ The canonized document.
|
|
|
236
255
|
|
|
237
256
|
***
|
|
238
257
|
|
|
239
|
-
###
|
|
240
|
-
|
|
241
|
-
> `static` **addRedirect**(`from`, `to`): `void`
|
|
242
|
-
|
|
243
|
-
Add a redirect to use during document resolution.
|
|
244
|
-
|
|
245
|
-
#### Parameters
|
|
246
|
-
|
|
247
|
-
##### from
|
|
248
|
-
|
|
249
|
-
`RegExp`
|
|
250
|
-
|
|
251
|
-
The URL to redirect from.
|
|
252
|
-
|
|
253
|
-
##### to
|
|
254
|
-
|
|
255
|
-
`string`
|
|
256
|
-
|
|
257
|
-
The URL to redirect to.
|
|
258
|
-
|
|
259
|
-
#### Returns
|
|
260
|
-
|
|
261
|
-
`void`
|
|
262
|
-
|
|
263
|
-
***
|
|
264
|
-
|
|
265
|
-
### combineContexts()
|
|
258
|
+
### combineContexts() {#combinecontexts}
|
|
266
259
|
|
|
267
260
|
> `static` **combineContexts**(`context1`, `context2`): [`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
268
261
|
|
|
@@ -272,15 +265,15 @@ Combine contexts.
|
|
|
272
265
|
|
|
273
266
|
##### context1
|
|
274
267
|
|
|
275
|
-
|
|
268
|
+
[`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
276
269
|
|
|
277
|
-
|
|
270
|
+
The first JSON-LD context to combine.
|
|
278
271
|
|
|
279
272
|
##### context2
|
|
280
273
|
|
|
281
|
-
|
|
274
|
+
[`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
282
275
|
|
|
283
|
-
|
|
276
|
+
The second JSON-LD context to combine.
|
|
284
277
|
|
|
285
278
|
#### Returns
|
|
286
279
|
|
|
@@ -290,7 +283,7 @@ The combined context.
|
|
|
290
283
|
|
|
291
284
|
***
|
|
292
285
|
|
|
293
|
-
### gatherContexts()
|
|
286
|
+
### gatherContexts() {#gathercontexts}
|
|
294
287
|
|
|
295
288
|
> `static` **gatherContexts**\<`T`\>(`element`, `initial?`): [`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
296
289
|
|
|
@@ -324,7 +317,7 @@ The combined contexts.
|
|
|
324
317
|
|
|
325
318
|
***
|
|
326
319
|
|
|
327
|
-
### removeContexts()
|
|
320
|
+
### removeContexts() {#removecontexts}
|
|
328
321
|
|
|
329
322
|
> `static` **removeContexts**(`context`, `match?`): [`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
330
323
|
|
|
@@ -334,9 +327,9 @@ Remove all the contexts that match the pattern.
|
|
|
334
327
|
|
|
335
328
|
##### context
|
|
336
329
|
|
|
337
|
-
|
|
330
|
+
[`IJsonLdContextDefinitionRoot`](../type-aliases/IJsonLdContextDefinitionRoot.md) \| `undefined`
|
|
338
331
|
|
|
339
|
-
|
|
332
|
+
The context to remove the entries from.
|
|
340
333
|
|
|
341
334
|
##### match?
|
|
342
335
|
|
|
@@ -352,7 +345,7 @@ The updated contexts.
|
|
|
352
345
|
|
|
353
346
|
***
|
|
354
347
|
|
|
355
|
-
### documentCacheAdd()
|
|
348
|
+
### documentCacheAdd() {#documentcacheadd}
|
|
356
349
|
|
|
357
350
|
> `static` **documentCacheAdd**(`url`, `ldContext`): `Promise`\<`void`\>
|
|
358
351
|
|
|
@@ -376,11 +369,11 @@ The context to add.
|
|
|
376
369
|
|
|
377
370
|
`Promise`\<`void`\>
|
|
378
371
|
|
|
379
|
-
|
|
372
|
+
A promise that resolves when the entry has been stored in the cache.
|
|
380
373
|
|
|
381
374
|
***
|
|
382
375
|
|
|
383
|
-
### documentCacheRemove()
|
|
376
|
+
### documentCacheRemove() {#documentcacheremove}
|
|
384
377
|
|
|
385
378
|
> `static` **documentCacheRemove**(`url`): `Promise`\<`void`\>
|
|
386
379
|
|
|
@@ -398,4 +391,4 @@ The url the ld context is for.
|
|
|
398
391
|
|
|
399
392
|
`Promise`\<`void`\>
|
|
400
393
|
|
|
401
|
-
|
|
394
|
+
A promise that resolves when the entry has been removed from the cache.
|