eyeling 1.31.0 → 1.32.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.
@@ -16909,7 +16909,8 @@ function termEquals(self, other) {
16909
16909
  !!self.datatype &&
16910
16910
  typeof self.datatype.equals === 'function' &&
16911
16911
  self.datatype.equals(other.datatype) &&
16912
- self.language === (other.language || '')
16912
+ self.language === (other.language || '') &&
16913
+ (self.direction || '') === (other.direction || '')
16913
16914
  );
16914
16915
  }
16915
16916
 
@@ -16974,6 +16975,7 @@ class Literal {
16974
16975
  this.termType = 'Literal';
16975
16976
  this.value = String(value);
16976
16977
  this.language = '';
16978
+ this.direction = '';
16977
16979
  this.datatype = null;
16978
16980
 
16979
16981
  if (typeof languageOrDatatype === 'string') {
@@ -16981,6 +16983,10 @@ class Literal {
16981
16983
  this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
16982
16984
  } else if (isRdfJsTerm(languageOrDatatype)) {
16983
16985
  this.datatype = languageOrDatatype;
16986
+ } else if (languageOrDatatype && typeof languageOrDatatype === 'object') {
16987
+ this.language = String(languageOrDatatype.language || '');
16988
+ this.direction = languageOrDatatype.direction || '';
16989
+ this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
16984
16990
  } else {
16985
16991
  this.datatype = new NamedNode(XSD_NS + 'string');
16986
16992
  }
@@ -17027,6 +17033,38 @@ const dataFactory = {
17027
17033
  quad(subject, predicate, object, graph) {
17028
17034
  return new Quad(subject, predicate, object, graph || defaultGraphSingleton);
17029
17035
  },
17036
+ fromTerm(original) {
17037
+ if (!isRdfJsTerm(original)) throw new TypeError('Expected an RDF/JS term');
17038
+
17039
+ switch (original.termType) {
17040
+ case 'NamedNode':
17041
+ return new NamedNode(original.value);
17042
+ case 'BlankNode':
17043
+ return new BlankNode(original.value);
17044
+ case 'Literal':
17045
+ if (original.language || original.direction) {
17046
+ return new Literal(original.value, { language: original.language || '', direction: original.direction || '' });
17047
+ }
17048
+ return new Literal(original.value, original.datatype ? dataFactory.fromTerm(original.datatype) : undefined);
17049
+ case 'Variable':
17050
+ return new Variable(original.value);
17051
+ case 'DefaultGraph':
17052
+ return defaultGraphSingleton;
17053
+ case 'Quad':
17054
+ return dataFactory.fromQuad(original);
17055
+ default:
17056
+ throw new TypeError(`Unsupported RDF/JS termType ${JSON.stringify(original.termType)}`);
17057
+ }
17058
+ },
17059
+ fromQuad(original) {
17060
+ if (!isRdfJsQuad(original)) throw new TypeError('Expected an RDF/JS Quad');
17061
+ return new Quad(
17062
+ dataFactory.fromTerm(original.subject),
17063
+ dataFactory.fromTerm(original.predicate),
17064
+ dataFactory.fromTerm(original.object),
17065
+ dataFactory.fromTerm(original.graph),
17066
+ );
17067
+ },
17030
17068
  };
17031
17069
 
17032
17070
  function getDataFactory(factory) {
package/eyeling.js CHANGED
@@ -16909,7 +16909,8 @@ function termEquals(self, other) {
16909
16909
  !!self.datatype &&
16910
16910
  typeof self.datatype.equals === 'function' &&
16911
16911
  self.datatype.equals(other.datatype) &&
16912
- self.language === (other.language || '')
16912
+ self.language === (other.language || '') &&
16913
+ (self.direction || '') === (other.direction || '')
16913
16914
  );
16914
16915
  }
16915
16916
 
@@ -16974,6 +16975,7 @@ class Literal {
16974
16975
  this.termType = 'Literal';
16975
16976
  this.value = String(value);
16976
16977
  this.language = '';
16978
+ this.direction = '';
16977
16979
  this.datatype = null;
16978
16980
 
16979
16981
  if (typeof languageOrDatatype === 'string') {
@@ -16981,6 +16983,10 @@ class Literal {
16981
16983
  this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
16982
16984
  } else if (isRdfJsTerm(languageOrDatatype)) {
16983
16985
  this.datatype = languageOrDatatype;
16986
+ } else if (languageOrDatatype && typeof languageOrDatatype === 'object') {
16987
+ this.language = String(languageOrDatatype.language || '');
16988
+ this.direction = languageOrDatatype.direction || '';
16989
+ this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
16984
16990
  } else {
16985
16991
  this.datatype = new NamedNode(XSD_NS + 'string');
16986
16992
  }
@@ -17027,6 +17033,38 @@ const dataFactory = {
17027
17033
  quad(subject, predicate, object, graph) {
17028
17034
  return new Quad(subject, predicate, object, graph || defaultGraphSingleton);
17029
17035
  },
17036
+ fromTerm(original) {
17037
+ if (!isRdfJsTerm(original)) throw new TypeError('Expected an RDF/JS term');
17038
+
17039
+ switch (original.termType) {
17040
+ case 'NamedNode':
17041
+ return new NamedNode(original.value);
17042
+ case 'BlankNode':
17043
+ return new BlankNode(original.value);
17044
+ case 'Literal':
17045
+ if (original.language || original.direction) {
17046
+ return new Literal(original.value, { language: original.language || '', direction: original.direction || '' });
17047
+ }
17048
+ return new Literal(original.value, original.datatype ? dataFactory.fromTerm(original.datatype) : undefined);
17049
+ case 'Variable':
17050
+ return new Variable(original.value);
17051
+ case 'DefaultGraph':
17052
+ return defaultGraphSingleton;
17053
+ case 'Quad':
17054
+ return dataFactory.fromQuad(original);
17055
+ default:
17056
+ throw new TypeError(`Unsupported RDF/JS termType ${JSON.stringify(original.termType)}`);
17057
+ }
17058
+ },
17059
+ fromQuad(original) {
17060
+ if (!isRdfJsQuad(original)) throw new TypeError('Expected an RDF/JS Quad');
17061
+ return new Quad(
17062
+ dataFactory.fromTerm(original.subject),
17063
+ dataFactory.fromTerm(original.predicate),
17064
+ dataFactory.fromTerm(original.object),
17065
+ dataFactory.fromTerm(original.graph),
17066
+ );
17067
+ },
17030
17068
  };
17031
17069
 
17032
17070
  function getDataFactory(factory) {
package/index.d.ts CHANGED
@@ -1,50 +1,14 @@
1
1
  declare module 'eyeling' {
2
- export interface RdfJsTerm {
3
- termType: string;
4
- value: string;
5
- equals(other: RdfJsTerm | null | undefined): boolean;
6
- }
7
-
8
- export interface RdfJsNamedNode extends RdfJsTerm {
9
- termType: 'NamedNode';
10
- }
11
-
12
- export interface RdfJsBlankNode extends RdfJsTerm {
13
- termType: 'BlankNode';
14
- }
15
-
16
- export interface RdfJsVariable extends RdfJsTerm {
17
- termType: 'Variable';
18
- }
19
-
20
- export interface RdfJsDefaultGraph extends RdfJsTerm {
21
- termType: 'DefaultGraph';
22
- value: '';
23
- }
24
-
25
- export interface RdfJsLiteral extends RdfJsTerm {
26
- termType: 'Literal';
27
- language: string;
28
- datatype: RdfJsNamedNode;
29
- }
30
-
31
- export interface RdfJsQuad extends RdfJsTerm {
32
- termType: 'Quad';
33
- value: '';
34
- subject: RdfJsTerm;
35
- predicate: RdfJsTerm;
36
- object: RdfJsTerm;
37
- graph: RdfJsTerm;
38
- }
39
-
40
- export interface RdfJsDataFactory {
41
- namedNode(value: string): RdfJsNamedNode;
42
- blankNode(value?: string): RdfJsBlankNode;
43
- literal(value: string, languageOrDatatype?: string | RdfJsNamedNode): RdfJsLiteral;
2
+ export type RdfJsTerm = import('@rdfjs/types').Term;
3
+ export type RdfJsNamedNode = import('@rdfjs/types').NamedNode;
4
+ export type RdfJsBlankNode = import('@rdfjs/types').BlankNode;
5
+ export type RdfJsVariable = import('@rdfjs/types').Variable;
6
+ export type RdfJsDefaultGraph = import('@rdfjs/types').DefaultGraph;
7
+ export type RdfJsLiteral = import('@rdfjs/types').Literal;
8
+ export type RdfJsQuad = import('@rdfjs/types').Quad;
9
+ export type RdfJsDataFactory = import('@rdfjs/types').DataFactory<RdfJsQuad> & {
44
10
  variable(value: string): RdfJsVariable;
45
- defaultGraph(): RdfJsDefaultGraph;
46
- quad(subject: RdfJsTerm, predicate: RdfJsTerm, object: RdfJsTerm, graph?: RdfJsTerm): RdfJsQuad;
47
- }
11
+ };
48
12
 
49
13
  export interface EyelingPrefixEnv {
50
14
  _type?: 'PrefixEnv';
package/lib/rdfjs.js CHANGED
@@ -100,7 +100,8 @@ function termEquals(self, other) {
100
100
  !!self.datatype &&
101
101
  typeof self.datatype.equals === 'function' &&
102
102
  self.datatype.equals(other.datatype) &&
103
- self.language === (other.language || '')
103
+ self.language === (other.language || '') &&
104
+ (self.direction || '') === (other.direction || '')
104
105
  );
105
106
  }
106
107
 
@@ -165,6 +166,7 @@ class Literal {
165
166
  this.termType = 'Literal';
166
167
  this.value = String(value);
167
168
  this.language = '';
169
+ this.direction = '';
168
170
  this.datatype = null;
169
171
 
170
172
  if (typeof languageOrDatatype === 'string') {
@@ -172,6 +174,10 @@ class Literal {
172
174
  this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
173
175
  } else if (isRdfJsTerm(languageOrDatatype)) {
174
176
  this.datatype = languageOrDatatype;
177
+ } else if (languageOrDatatype && typeof languageOrDatatype === 'object') {
178
+ this.language = String(languageOrDatatype.language || '');
179
+ this.direction = languageOrDatatype.direction || '';
180
+ this.datatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
175
181
  } else {
176
182
  this.datatype = new NamedNode(XSD_NS + 'string');
177
183
  }
@@ -218,6 +224,38 @@ const dataFactory = {
218
224
  quad(subject, predicate, object, graph) {
219
225
  return new Quad(subject, predicate, object, graph || defaultGraphSingleton);
220
226
  },
227
+ fromTerm(original) {
228
+ if (!isRdfJsTerm(original)) throw new TypeError('Expected an RDF/JS term');
229
+
230
+ switch (original.termType) {
231
+ case 'NamedNode':
232
+ return new NamedNode(original.value);
233
+ case 'BlankNode':
234
+ return new BlankNode(original.value);
235
+ case 'Literal':
236
+ if (original.language || original.direction) {
237
+ return new Literal(original.value, { language: original.language || '', direction: original.direction || '' });
238
+ }
239
+ return new Literal(original.value, original.datatype ? dataFactory.fromTerm(original.datatype) : undefined);
240
+ case 'Variable':
241
+ return new Variable(original.value);
242
+ case 'DefaultGraph':
243
+ return defaultGraphSingleton;
244
+ case 'Quad':
245
+ return dataFactory.fromQuad(original);
246
+ default:
247
+ throw new TypeError(`Unsupported RDF/JS termType ${JSON.stringify(original.termType)}`);
248
+ }
249
+ },
250
+ fromQuad(original) {
251
+ if (!isRdfJsQuad(original)) throw new TypeError('Expected an RDF/JS Quad');
252
+ return new Quad(
253
+ dataFactory.fromTerm(original.subject),
254
+ dataFactory.fromTerm(original.predicate),
255
+ dataFactory.fromTerm(original.object),
256
+ dataFactory.fromTerm(original.graph),
257
+ );
258
+ },
221
259
  };
222
260
 
223
261
  function getDataFactory(factory) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eyeling",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "description": "A minimal Notation3 (N3) reasoner in JavaScript.",
5
5
  "main": "./index.js",
6
6
  "keywords": [
@@ -60,6 +60,9 @@
60
60
  "preversion": "npm test",
61
61
  "postversion": "git push origin HEAD --follow-tags"
62
62
  },
63
+ "dependencies": {
64
+ "@rdfjs/types": "^2.0.1"
65
+ },
63
66
  "devDependencies": {
64
67
  "eslint": "^9.0.0",
65
68
  "rdf-test-suite": "^2.1.4"