@kgdiff/formats 0.0.0-stage → 0.2.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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -2
  3. package/dist/detect.d.ts +47 -0
  4. package/dist/detect.d.ts.map +1 -0
  5. package/dist/detect.js +425 -0
  6. package/dist/detect.js.map +1 -0
  7. package/dist/index.d.ts +203 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +114 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/iri.d.ts +13 -0
  12. package/dist/iri.d.ts.map +1 -0
  13. package/dist/iri.js +91 -0
  14. package/dist/iri.js.map +1 -0
  15. package/dist/json.d.ts +31 -0
  16. package/dist/json.d.ts.map +1 -0
  17. package/dist/json.js +787 -0
  18. package/dist/json.js.map +1 -0
  19. package/dist/jsonld.d.ts +16 -0
  20. package/dist/jsonld.d.ts.map +1 -0
  21. package/dist/jsonld.js +1249 -0
  22. package/dist/jsonld.js.map +1 -0
  23. package/dist/obo.d.ts +25 -0
  24. package/dist/obo.d.ts.map +1 -0
  25. package/dist/obo.js +478 -0
  26. package/dist/obo.js.map +1 -0
  27. package/dist/prefixes.d.ts +49 -0
  28. package/dist/prefixes.d.ts.map +1 -0
  29. package/dist/prefixes.js +177 -0
  30. package/dist/prefixes.js.map +1 -0
  31. package/dist/rdf.d.ts +46 -0
  32. package/dist/rdf.d.ts.map +1 -0
  33. package/dist/rdf.js +1047 -0
  34. package/dist/rdf.js.map +1 -0
  35. package/dist/rdfxml.d.ts +8 -0
  36. package/dist/rdfxml.d.ts.map +1 -0
  37. package/dist/rdfxml.js +529 -0
  38. package/dist/rdfxml.js.map +1 -0
  39. package/dist/shared.d.ts +117 -0
  40. package/dist/shared.d.ts.map +1 -0
  41. package/dist/shared.js +355 -0
  42. package/dist/shared.js.map +1 -0
  43. package/dist/xml.d.ts +50 -0
  44. package/dist/xml.d.ts.map +1 -0
  45. package/dist/xml.js +508 -0
  46. package/dist/xml.js.map +1 -0
  47. package/package.json +55 -3
  48. package/src/detect.ts +435 -0
  49. package/src/index.ts +296 -0
  50. package/src/iri.ts +86 -0
  51. package/src/json.ts +889 -0
  52. package/src/jsonld.ts +1376 -0
  53. package/src/obo.ts +557 -0
  54. package/src/prefixes.ts +195 -0
  55. package/src/rdf.ts +1181 -0
  56. package/src/rdfxml.ts +633 -0
  57. package/src/shared.ts +408 -0
  58. package/src/xml.ts +550 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdf.js","sourceRoot":"","sources":["../src/rdf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { RdfDocument } from './rdf.js';
2
+ /**
3
+ * Reads RDF/XML (`.rdf`, `.owl` as written by Protégé, the OWL API and ROBOT) into quads.
4
+ * Whitespace-only input is an empty graph. Throws `KgdiffError('invalid-input')` with the line
5
+ * for XML that is not well-formed or not RDF/XML (OWL/XML and GraphML get a conversion hint).
6
+ */
7
+ export declare function readRdfXml(text: string, baseIRI: string | undefined): RdfDocument;
8
+ //# sourceMappingURL=rdfxml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdfxml.d.ts","sourceRoot":"","sources":["../src/rdfxml.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAyG5C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAcjF"}
package/dist/rdfxml.js ADDED
@@ -0,0 +1,529 @@
1
+ /**
2
+ * RDF/XML → RDF quads (W3C RDF 1.1 XML Syntax), on top of the XML parser in `xml.ts`. The
3
+ * quads go through the same mapping as Turtle (`rdf.ts`), so a graph diffs identically in
4
+ * either syntax.
5
+ *
6
+ * The whole grammar: `rdf:RDF` or a single node element as the root; typed node elements;
7
+ * `rdf:about`, `rdf:ID` and `rdf:nodeID`; property attributes; `rdf:li`; `rdf:datatype`;
8
+ * `xml:lang` and `xml:base` scoping; empty property elements; `rdf:parseType` `Resource`,
9
+ * `Collection` and `Literal` (exclusive XML canonicalization, with comments); reification by
10
+ * `rdf:ID` on property elements; the legacy unqualified `about`, `ID`, `resource`,
11
+ * `parseType` and `type` attributes. Grammar errors carry the line of the offending element.
12
+ */
13
+ import { BlankNode, DataFactory, NamedNode } from 'n3';
14
+ import { classifyXmlRoot, unsupportedFormat } from './detect.js';
15
+ import { resolveIri } from './iri.js';
16
+ import { RDF_NS } from './prefixes.js';
17
+ import { compareStrings, invalidInput, setOwn, stripBom } from './shared.js';
18
+ import { isXmlSpace, NC_NAME, parseXml, XML_NS, XmlSyntaxError, } from './xml.js';
19
+ const RDF_TYPE = `${RDF_NS}type`;
20
+ const RDF_DESCRIPTION = `${RDF_NS}Description`;
21
+ const RDF_LI = `${RDF_NS}li`;
22
+ const RDF_FIRST = `${RDF_NS}first`;
23
+ const RDF_REST = `${RDF_NS}rest`;
24
+ const RDF_NIL = `${RDF_NS}nil`;
25
+ const RDF_STATEMENT = `${RDF_NS}Statement`;
26
+ const RDF_SUBJECT = `${RDF_NS}subject`;
27
+ const RDF_PREDICATE = `${RDF_NS}predicate`;
28
+ const RDF_OBJECT = `${RDF_NS}object`;
29
+ const RDF_XML_LITERAL = `${RDF_NS}XMLLiteral`;
30
+ /** `rdf:` names that are syntax: never node elements, property elements or properties. */
31
+ const SYNTAX_NAMES = new Set([
32
+ 'RDF',
33
+ 'ID',
34
+ 'about',
35
+ 'parseType',
36
+ 'resource',
37
+ 'nodeID',
38
+ 'datatype',
39
+ // Removed from RDF/XML in 2004.
40
+ 'aboutEach',
41
+ 'aboutEachPrefix',
42
+ 'bagID',
43
+ ]);
44
+ /** Syntax attributes of property elements (RDF 1.1 XML Syntax §7.2.14–7.2.21). */
45
+ const PROPERTY_SYNTAX = new Set([
46
+ 'ID',
47
+ 'parseType',
48
+ 'resource',
49
+ 'nodeID',
50
+ 'datatype',
51
+ ]);
52
+ /** Unqualified attributes RDF/XML still reads as `rdf:` names (RDF 1.1 XML Syntax §6.1.4). */
53
+ const LEGACY_UNQUALIFIED = new Set([
54
+ 'ID',
55
+ 'about',
56
+ 'resource',
57
+ 'parseType',
58
+ 'type',
59
+ ]);
60
+ /**
61
+ * Reads RDF/XML (`.rdf`, `.owl` as written by Protégé, the OWL API and ROBOT) into quads.
62
+ * Whitespace-only input is an empty graph. Throws `KgdiffError('invalid-input')` with the line
63
+ * for XML that is not well-formed or not RDF/XML (OWL/XML and GraphML get a conversion hint).
64
+ */
65
+ export function readRdfXml(text, baseIRI) {
66
+ const source = stripBom(text);
67
+ if (isXmlSpace(source))
68
+ return { quads: [], prefixes: {} };
69
+ const reader = new RdfXmlReader(baseIRI);
70
+ try {
71
+ parseXml(source, reader);
72
+ }
73
+ catch (error) {
74
+ if (!(error instanceof XmlSyntaxError))
75
+ throw error;
76
+ throw invalidInput(`Invalid RDF/XML: ${error.message} on line ${error.line}.`, {
77
+ format: 'rdfxml',
78
+ line: error.line,
79
+ });
80
+ }
81
+ return { quads: reader.quads, prefixes: reader.prefixes };
82
+ }
83
+ class RdfXmlReader {
84
+ quads = [];
85
+ prefixes = {};
86
+ stack;
87
+ /** IRIs minted by `rdf:ID`, which must be unique in a document. */
88
+ ids = new Set();
89
+ iris = new Map();
90
+ blanks = 0;
91
+ constructor(baseIRI) {
92
+ this.stack = [{ kind: 'document', scope: { base: baseIRI, language: '' } }];
93
+ }
94
+ // ─── XML events ─────────────────────────────────────────────────────────
95
+ startElement(element) {
96
+ for (const [prefix, uri] of element.namespaces) {
97
+ if (prefix !== 'xml' && !Object.hasOwn(this.prefixes, prefix))
98
+ setOwn(this.prefixes, prefix, uri);
99
+ }
100
+ const parent = this.top();
101
+ if (parent.kind === 'literal') {
102
+ parent.writer.start(element);
103
+ this.stack.push({ kind: 'literal', statement: undefined, writer: parent.writer });
104
+ return;
105
+ }
106
+ const scope = inScope(element, parent.scope);
107
+ switch (parent.kind) {
108
+ case 'document':
109
+ this.root(element, scope);
110
+ return;
111
+ case 'nodes':
112
+ this.nodeElement(element, scope);
113
+ return;
114
+ case 'collection':
115
+ parent.items.push(this.nodeElement(element, scope));
116
+ return;
117
+ case 'node':
118
+ this.propertyElement(element, scope, parent);
119
+ return;
120
+ case 'property': {
121
+ if (parent.object !== undefined) {
122
+ throw this.error('A property element can contain only one node element', element.offset);
123
+ }
124
+ if (!isXmlSpace(parent.text)) {
125
+ throw this.error('A property element cannot mix text and a node element', element.offset);
126
+ }
127
+ if (parent.resource !== undefined ||
128
+ parent.nodeId !== undefined ||
129
+ parent.datatype !== undefined ||
130
+ parent.properties.length > 0) {
131
+ throw this.error('A property element with rdf:resource, rdf:nodeID, rdf:datatype or property attributes cannot contain a node element', element.offset);
132
+ }
133
+ const object = this.nodeElement(element, scope);
134
+ parent.object = object;
135
+ this.assert(parent.statement, object);
136
+ return;
137
+ }
138
+ default:
139
+ assertExhausted(parent);
140
+ }
141
+ }
142
+ endElement() {
143
+ const frame = this.stack.pop();
144
+ if (frame === undefined)
145
+ return;
146
+ switch (frame.kind) {
147
+ case 'property':
148
+ this.endProperty(frame);
149
+ return;
150
+ case 'collection': {
151
+ let head = this.iri(RDF_NIL);
152
+ for (let i = frame.items.length - 1; i >= 0; i--) {
153
+ const cell = this.blank();
154
+ this.emit(cell, this.iri(RDF_FIRST), frame.items[i]);
155
+ this.emit(cell, this.iri(RDF_REST), head);
156
+ head = cell;
157
+ }
158
+ this.assert(frame.statement, head);
159
+ return;
160
+ }
161
+ case 'literal':
162
+ if (frame.statement) {
163
+ const value = DataFactory.literal(frame.writer.result(), this.iri(RDF_XML_LITERAL));
164
+ this.assert(frame.statement, value);
165
+ }
166
+ else
167
+ frame.writer.end();
168
+ return;
169
+ default:
170
+ return;
171
+ }
172
+ }
173
+ text(value, offset) {
174
+ const frame = this.top();
175
+ if (frame.kind === 'literal')
176
+ frame.writer.text(value);
177
+ else if (frame.kind === 'property' && frame.object === undefined)
178
+ frame.text += value;
179
+ else if (!isXmlSpace(value)) {
180
+ throw this.error(frame.kind === 'property'
181
+ ? 'A property element cannot mix text and a node element'
182
+ : `Unexpected text "${value.trim().slice(0, 40)}"`, offset);
183
+ }
184
+ }
185
+ processingInstruction(target, data) {
186
+ const frame = this.top();
187
+ if (frame.kind === 'literal')
188
+ frame.writer.processingInstruction(target, data);
189
+ }
190
+ comment(value) {
191
+ const frame = this.top();
192
+ if (frame.kind === 'literal')
193
+ frame.writer.comment(value);
194
+ }
195
+ // ─── Grammar ────────────────────────────────────────────────────────────
196
+ root(element, scope) {
197
+ if (element.uri === RDF_NS && element.local === 'RDF') {
198
+ this.stack.push({ kind: 'nodes', scope });
199
+ return;
200
+ }
201
+ // A lone node element is RDF/XML too (whatever its vocabulary), but OWL/XML, GraphML and
202
+ // GEXF roots are recognisably something else: say so instead of reading them as nodes.
203
+ const kind = classifyXmlRoot({
204
+ local: element.local,
205
+ uri: element.uri,
206
+ rdfAttributes: element.attributes.some((attribute) => attribute.uri === RDF_NS),
207
+ rdfNamespace: element.namespaces.some(([, uri]) => uri === RDF_NS),
208
+ });
209
+ if (kind !== 'rdfxml' && kind !== 'XML')
210
+ throw unsupportedFormat(kind);
211
+ this.nodeElement(element, scope);
212
+ }
213
+ nodeElement(element, scope) {
214
+ const type = this.elementIri(element, 'node');
215
+ let subject;
216
+ let identifiers = 0;
217
+ const properties = [];
218
+ for (const attribute of element.attributes) {
219
+ const meaning = this.attribute(attribute, element.offset);
220
+ if (meaning === undefined)
221
+ continue;
222
+ if (meaning instanceof NamedNode) {
223
+ properties.push([meaning, attribute.value]);
224
+ continue;
225
+ }
226
+ identifiers++;
227
+ if (meaning === 'about')
228
+ subject = this.iri(resolveIri(attribute.value, scope.base));
229
+ else if (meaning === 'ID')
230
+ subject = this.idIri(attribute.value, scope, element.offset);
231
+ else if (meaning === 'nodeID')
232
+ subject = this.labelled(attribute.value, element.offset);
233
+ else
234
+ throw this.error(`rdf:${meaning} is not allowed on a node element`, element.offset);
235
+ }
236
+ if (identifiers > 1) {
237
+ throw this.error('A node element can have only one of rdf:about, rdf:ID and rdf:nodeID', element.offset);
238
+ }
239
+ subject ??= this.blank();
240
+ if (type !== RDF_DESCRIPTION)
241
+ this.emit(subject, this.iri(RDF_TYPE), this.iri(type));
242
+ this.propertyAttributes(subject, properties, scope);
243
+ this.stack.push({ kind: 'node', scope, subject, li: 0 });
244
+ return subject;
245
+ }
246
+ propertyElement(element, scope, parent) {
247
+ let iri = this.elementIri(element, 'property');
248
+ if (iri === RDF_LI)
249
+ iri = `${RDF_NS}_${++parent.li}`;
250
+ const syntax = new Map();
251
+ const properties = [];
252
+ for (const attribute of element.attributes) {
253
+ const meaning = this.attribute(attribute, element.offset);
254
+ if (meaning === undefined)
255
+ continue;
256
+ if (meaning instanceof NamedNode)
257
+ properties.push([meaning, attribute.value]);
258
+ else if (!PROPERTY_SYNTAX.has(meaning)) {
259
+ throw this.error(`rdf:${meaning} is not allowed on a property element`, element.offset);
260
+ }
261
+ else if (syntax.has(meaning)) {
262
+ throw this.error(`rdf:${meaning} is given twice`, element.offset);
263
+ }
264
+ else
265
+ syntax.set(meaning, attribute.value);
266
+ }
267
+ const id = syntax.get('ID');
268
+ const statement = {
269
+ subject: parent.subject,
270
+ predicate: this.iri(iri),
271
+ reifier: id === undefined ? undefined : this.idIri(id, scope, element.offset),
272
+ };
273
+ const parseType = syntax.get('parseType');
274
+ const resource = syntax.get('resource');
275
+ const nodeId = syntax.get('nodeID');
276
+ const datatype = syntax.get('datatype');
277
+ if (parseType !== undefined) {
278
+ if (resource !== undefined ||
279
+ nodeId !== undefined ||
280
+ datatype !== undefined ||
281
+ properties.length > 0) {
282
+ throw this.error('rdf:parseType cannot be combined with rdf:resource, rdf:nodeID, rdf:datatype or property attributes', element.offset);
283
+ }
284
+ if (parseType === 'Resource') {
285
+ const object = this.blank();
286
+ this.assert(statement, object);
287
+ this.stack.push({ kind: 'node', scope, subject: object, li: 0 });
288
+ }
289
+ else if (parseType === 'Collection') {
290
+ this.stack.push({ kind: 'collection', scope, statement, items: [] });
291
+ }
292
+ else {
293
+ // "Literal", and any other value (RDF/XML §7.2.20).
294
+ this.stack.push({ kind: 'literal', statement, writer: new XmlLiteralWriter() });
295
+ }
296
+ return;
297
+ }
298
+ if ([resource, nodeId, datatype].filter((value) => value !== undefined).length > 1) {
299
+ throw this.error('A property element can have only one of rdf:resource, rdf:nodeID and rdf:datatype', element.offset);
300
+ }
301
+ if (datatype !== undefined && properties.length > 0) {
302
+ throw this.error('rdf:datatype cannot be combined with property attributes', element.offset);
303
+ }
304
+ this.stack.push({
305
+ kind: 'property',
306
+ scope,
307
+ statement,
308
+ resource,
309
+ nodeId,
310
+ datatype,
311
+ properties,
312
+ offset: element.offset,
313
+ text: '',
314
+ object: undefined,
315
+ });
316
+ }
317
+ /** Literal, empty and resource-valued property elements, decided by what they contained. */
318
+ endProperty(frame) {
319
+ if (frame.object !== undefined)
320
+ return; // A node element: asserted when it started.
321
+ const { scope, resource, nodeId, datatype, properties, text } = frame;
322
+ const resourceLike = resource !== undefined || nodeId !== undefined || properties.length > 0;
323
+ if (text !== '' && !resourceLike) {
324
+ this.assert(frame.statement, this.literal(text, scope, datatype));
325
+ return;
326
+ }
327
+ if (!isXmlSpace(text)) {
328
+ throw this.error('A property element with rdf:resource, rdf:nodeID or property attributes cannot contain text', frame.offset);
329
+ }
330
+ if (!resourceLike) {
331
+ this.assert(frame.statement, this.literal('', scope, datatype));
332
+ return;
333
+ }
334
+ const object = resource !== undefined
335
+ ? this.iri(resolveIri(resource, scope.base))
336
+ : nodeId !== undefined
337
+ ? this.labelled(nodeId, frame.offset)
338
+ : this.blank();
339
+ this.propertyAttributes(object, properties, scope);
340
+ this.assert(frame.statement, object);
341
+ }
342
+ propertyAttributes(subject, properties, scope) {
343
+ for (const [predicate, value] of properties) {
344
+ const object = predicate.value === RDF_TYPE
345
+ ? this.iri(resolveIri(value, scope.base))
346
+ : this.literal(value, scope, undefined);
347
+ this.emit(subject, predicate, object);
348
+ }
349
+ }
350
+ /** The IRI an element names, rejecting syntax names in the wrong place. */
351
+ elementIri(element, role) {
352
+ const { uri, local } = element;
353
+ if (uri === '')
354
+ throw this.error(`Element <${local}> is in no namespace`, element.offset);
355
+ if (uri === RDF_NS &&
356
+ (SYNTAX_NAMES.has(local) || local === (role === 'node' ? 'li' : 'Description'))) {
357
+ throw this.error(`rdf:${local} cannot be used as a ${role} element`, element.offset);
358
+ }
359
+ return uri + local;
360
+ }
361
+ /**
362
+ * What an attribute means: an `rdf:` syntax name, a property, or nothing (reserved `xml…`
363
+ * names, which RDF/XML ignores; `xml:lang` and `xml:base` are read by `inScope`).
364
+ */
365
+ attribute(attribute, offset) {
366
+ const { prefix, local, uri } = attribute;
367
+ if (/^xml/i.test(prefix) || (prefix === '' && /^xml/i.test(local)))
368
+ return undefined;
369
+ if (uri === '') {
370
+ if (!LEGACY_UNQUALIFIED.has(local)) {
371
+ throw this.error(`Attribute "${local}" is in no namespace`, offset);
372
+ }
373
+ return local === 'type' ? this.iri(RDF_TYPE) : local;
374
+ }
375
+ if (uri === RDF_NS) {
376
+ if (SYNTAX_NAMES.has(local))
377
+ return local;
378
+ if (local === 'li' || local === 'Description') {
379
+ throw this.error(`rdf:${local} cannot be used as an attribute`, offset);
380
+ }
381
+ }
382
+ return this.iri(uri + local);
383
+ }
384
+ // ─── Terms ──────────────────────────────────────────────────────────────
385
+ /** `rdf:ID` → `base#id`, unique per document. */
386
+ idIri(id, scope, offset) {
387
+ if (!NC_NAME.test(id))
388
+ throw this.error(`rdf:ID "${id}" is not an XML name`, offset);
389
+ const iri = resolveIri(`#${id}`, scope.base);
390
+ if (this.ids.has(iri))
391
+ throw this.error(`rdf:ID "${id}" is used twice`, offset);
392
+ this.ids.add(iri);
393
+ return this.iri(iri);
394
+ }
395
+ /** `rdf:nodeID` blank nodes; their labels cannot clash with generated ones (`g…`). */
396
+ labelled(label, offset) {
397
+ if (!NC_NAME.test(label))
398
+ throw this.error(`rdf:nodeID "${label}" is not an XML name`, offset);
399
+ return new BlankNode(`n${label}`);
400
+ }
401
+ blank() {
402
+ return new BlankNode(`g${this.blanks++}`);
403
+ }
404
+ iri(value) {
405
+ let node = this.iris.get(value);
406
+ if (!node) {
407
+ node = new NamedNode(value);
408
+ this.iris.set(value, node);
409
+ }
410
+ return node;
411
+ }
412
+ literal(value, scope, datatype) {
413
+ if (datatype !== undefined) {
414
+ return DataFactory.literal(value, this.iri(resolveIri(datatype, scope.base)));
415
+ }
416
+ return scope.language === ''
417
+ ? DataFactory.literal(value)
418
+ : DataFactory.literal(value, scope.language);
419
+ }
420
+ assert({ subject, predicate, reifier }, object) {
421
+ this.emit(subject, predicate, object);
422
+ if (!reifier)
423
+ return;
424
+ this.emit(reifier, this.iri(RDF_TYPE), this.iri(RDF_STATEMENT));
425
+ this.emit(reifier, this.iri(RDF_SUBJECT), subject);
426
+ this.emit(reifier, this.iri(RDF_PREDICATE), predicate);
427
+ this.emit(reifier, this.iri(RDF_OBJECT), object);
428
+ }
429
+ emit(subject, predicate, object) {
430
+ this.quads.push(DataFactory.quad(subject, predicate, object));
431
+ }
432
+ top() {
433
+ return this.stack[this.stack.length - 1];
434
+ }
435
+ error(message, offset) {
436
+ return new XmlSyntaxError(message, offset);
437
+ }
438
+ }
439
+ /** `xml:base` and `xml:lang` of an element, inheriting the enclosing scope. */
440
+ function inScope(element, outer) {
441
+ let { base, language } = outer;
442
+ for (const attribute of element.attributes) {
443
+ if (attribute.uri !== XML_NS)
444
+ continue;
445
+ if (attribute.local === 'base')
446
+ base = resolveIri(attribute.value, base);
447
+ else if (attribute.local === 'lang')
448
+ language = attribute.value;
449
+ }
450
+ return base === outer.base && language === outer.language ? outer : { base, language };
451
+ }
452
+ function assertExhausted(frame) {
453
+ throw new XmlSyntaxError(`Unexpected parser state ${String(frame)}`, 0);
454
+ }
455
+ // ─── XML literals ───────────────────────────────────────────────────────────
456
+ const NO_NAMESPACES = new Map();
457
+ /**
458
+ * Lexical form of an `rdf:parseType="Literal"` value: Exclusive XML Canonicalization (with
459
+ * comments, empty InclusiveNamespaces list) of the element content, as RDF 1.1 XML Syntax
460
+ * requires. Namespaces are declared where they are first visibly used.
461
+ */
462
+ class XmlLiteralWriter {
463
+ out = '';
464
+ open = [];
465
+ start(element) {
466
+ const outer = this.open[this.open.length - 1]?.rendered ?? NO_NAMESPACES;
467
+ const used = new Map([[element.prefix, element.uri]]);
468
+ for (const attribute of element.attributes) {
469
+ if (attribute.prefix !== '' && attribute.prefix !== 'xml')
470
+ used.set(attribute.prefix, attribute.uri);
471
+ }
472
+ const declarations = [...used]
473
+ .filter(([prefix, uri]) => (outer.get(prefix) ?? '') !== uri)
474
+ .sort(([a], [b]) => compareStrings(a, b));
475
+ let rendered = outer;
476
+ if (declarations.length > 0) {
477
+ const next = new Map(outer);
478
+ for (const [prefix, uri] of declarations)
479
+ next.set(prefix, uri);
480
+ rendered = next;
481
+ }
482
+ const attributes = [...element.attributes].sort((a, b) => compareStrings(a.uri, b.uri) || compareStrings(a.local, b.local));
483
+ const name = qualified(element);
484
+ let tag = `<${name}`;
485
+ for (const [prefix, uri] of declarations) {
486
+ tag += ` xmlns${prefix === '' ? '' : `:${prefix}`}="${escapeAttribute(uri)}"`;
487
+ }
488
+ for (const attribute of attributes)
489
+ tag += ` ${qualified(attribute)}="${escapeAttribute(attribute.value)}"`;
490
+ this.out += `${tag}>`;
491
+ this.open.push({ qname: name, rendered });
492
+ }
493
+ end() {
494
+ const element = this.open.pop();
495
+ if (element)
496
+ this.out += `</${element.qname}>`;
497
+ }
498
+ text(value) {
499
+ this.out += value.replace(/[&<>\r]/g, (c) => TEXT_ESCAPES[c] ?? c);
500
+ }
501
+ comment(value) {
502
+ this.out += `<!--${value}-->`;
503
+ }
504
+ processingInstruction(target, data) {
505
+ this.out += data === '' ? `<?${target}?>` : `<?${target} ${data}?>`;
506
+ }
507
+ result() {
508
+ return this.out;
509
+ }
510
+ }
511
+ const TEXT_ESCAPES = {
512
+ '&': '&amp;',
513
+ '<': '&lt;',
514
+ '>': '&gt;',
515
+ '\r': '&#xD;',
516
+ };
517
+ const ATTRIBUTE_ESCAPES = {
518
+ '&': '&amp;',
519
+ '<': '&lt;',
520
+ '"': '&quot;',
521
+ '\t': '&#x9;',
522
+ '\n': '&#xA;',
523
+ '\r': '&#xD;',
524
+ };
525
+ function escapeAttribute(value) {
526
+ return value.replace(/[&<"\t\n\r]/g, (c) => ATTRIBUTE_ESCAPES[c] ?? c);
527
+ }
528
+ const qualified = (name) => name.prefix === '' ? name.local : `${name.prefix}:${name.local}`;
529
+ //# sourceMappingURL=rdfxml.js.map