@faubulous/mentor-rdf-serializers 1.0.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 (82) hide show
  1. package/README.md +582 -0
  2. package/dist/base-serializer.d.ts +63 -0
  3. package/dist/base-serializer.d.ts.map +1 -0
  4. package/dist/base-serializer.js +144 -0
  5. package/dist/base-serializer.js.map +1 -0
  6. package/dist/base-token-formatter.d.ts +225 -0
  7. package/dist/base-token-formatter.d.ts.map +1 -0
  8. package/dist/base-token-formatter.js +521 -0
  9. package/dist/base-token-formatter.js.map +1 -0
  10. package/dist/index.d.ts +20 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +36 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/jsonld/serializer.d.ts +99 -0
  15. package/dist/jsonld/serializer.d.ts.map +1 -0
  16. package/dist/jsonld/serializer.js +282 -0
  17. package/dist/jsonld/serializer.js.map +1 -0
  18. package/dist/n3/formatter.d.ts +105 -0
  19. package/dist/n3/formatter.d.ts.map +1 -0
  20. package/dist/n3/formatter.js +444 -0
  21. package/dist/n3/formatter.js.map +1 -0
  22. package/dist/n3/serializer.d.ts +103 -0
  23. package/dist/n3/serializer.d.ts.map +1 -0
  24. package/dist/n3/serializer.js +134 -0
  25. package/dist/n3/serializer.js.map +1 -0
  26. package/dist/nquads/formatter.d.ts +44 -0
  27. package/dist/nquads/formatter.d.ts.map +1 -0
  28. package/dist/nquads/formatter.js +116 -0
  29. package/dist/nquads/formatter.js.map +1 -0
  30. package/dist/nquads/serializer.d.ts +38 -0
  31. package/dist/nquads/serializer.d.ts.map +1 -0
  32. package/dist/nquads/serializer.js +70 -0
  33. package/dist/nquads/serializer.js.map +1 -0
  34. package/dist/ntriples/formatter.d.ts +44 -0
  35. package/dist/ntriples/formatter.d.ts.map +1 -0
  36. package/dist/ntriples/formatter.js +116 -0
  37. package/dist/ntriples/formatter.js.map +1 -0
  38. package/dist/ntriples/serializer.d.ts +38 -0
  39. package/dist/ntriples/serializer.d.ts.map +1 -0
  40. package/dist/ntriples/serializer.js +79 -0
  41. package/dist/ntriples/serializer.js.map +1 -0
  42. package/dist/sorting/index.d.ts +5 -0
  43. package/dist/sorting/index.d.ts.map +1 -0
  44. package/dist/sorting/index.js +5 -0
  45. package/dist/sorting/index.js.map +1 -0
  46. package/dist/sorting/strategies.d.ts +46 -0
  47. package/dist/sorting/strategies.d.ts.map +1 -0
  48. package/dist/sorting/strategies.js +259 -0
  49. package/dist/sorting/strategies.js.map +1 -0
  50. package/dist/sparql/formatter.d.ts +103 -0
  51. package/dist/sparql/formatter.d.ts.map +1 -0
  52. package/dist/sparql/formatter.js +764 -0
  53. package/dist/sparql/formatter.js.map +1 -0
  54. package/dist/token-serializer.d.ts +96 -0
  55. package/dist/token-serializer.d.ts.map +1 -0
  56. package/dist/token-serializer.js +456 -0
  57. package/dist/token-serializer.js.map +1 -0
  58. package/dist/trig/formatter.d.ts +99 -0
  59. package/dist/trig/formatter.d.ts.map +1 -0
  60. package/dist/trig/formatter.js +418 -0
  61. package/dist/trig/formatter.js.map +1 -0
  62. package/dist/trig/serializer.d.ts +39 -0
  63. package/dist/trig/serializer.d.ts.map +1 -0
  64. package/dist/trig/serializer.js +170 -0
  65. package/dist/trig/serializer.js.map +1 -0
  66. package/dist/turtle/formatter.d.ts +56 -0
  67. package/dist/turtle/formatter.d.ts.map +1 -0
  68. package/dist/turtle/formatter.js +325 -0
  69. package/dist/turtle/formatter.js.map +1 -0
  70. package/dist/turtle/serializer.d.ts +87 -0
  71. package/dist/turtle/serializer.d.ts.map +1 -0
  72. package/dist/turtle/serializer.js +343 -0
  73. package/dist/turtle/serializer.js.map +1 -0
  74. package/dist/types.d.ts +323 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +14 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/utils.d.ts +157 -0
  79. package/dist/utils.d.ts.map +1 -0
  80. package/dist/utils.js +446 -0
  81. package/dist/utils.js.map +1 -0
  82. package/package.json +73 -0
@@ -0,0 +1,99 @@
1
+ import type { Quad } from '@rdfjs/types';
2
+ import type { ISerializer, Rdf12Quad, SerializationResult, SerializerOptions, RdfSyntax as RdfSyntaxType } from '../types.js';
3
+ /**
4
+ * JSON-LD specific options.
5
+ */
6
+ export interface JsonLdSerializerOptions extends SerializerOptions {
7
+ /**
8
+ * Whether to use @type shorthand instead of rdf:type.
9
+ * Default: true
10
+ */
11
+ useTypeShorthand?: boolean;
12
+ /**
13
+ * Whether to use @id shorthand instead of full IRI objects.
14
+ * Default: true
15
+ */
16
+ useIdShorthand?: boolean;
17
+ /**
18
+ * Whether to compact arrays with single items.
19
+ * Default: true
20
+ */
21
+ compactArrays?: boolean;
22
+ /**
23
+ * Whether to embed @context in the output.
24
+ * Default: true
25
+ */
26
+ embedContext?: boolean;
27
+ /**
28
+ * JSON indentation spaces (default: 2).
29
+ */
30
+ jsonIndent?: number;
31
+ }
32
+ /**
33
+ * Serializer for JSON-LD format.
34
+ *
35
+ * JSON-LD is a JSON-based format for Linked Data that can be used
36
+ * both as RDF and as plain JSON.
37
+ *
38
+ * Supports RDF 1.2 features including:
39
+ * - Triple terms via @id references
40
+ * - Base direction in language tags
41
+ *
42
+ * @see https://www.w3.org/TR/json-ld11/
43
+ */
44
+ export declare class JsonLdSerializer implements ISerializer {
45
+ readonly syntax: RdfSyntaxType;
46
+ /**
47
+ * Serializes a single quad to JSON-LD format.
48
+ */
49
+ serializeQuad(quad: Quad | Rdf12Quad, options?: JsonLdSerializerOptions): string;
50
+ /**
51
+ * Serializes multiple quads to JSON-LD format.
52
+ */
53
+ serialize(quads: Iterable<Quad | Rdf12Quad>, options?: JsonLdSerializerOptions): string;
54
+ /**
55
+ * Formats quads to JSON-LD with detailed result.
56
+ */
57
+ format(quads: Iterable<Quad | Rdf12Quad>, options?: JsonLdSerializerOptions): SerializationResult;
58
+ /**
59
+ * Builds the @context object from prefixes.
60
+ */
61
+ private buildContext;
62
+ /**
63
+ * Builds a graph node containing all quads.
64
+ */
65
+ private buildGraph;
66
+ /**
67
+ * Builds the content of a graph (array of nodes).
68
+ */
69
+ private buildGraphContent;
70
+ /**
71
+ * Builds a JSON-LD node from a subject and its quads.
72
+ */
73
+ private buildNode;
74
+ /**
75
+ * Builds a JSON-LD value from an RDF term.
76
+ */
77
+ private buildValue;
78
+ /**
79
+ * Builds a JSON-LD literal value.
80
+ */
81
+ private buildLiteralValue;
82
+ /**
83
+ * Builds a JSON-LD representation of a triple term (RDF 1.2).
84
+ */
85
+ private buildTripleTermValue;
86
+ /**
87
+ * Compacts an IRI using prefixes.
88
+ */
89
+ private compactIri;
90
+ /**
91
+ * Extracts the IRI value from a graph term.
92
+ */
93
+ private extractIri;
94
+ /**
95
+ * Gets merged options with defaults.
96
+ */
97
+ private getOptions;
98
+ }
99
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/jsonld/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,IAAI,EAAQ,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EACR,WAAW,EACX,SAAS,EAET,mBAAmB,EACnB,iBAAiB,EAEjB,SAAS,IAAI,aAAa,EAC7B,MAAM,aAAa,CAAC;AAmBrB;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAC9D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAiBD;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAChD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAoB;IAElD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM;IAIhF;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM;IAsDvF;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,mBAAmB;IAMjG;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,SAAS;IA4DjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,UAAU;CAWrB"}
@@ -0,0 +1,282 @@
1
+ import { RdfSyntax } from '../types.js';
2
+ import { findPrefix, groupQuadsByGraph, groupQuadsBySubject, mergeOptions, parseLanguageTag, RDF_NAMESPACE, RDF_TYPE, sortQuads, XSD_BOOLEAN, XSD_DECIMAL, XSD_DOUBLE, XSD_INTEGER, XSD_STRING } from '../utils.js';
3
+ /**
4
+ * Serializer for JSON-LD format.
5
+ *
6
+ * JSON-LD is a JSON-based format for Linked Data that can be used
7
+ * both as RDF and as plain JSON.
8
+ *
9
+ * Supports RDF 1.2 features including:
10
+ * - Triple terms via @id references
11
+ * - Base direction in language tags
12
+ *
13
+ * @see https://www.w3.org/TR/json-ld11/
14
+ */
15
+ export class JsonLdSerializer {
16
+ syntax = RdfSyntax.JsonLd;
17
+ /**
18
+ * Serializes a single quad to JSON-LD format.
19
+ */
20
+ serializeQuad(quad, options) {
21
+ return this.serialize([quad], options);
22
+ }
23
+ /**
24
+ * Serializes multiple quads to JSON-LD format.
25
+ */
26
+ serialize(quads, options) {
27
+ const opts = this.getOptions(options);
28
+ const quadArray = Array.from(quads);
29
+ if (quadArray.length === 0) {
30
+ return '{}';
31
+ }
32
+ // Sort if requested
33
+ const sortedQuads = opts.sort ? sortQuads(quadArray) : quadArray;
34
+ // Group by graph first
35
+ const graphGroups = groupQuadsByGraph(sortedQuads);
36
+ // Build JSON-LD structure
37
+ const result = {};
38
+ // Add @context if prefixes are provided
39
+ if (opts.embedContext && Object.keys(opts.prefixes).length > 0) {
40
+ result['@context'] = this.buildContext(opts);
41
+ }
42
+ // Check if we have multiple graphs
43
+ const hasNamedGraphs = Array.from(graphGroups.keys()).some(k => k !== '');
44
+ if (hasNamedGraphs) {
45
+ // Dataset with named graphs
46
+ const graphs = [];
47
+ for (const [graphKey, graphQuads] of graphGroups) {
48
+ const graphNode = this.buildGraph(graphQuads, opts);
49
+ if (graphKey !== '') {
50
+ graphNode['@id'] = this.extractIri(graphQuads[0].graph);
51
+ }
52
+ graphs.push(graphNode);
53
+ }
54
+ result['@graph'] = graphs.length === 1 && !opts.compactArrays ? graphs : graphs;
55
+ }
56
+ else {
57
+ // Single default graph
58
+ const defaultGraphQuads = graphGroups.get('') || [];
59
+ const graphContent = this.buildGraphContent(defaultGraphQuads, opts);
60
+ if (graphContent.length === 1 && opts.compactArrays) {
61
+ Object.assign(result, graphContent[0]);
62
+ }
63
+ else {
64
+ result['@graph'] = graphContent;
65
+ }
66
+ }
67
+ const indent = opts.jsonIndent ?? 2;
68
+ return JSON.stringify(result, null, opts.prettyPrint ? indent : undefined);
69
+ }
70
+ /**
71
+ * Formats quads to JSON-LD with detailed result.
72
+ */
73
+ format(quads, options) {
74
+ return {
75
+ output: this.serialize(quads, options)
76
+ };
77
+ }
78
+ /**
79
+ * Builds the @context object from prefixes.
80
+ */
81
+ buildContext(opts) {
82
+ const context = {};
83
+ for (const [prefix, namespace] of Object.entries(opts.prefixes)) {
84
+ context[prefix] = namespace;
85
+ }
86
+ return context;
87
+ }
88
+ /**
89
+ * Builds a graph node containing all quads.
90
+ */
91
+ buildGraph(quads, opts) {
92
+ const content = this.buildGraphContent(quads, opts);
93
+ return {
94
+ '@graph': content
95
+ };
96
+ }
97
+ /**
98
+ * Builds the content of a graph (array of nodes).
99
+ */
100
+ buildGraphContent(quads, opts) {
101
+ const subjectGroups = groupQuadsBySubject(quads);
102
+ const nodes = [];
103
+ for (const [_subjectKey, subjectQuads] of subjectGroups) {
104
+ const node = this.buildNode(subjectQuads[0].subject, subjectQuads, opts);
105
+ nodes.push(node);
106
+ }
107
+ return nodes;
108
+ }
109
+ /**
110
+ * Builds a JSON-LD node from a subject and its quads.
111
+ */
112
+ buildNode(subject, quads, opts) {
113
+ const node = {};
114
+ // Add @id for named nodes and blank nodes
115
+ if (subject.termType === 'NamedNode') {
116
+ node['@id'] = this.compactIri(subject.value, opts);
117
+ }
118
+ else if (subject.termType === 'BlankNode') {
119
+ node['@id'] = `_:${subject.value}`;
120
+ }
121
+ else if (subject.termType === 'TripleTerm') {
122
+ // Handle RDF 1.2 triple term subjects
123
+ // JSON-LD doesn't directly support this, so we represent as reified statement
124
+ const tt = subject;
125
+ node['@type'] = this.compactIri(`${RDF_NAMESPACE}Statement`, opts);
126
+ node[this.compactIri(`${RDF_NAMESPACE}subject`, opts)] =
127
+ this.buildValue(tt.subject, opts);
128
+ node[this.compactIri(`${RDF_NAMESPACE}predicate`, opts)] =
129
+ this.buildValue(tt.predicate, opts);
130
+ node[this.compactIri(`${RDF_NAMESPACE}object`, opts)] =
131
+ this.buildValue(tt.object, opts);
132
+ }
133
+ // Group properties
134
+ const properties = new Map();
135
+ for (const quad of quads) {
136
+ const predKey = quad.predicate.value;
137
+ if (!properties.has(predKey)) {
138
+ properties.set(predKey, []);
139
+ }
140
+ properties.get(predKey).push(quad);
141
+ }
142
+ // Build properties
143
+ for (const [predicateIri, propQuads] of properties) {
144
+ const values = propQuads.map(q => this.buildValue(q.object, opts));
145
+ // Use @type shorthand for rdf:type
146
+ if (opts.useTypeShorthand && predicateIri === RDF_TYPE) {
147
+ const types = values.map(v => {
148
+ if (typeof v === 'object' && v !== null && '@id' in v) {
149
+ return v['@id'];
150
+ }
151
+ return v;
152
+ }).filter((v) => typeof v === 'string');
153
+ node['@type'] = opts.compactArrays && types.length === 1 ? types[0] : types;
154
+ }
155
+ else {
156
+ const propName = this.compactIri(predicateIri, opts);
157
+ node[propName] = opts.compactArrays && values.length === 1
158
+ ? values[0]
159
+ : values;
160
+ }
161
+ }
162
+ return node;
163
+ }
164
+ /**
165
+ * Builds a JSON-LD value from an RDF term.
166
+ */
167
+ buildValue(term, opts) {
168
+ switch (term.termType) {
169
+ case 'NamedNode':
170
+ if (opts.useIdShorthand) {
171
+ return { '@id': this.compactIri(term.value, opts) };
172
+ }
173
+ return { '@id': term.value };
174
+ case 'BlankNode':
175
+ return { '@id': `_:${term.value}` };
176
+ case 'Literal':
177
+ return this.buildLiteralValue(term, opts);
178
+ case 'TripleTerm':
179
+ return this.buildTripleTermValue(term, opts);
180
+ default:
181
+ return null;
182
+ }
183
+ }
184
+ /**
185
+ * Builds a JSON-LD literal value.
186
+ */
187
+ buildLiteralValue(literal, opts) {
188
+ const datatype = literal.datatype?.value;
189
+ const language = literal.language;
190
+ // Language-tagged literal
191
+ if (language) {
192
+ const parsed = parseLanguageTag(language);
193
+ const result = {
194
+ '@value': literal.value,
195
+ '@language': parsed.language
196
+ };
197
+ if (parsed.direction) {
198
+ result['@direction'] = parsed.direction;
199
+ }
200
+ return result;
201
+ }
202
+ // Native JSON types
203
+ if (datatype === XSD_BOOLEAN) {
204
+ return literal.value === 'true' || literal.value === '1';
205
+ }
206
+ if (datatype === XSD_INTEGER) {
207
+ const num = parseInt(literal.value, 10);
208
+ if (!isNaN(num)) {
209
+ return num;
210
+ }
211
+ }
212
+ if (datatype === XSD_DOUBLE || datatype === XSD_DECIMAL) {
213
+ const num = parseFloat(literal.value);
214
+ if (!isNaN(num)) {
215
+ return num;
216
+ }
217
+ }
218
+ // Plain string (xsd:string is default)
219
+ if (!datatype || datatype === XSD_STRING) {
220
+ return literal.value;
221
+ }
222
+ // Typed literal
223
+ return {
224
+ '@value': literal.value,
225
+ '@type': this.compactIri(datatype, opts)
226
+ };
227
+ }
228
+ /**
229
+ * Builds a JSON-LD representation of a triple term (RDF 1.2).
230
+ */
231
+ buildTripleTermValue(tripleTerm, opts) {
232
+ // JSON-LD 1.1 doesn't have native triple term support,
233
+ // but we can represent it as a reified statement
234
+ const result = {
235
+ '@type': this.compactIri(`${RDF_NAMESPACE}Statement`, opts)
236
+ };
237
+ result[this.compactIri(`${RDF_NAMESPACE}subject`, opts)] =
238
+ this.buildValue(tripleTerm.subject, opts);
239
+ result[this.compactIri(`${RDF_NAMESPACE}predicate`, opts)] =
240
+ this.buildValue(tripleTerm.predicate, opts);
241
+ result[this.compactIri(`${RDF_NAMESPACE}object`, opts)] =
242
+ this.buildValue(tripleTerm.object, opts);
243
+ return result;
244
+ }
245
+ /**
246
+ * Compacts an IRI using prefixes.
247
+ */
248
+ compactIri(iri, opts) {
249
+ const prefixMatch = findPrefix(iri, opts.prefixes);
250
+ if (prefixMatch) {
251
+ return `${prefixMatch.prefix}:${prefixMatch.localName}`;
252
+ }
253
+ return iri;
254
+ }
255
+ /**
256
+ * Extracts the IRI value from a graph term.
257
+ */
258
+ extractIri(term) {
259
+ if (term.termType === 'NamedNode') {
260
+ return term.value;
261
+ }
262
+ if (term.termType === 'BlankNode') {
263
+ return `_:${term.value}`;
264
+ }
265
+ return '';
266
+ }
267
+ /**
268
+ * Gets merged options with defaults.
269
+ */
270
+ getOptions(options) {
271
+ const base = mergeOptions(options);
272
+ return {
273
+ ...base,
274
+ useTypeShorthand: options?.useTypeShorthand ?? true,
275
+ useIdShorthand: options?.useIdShorthand ?? true,
276
+ compactArrays: options?.compactArrays ?? true,
277
+ embedContext: options?.embedContext ?? true,
278
+ jsonIndent: options?.jsonIndent ?? 2
279
+ };
280
+ }
281
+ }
282
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/jsonld/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { IToken } from 'chevrotain';
2
+ import type { IRdfFormatter, SerializationResult, TokenSerializerOptions, RdfSyntax as RdfSyntaxType } from '../types.js';
3
+ import { BaseTokenFormatter, type BaseFormatterContext, type BaseFormatterOptions } from '../base-token-formatter.js';
4
+ /**
5
+ * N3-specific formatting options.
6
+ */
7
+ export interface N3FormatterOptions extends BaseFormatterOptions {
8
+ /**
9
+ * Use lowercase for @prefix and @base.
10
+ * Default: true
11
+ */
12
+ lowercaseDirectives?: boolean;
13
+ /**
14
+ * Put opening braces on the same line.
15
+ * Default: true
16
+ */
17
+ sameBraceLine?: boolean;
18
+ }
19
+ /**
20
+ * Internal formatting context for N3.
21
+ */
22
+ interface N3FormatterContext extends BaseFormatterContext {
23
+ opts: Required<N3FormatterOptions>;
24
+ }
25
+ /**
26
+ * Formatter for Notation3 (N3).
27
+ *
28
+ * N3 extends Turtle with formulas (graph literals), implications (`=>`),
29
+ * reverse implications (`<=`), quick variables, and other features.
30
+ * Uses the scope stack for both formula braces (curly) and blank node
31
+ * brackets, replacing the manual `formulaDepth` / `blankNodeDepth` counters.
32
+ *
33
+ * @see https://www.w3.org/TeamSubmission/n3/
34
+ */
35
+ export declare class N3Formatter extends BaseTokenFormatter<N3FormatterContext, N3FormatterOptions> implements IRdfFormatter {
36
+ readonly syntax: RdfSyntaxType;
37
+ private lexer;
38
+ /**
39
+ * Formats an N3 document.
40
+ */
41
+ formatFromText(input: string, options?: N3FormatterOptions): SerializationResult;
42
+ /**
43
+ * Formats from already-parsed tokens.
44
+ */
45
+ formatFromTokens(tokens: IToken[], options?: N3FormatterOptions & TokenSerializerOptions): SerializationResult;
46
+ format(input: string, options?: N3FormatterOptions): SerializationResult;
47
+ protected getOptions(options?: N3FormatterOptions): Required<N3FormatterOptions>;
48
+ protected createContext(opts: Required<N3FormatterOptions>): N3FormatterContext;
49
+ protected formatTokenValue(token: IToken, opts: Required<N3FormatterOptions>): string;
50
+ /**
51
+ * Handles comment tokens.
52
+ */
53
+ private handleN3Comment;
54
+ /**
55
+ * Handles opening curly brace (formula start).
56
+ * Uses the scope stack to track formula nesting.
57
+ */
58
+ private handleN3OpenCurly;
59
+ /**
60
+ * Handles closing curly brace (formula end).
61
+ * Pops the curly scope.
62
+ */
63
+ private handleN3CloseCurly;
64
+ /**
65
+ * Handles opening bracket tokens ([ for blank nodes, ( for collections).
66
+ */
67
+ private handleN3OpenBracket;
68
+ /**
69
+ * Handles closing bracket tokens (] for blank nodes, ) for collections).
70
+ */
71
+ private handleN3CloseBracket;
72
+ /**
73
+ * Handles period (statement terminator).
74
+ */
75
+ private handleN3Period;
76
+ /**
77
+ * Handles semicolon (predicate separator).
78
+ * Always adds extra indent for continuation.
79
+ */
80
+ private handleN3Semicolon;
81
+ /**
82
+ * Handles comma (object separator).
83
+ */
84
+ private handleN3Comma;
85
+ /**
86
+ * Handles N3 implication operator =>.
87
+ */
88
+ private handleN3Implication;
89
+ /**
90
+ * Handles N3 reverse implication operator <=.
91
+ */
92
+ private handleN3ReverseImplication;
93
+ /**
94
+ * Handles PREFIX/BASE IRI completion.
95
+ */
96
+ private handleN3PrefixIri;
97
+ /**
98
+ * Handles token spacing.
99
+ * N3 additionally suppresses space after opening curly braces.
100
+ */
101
+ private handleN3TokenSpacing;
102
+ private formatTokens;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/n3/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,IAAI,aAAa,EAC7B,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC5B,MAAM,4BAA4B,CAAC;AAMpC;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC5D;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,kBAAmB,SAAQ,oBAAoB;IACrD,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CACtC;AAMD;;;;;;;;;GASG;AACH,qBAAa,WACT,SAAQ,kBAAkB,CAAC,kBAAkB,EAAE,kBAAkB,CACjE,YAAW,aAAa;IAExB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAgB;IAC9C,OAAO,CAAC,KAAK,CAAiB;IAM9B;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,mBAAmB;IAYhF;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,mBAAmB;IAM9G,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,mBAAmB;IAQxE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAUhF,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,kBAAkB;IAO/E,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM;IAwBrF;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,YAAY;CAyJvB"}