rdflib 2.2.35 → 2.2.36

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 (90) hide show
  1. package/dist/rdflib.min.js +1 -1
  2. package/dist/rdflib.min.js.LICENSE.txt +0 -2
  3. package/dist/rdflib.min.js.map +1 -1
  4. package/esm/blank-node.js +57 -82
  5. package/esm/class-order.js +1 -1
  6. package/esm/collection.js +70 -103
  7. package/esm/default-graph.js +13 -30
  8. package/esm/empty.js +8 -23
  9. package/esm/factories/canonical-data-factory.js +33 -29
  10. package/esm/factories/extended-term-factory.js +18 -13
  11. package/esm/factories/factory-types.js +1 -1
  12. package/esm/factories/rdflib-data-factory.js +9 -11
  13. package/esm/fetcher.js +1366 -1651
  14. package/esm/formula.js +631 -736
  15. package/esm/index.js +31 -48
  16. package/esm/jsonldparser.js +19 -26
  17. package/esm/jsonparser.js +1 -1
  18. package/esm/lists.js +38 -86
  19. package/esm/literal.js +120 -154
  20. package/esm/log.js +7 -7
  21. package/esm/n3parser.js +1009 -1086
  22. package/esm/named-node.js +69 -96
  23. package/esm/namespace.js +2 -4
  24. package/esm/node-internal.js +73 -96
  25. package/esm/node.js +1 -1
  26. package/esm/parse.js +3 -3
  27. package/esm/patch-parser.js +1 -1
  28. package/esm/query.js +15 -16
  29. package/esm/rdfaparser.js +775 -841
  30. package/esm/rdfxmlparser.js +348 -364
  31. package/esm/serialize.js +2 -2
  32. package/esm/serializer.js +835 -877
  33. package/esm/statement.js +52 -71
  34. package/esm/store.js +853 -957
  35. package/esm/types.js +21 -21
  36. package/esm/update-manager.js +965 -1100
  37. package/esm/updates-via.js +104 -132
  38. package/esm/uri.js +3 -3
  39. package/esm/utils/default-graph-uri.js +2 -2
  40. package/esm/utils/terms.js +4 -5
  41. package/esm/utils-js.js +5 -5
  42. package/esm/utils.js +6 -6
  43. package/esm/variable.js +32 -55
  44. package/esm/xsd.js +2 -2
  45. package/lib/blank-node.js +57 -80
  46. package/lib/class-order.js +1 -1
  47. package/lib/collection.js +70 -101
  48. package/lib/default-graph.js +14 -29
  49. package/lib/empty.js +9 -22
  50. package/lib/factories/canonical-data-factory.js +35 -31
  51. package/lib/factories/extended-term-factory.js +18 -13
  52. package/lib/factories/factory-types.js +1 -1
  53. package/lib/factories/rdflib-data-factory.js +9 -11
  54. package/lib/fetcher.js +1375 -1654
  55. package/lib/formula.js +632 -735
  56. package/lib/index.js +80 -84
  57. package/lib/jsonldparser.js +21 -32
  58. package/lib/jsonparser.js +1 -1
  59. package/lib/lists.js +47 -87
  60. package/lib/literal.js +121 -153
  61. package/lib/log.js +7 -7
  62. package/lib/n3parser.js +1012 -1090
  63. package/lib/named-node.js +70 -95
  64. package/lib/namespace.js +2 -4
  65. package/lib/node-internal.js +73 -94
  66. package/lib/node.js +1 -1
  67. package/lib/parse.js +5 -6
  68. package/lib/patch-parser.js +1 -1
  69. package/lib/query.js +20 -18
  70. package/lib/rdfaparser.js +778 -843
  71. package/lib/rdfxmlparser.js +351 -365
  72. package/lib/serialize.js +2 -2
  73. package/lib/serializer.js +840 -880
  74. package/lib/statement.js +55 -73
  75. package/lib/store.js +860 -958
  76. package/lib/types.js +21 -21
  77. package/lib/update-manager.js +970 -1102
  78. package/lib/updates-via.js +107 -132
  79. package/lib/uri.js +3 -3
  80. package/lib/utils/default-graph-uri.js +2 -2
  81. package/lib/utils/terms.js +4 -6
  82. package/lib/utils-js.js +8 -9
  83. package/lib/utils.js +6 -6
  84. package/lib/variable.js +35 -57
  85. package/lib/xsd.js +2 -2
  86. package/package.json +2 -2
  87. package/src/n3parser.js +1 -1
  88. package/src/serializer.js +1 -1
  89. package/src/update-manager.ts +2 -1
  90. package/.babelrc +0 -20
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
9
  var uriUtil = _interopRequireWildcard(require("./uri"));
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
12
  /**
16
13
  * RDF/XML PARSER
17
14
  *
@@ -69,13 +66,13 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
69
66
  * @author David Sheets <dsheets@mit.edu>
70
67
  *
71
68
  */
72
- var RDFParser = exports.default = /*#__PURE__*/function () {
69
+
70
+ class RDFParser {
73
71
  /*
74
72
  * @constructor
75
73
  * @param {RDFStore} store An RDFStore object
76
74
  */
77
- function RDFParser(store) {
78
- (0, _classCallCheck2.default)(this, RDFParser);
75
+ constructor(store) {
79
76
  /** Our triple store reference @private */
80
77
 
81
78
  this.store = store; /** Our identified blank nodes @private */
@@ -87,398 +84,387 @@ var RDFParser = exports.default = /*#__PURE__*/function () {
87
84
  /** Standard namespaces that we know how to handle @final
88
85
  * @member RDFParser
89
86
  */
90
- return (0, _createClass2.default)(RDFParser, [{
91
- key: "frameFactory",
92
- value:
93
- /**
94
- * Frame class for namespace and base URI lookups
95
- * Base lookups will always resolve because the parser knows
96
- * the default base.
97
- *
98
- * @private
99
- */
100
87
 
101
- function frameFactory(parser, parent, element) {
102
- return {
103
- 'NODE': 1,
104
- 'ARC': 2,
105
- 'parent': parent,
106
- 'parser': parser,
107
- 'store': parser.store,
108
- 'element': element,
109
- 'lastChild': 0,
110
- 'base': null,
111
- 'lang': null,
112
- 'node': null,
113
- 'nodeType': null,
114
- 'listIndex': 1,
115
- 'rdfid': null,
116
- 'datatype': null,
117
- 'collection': false,
118
- /** Terminate the frame and notify the store that we're done */
119
- 'terminateFrame': function terminateFrame() {
120
- if (this.collection) {
121
- this.node.close();
122
- }
123
- },
124
- /** Add a symbol of a certain type to the this frame */'addSymbol': function addSymbol(type, uri) {
125
- uri = uriUtil.join(uri, this.base);
126
- this.node = this.store.sym(uri);
127
- this.nodeType = type;
128
- },
129
- /** Load any constructed triples into the store */'loadTriple': function loadTriple() {
130
- if (this.parent.parent.collection) {
131
- this.parent.parent.node.append(this.node);
132
- } else {
133
- this.store.add(this.parent.parent.node, this.parent.node, this.node, this.parser.why);
134
- }
135
- if (this.parent.rdfid != null) {
136
- // reify
137
- var triple = this.store.sym(uriUtil.join('#' + this.parent.rdfid, this.base));
138
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(RDFParser.ns.RDF + 'Statement'), this.parser.why);
139
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'subject'), this.parent.parent.node, this.parser.why);
140
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'predicate'), this.parent.node, this.parser.why);
141
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'object'), this.node, this.parser.why);
142
- }
143
- },
144
- /** Check if it's OK to load a triple */'isTripleToLoad': function isTripleToLoad() {
145
- return this.parent != null && this.parent.parent != null && this.nodeType === this.NODE && this.parent.nodeType === this.ARC && this.parent.parent.nodeType === this.NODE;
146
- },
147
- /** Add a symbolic node to this frame */'addNode': function addNode(uri) {
148
- this.addSymbol(this.NODE, uri);
149
- if (this.isTripleToLoad()) {
150
- this.loadTriple();
151
- }
152
- },
153
- /** Add a collection node to this frame */'addCollection': function addCollection() {
154
- this.nodeType = this.NODE;
155
- this.node = this.store.collection();
156
- this.collection = true;
157
- if (this.isTripleToLoad()) {
158
- this.loadTriple();
159
- }
160
- },
161
- /** Add a collection arc to this frame */'addCollectionArc': function addCollectionArc() {
162
- this.nodeType = this.ARC;
163
- },
164
- /** Add a bnode to this frame */'addBNode': function addBNode(id) {
165
- if (id != null) {
166
- if (this.parser.bnodes[id] != null) {
167
- this.node = this.parser.bnodes[id];
168
- } else {
169
- this.node = this.parser.bnodes[id] = this.store.bnode();
170
- }
171
- } else {
172
- this.node = this.store.bnode();
173
- }
174
- this.nodeType = this.NODE;
175
- if (this.isTripleToLoad()) {
176
- this.loadTriple();
177
- }
178
- },
179
- /** Add an arc or property to this frame */'addArc': function addArc(uri) {
180
- if (uri === RDFParser.ns.RDF + 'li') {
181
- uri = RDFParser.ns.RDF + '_' + this.parent.listIndex;
182
- this.parent.listIndex++;
183
- }
184
- this.addSymbol(this.ARC, uri);
185
- },
186
- /** Add a literal to this frame */'addLiteral': function addLiteral(value) {
187
- if (this.parent.datatype && this.parent.datatype !== RDFParser.ns.RDF + 'langString') {
188
- this.node = this.store.literal(value, this.store.sym(this.parent.datatype));
88
+ /**
89
+ * Frame class for namespace and base URI lookups
90
+ * Base lookups will always resolve because the parser knows
91
+ * the default base.
92
+ *
93
+ * @private
94
+ */
95
+
96
+ frameFactory(parser, parent, element) {
97
+ return {
98
+ 'NODE': 1,
99
+ 'ARC': 2,
100
+ 'parent': parent,
101
+ 'parser': parser,
102
+ 'store': parser.store,
103
+ 'element': element,
104
+ 'lastChild': 0,
105
+ 'base': null,
106
+ 'lang': null,
107
+ 'node': null,
108
+ 'nodeType': null,
109
+ 'listIndex': 1,
110
+ 'rdfid': null,
111
+ 'datatype': null,
112
+ 'collection': false,
113
+ /** Terminate the frame and notify the store that we're done */
114
+ 'terminateFrame': function () {
115
+ if (this.collection) {
116
+ this.node.close();
117
+ }
118
+ },
119
+ /** Add a symbol of a certain type to the this frame */'addSymbol': function (type, uri) {
120
+ uri = uriUtil.join(uri, this.base);
121
+ this.node = this.store.sym(uri);
122
+ this.nodeType = type;
123
+ },
124
+ /** Load any constructed triples into the store */'loadTriple': function () {
125
+ if (this.parent.parent.collection) {
126
+ this.parent.parent.node.append(this.node);
127
+ } else {
128
+ this.store.add(this.parent.parent.node, this.parent.node, this.node, this.parser.why);
129
+ }
130
+ if (this.parent.rdfid != null) {
131
+ // reify
132
+ var triple = this.store.sym(uriUtil.join('#' + this.parent.rdfid, this.base));
133
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(RDFParser.ns.RDF + 'Statement'), this.parser.why);
134
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'subject'), this.parent.parent.node, this.parser.why);
135
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'predicate'), this.parent.node, this.parser.why);
136
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'object'), this.node, this.parser.why);
137
+ }
138
+ },
139
+ /** Check if it's OK to load a triple */'isTripleToLoad': function () {
140
+ return this.parent != null && this.parent.parent != null && this.nodeType === this.NODE && this.parent.nodeType === this.ARC && this.parent.parent.nodeType === this.NODE;
141
+ },
142
+ /** Add a symbolic node to this frame */'addNode': function (uri) {
143
+ this.addSymbol(this.NODE, uri);
144
+ if (this.isTripleToLoad()) {
145
+ this.loadTriple();
146
+ }
147
+ },
148
+ /** Add a collection node to this frame */'addCollection': function () {
149
+ this.nodeType = this.NODE;
150
+ this.node = this.store.collection();
151
+ this.collection = true;
152
+ if (this.isTripleToLoad()) {
153
+ this.loadTriple();
154
+ }
155
+ },
156
+ /** Add a collection arc to this frame */'addCollectionArc': function () {
157
+ this.nodeType = this.ARC;
158
+ },
159
+ /** Add a bnode to this frame */'addBNode': function (id) {
160
+ if (id != null) {
161
+ if (this.parser.bnodes[id] != null) {
162
+ this.node = this.parser.bnodes[id];
189
163
  } else {
190
- this.node = this.store.literal(value, this.lang);
191
- }
192
- this.nodeType = this.NODE;
193
- if (this.isTripleToLoad()) {
194
- this.loadTriple();
164
+ this.node = this.parser.bnodes[id] = this.store.bnode();
195
165
  }
166
+ } else {
167
+ this.node = this.store.bnode();
196
168
  }
197
- };
198
- }
199
-
200
- // from the OpenLayers source .. needed to get around IE problems.
201
- }, {
202
- key: "getAttributeNodeNS",
203
- value: function getAttributeNodeNS(node, uri, name) {
204
- var attributeNode = null;
205
- if (node.getAttributeNodeNS) {
206
- attributeNode = node.getAttributeNodeNS(uri, name);
207
- } else {
208
- var attributes = node.attributes;
209
- var potentialNode, fullName;
210
- for (var i = 0; i < attributes.length; ++i) {
211
- potentialNode = attributes[i];
212
- if (potentialNode.namespaceURI === uri) {
213
- fullName = potentialNode.prefix ? potentialNode.prefix + ':' + name : name;
214
- if (fullName === potentialNode.nodeName) {
215
- attributeNode = potentialNode;
216
- break;
217
- }
218
- }
169
+ this.nodeType = this.NODE;
170
+ if (this.isTripleToLoad()) {
171
+ this.loadTriple();
172
+ }
173
+ },
174
+ /** Add an arc or property to this frame */'addArc': function (uri) {
175
+ if (uri === RDFParser.ns.RDF + 'li') {
176
+ uri = RDFParser.ns.RDF + '_' + this.parent.listIndex;
177
+ this.parent.listIndex++;
178
+ }
179
+ this.addSymbol(this.ARC, uri);
180
+ },
181
+ /** Add a literal to this frame */'addLiteral': function (value) {
182
+ if (this.parent.datatype && this.parent.datatype !== RDFParser.ns.RDF + 'langString') {
183
+ this.node = this.store.literal(value, this.store.sym(this.parent.datatype));
184
+ } else {
185
+ this.node = this.store.literal(value, this.lang);
186
+ }
187
+ this.nodeType = this.NODE;
188
+ if (this.isTripleToLoad()) {
189
+ this.loadTriple();
219
190
  }
220
191
  }
221
- return attributeNode;
222
- }
192
+ };
193
+ }
223
194
 
224
- /**
225
- * Build our initial scope frame and parse the DOM into triples
226
- * @param {HTMLDocument} document The DOM to parse
227
- * @param {String} base The base URL to use
228
- * @param {Object} why The context to which this resource belongs
229
- */
230
- }, {
231
- key: "parse",
232
- value: function parse(document, base, why) {
233
- var children = document.childNodes; // clean up for the next run
234
- this.cleanParser(); // figure out the root element
235
- var root;
236
- if (document.nodeType === RDFParser.nodeType.DOCUMENT) {
237
- for (var c = 0; c < children.length; c++) {
238
- if (children[c].nodeType === RDFParser.nodeType.ELEMENT) {
239
- root = children[c];
195
+ // from the OpenLayers source .. needed to get around IE problems.
196
+ getAttributeNodeNS(node, uri, name) {
197
+ var attributeNode = null;
198
+ if (node.getAttributeNodeNS) {
199
+ attributeNode = node.getAttributeNodeNS(uri, name);
200
+ } else {
201
+ var attributes = node.attributes;
202
+ var potentialNode, fullName;
203
+ for (var i = 0; i < attributes.length; ++i) {
204
+ potentialNode = attributes[i];
205
+ if (potentialNode.namespaceURI === uri) {
206
+ fullName = potentialNode.prefix ? potentialNode.prefix + ':' + name : name;
207
+ if (fullName === potentialNode.nodeName) {
208
+ attributeNode = potentialNode;
240
209
  break;
241
210
  }
242
211
  }
243
- } else if (document.nodeType === RDFParser.nodeType.ELEMENT) {
244
- root = document;
245
- } else {
246
- throw new Error("RDFParser: can't find root in " + base + '. Halting. ');
247
- // return false
248
212
  }
249
- this.why = why; // our topmost frame
250
- var f = this.frameFactory(this);
251
- this.base = base;
252
- f.base = base;
253
- f.lang = null; // was '' but can't have langs like that 2015 (!)
254
- this.parseDOM(this.buildFrame(f, root));
255
- return true;
256
213
  }
257
- }, {
258
- key: "parseDOM",
259
- value: function parseDOM(frame) {
260
- // a DOM utility function used in parsing
261
- var rdfid;
262
- var elementURI = function (el) {
263
- var result = '';
264
- if (el.namespaceURI == null) {
265
- throw new Error('RDF/XML syntax error: No namespace for ' + el.localName + ' in ' + this.base);
214
+ return attributeNode;
215
+ }
216
+
217
+ /**
218
+ * Build our initial scope frame and parse the DOM into triples
219
+ * @param {HTMLDocument} document The DOM to parse
220
+ * @param {String} base The base URL to use
221
+ * @param {Object} why The context to which this resource belongs
222
+ */
223
+
224
+ parse(document, base, why) {
225
+ var children = document.childNodes; // clean up for the next run
226
+ this.cleanParser(); // figure out the root element
227
+ var root;
228
+ if (document.nodeType === RDFParser.nodeType.DOCUMENT) {
229
+ for (var c = 0; c < children.length; c++) {
230
+ if (children[c].nodeType === RDFParser.nodeType.ELEMENT) {
231
+ root = children[c];
232
+ break;
266
233
  }
267
- if (el.namespaceURI) {
268
- result = result + el.namespaceURI;
234
+ }
235
+ } else if (document.nodeType === RDFParser.nodeType.ELEMENT) {
236
+ root = document;
237
+ } else {
238
+ throw new Error("RDFParser: can't find root in " + base + '. Halting. ');
239
+ // return false
240
+ }
241
+ this.why = why; // our topmost frame
242
+ var f = this.frameFactory(this);
243
+ this.base = base;
244
+ f.base = base;
245
+ f.lang = null; // was '' but can't have langs like that 2015 (!)
246
+ this.parseDOM(this.buildFrame(f, root));
247
+ return true;
248
+ }
249
+ parseDOM(frame) {
250
+ // a DOM utility function used in parsing
251
+ var rdfid;
252
+ var elementURI = function (el) {
253
+ var result = '';
254
+ if (el.namespaceURI == null) {
255
+ throw new Error('RDF/XML syntax error: No namespace for ' + el.localName + ' in ' + this.base);
256
+ }
257
+ if (el.namespaceURI) {
258
+ result = result + el.namespaceURI;
259
+ }
260
+ if (el.localName) {
261
+ result = result + el.localName;
262
+ } else if (el.nodeName) {
263
+ if (el.nodeName.indexOf(':') >= 0) result = result + el.nodeName.split(':')[1];else result = result + el.nodeName;
264
+ }
265
+ return result;
266
+ }.bind(this);
267
+ var dig = true; // if we'll dig down in the tree on the next iter
268
+ while (frame.parent) {
269
+ var dom = frame.element;
270
+ var attrs = dom.attributes;
271
+ if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {
272
+ // we have a literal
273
+ if (frame.parent.nodeType === frame.NODE) {
274
+ // must have had attributes, store as rdf:value
275
+ frame.addArc(RDFParser.ns.RDF + 'value');
276
+ frame = this.buildFrame(frame);
269
277
  }
270
- if (el.localName) {
271
- result = result + el.localName;
272
- } else if (el.nodeName) {
273
- if (el.nodeName.indexOf(':') >= 0) result = result + el.nodeName.split(':')[1];else result = result + el.nodeName;
278
+ frame.addLiteral(dom.nodeValue);
279
+ } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {
280
+ // not root
281
+ if (frame.parent && frame.parent.collection) {
282
+ // we're a collection element
283
+ frame.addCollectionArc();
284
+ frame = this.buildFrame(frame, frame.element);
285
+ frame.parent.element = null;
274
286
  }
275
- return result;
276
- }.bind(this);
277
- var dig = true; // if we'll dig down in the tree on the next iter
278
- while (frame.parent) {
279
- var dom = frame.element;
280
- var attrs = dom.attributes;
281
- if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {
282
- // we have a literal
283
- if (frame.parent.nodeType === frame.NODE) {
284
- // must have had attributes, store as rdf:value
285
- frame.addArc(RDFParser.ns.RDF + 'value');
286
- frame = this.buildFrame(frame);
287
+ if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {
288
+ // we need a node
289
+ var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about');
290
+ rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
291
+ if (about && rdfid) {
292
+ throw new Error('RDFParser: ' + dom.nodeName + ' has both rdf:id and rdf:about.' + ' Halting. Only one of these' + ' properties may be specified on a' + ' node.');
287
293
  }
288
- frame.addLiteral(dom.nodeValue);
289
- } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {
290
- // not root
291
- if (frame.parent && frame.parent.collection) {
292
- // we're a collection element
293
- frame.addCollectionArc();
294
- frame = this.buildFrame(frame, frame.element);
295
- frame.parent.element = null;
296
- }
297
- if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {
298
- // we need a node
299
- var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about');
300
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
301
- if (about && rdfid) {
302
- throw new Error('RDFParser: ' + dom.nodeName + ' has both rdf:id and rdf:about.' + ' Halting. Only one of these' + ' properties may be specified on a' + ' node.');
303
- }
304
- if (!about && rdfid) {
305
- frame.addNode('#' + rdfid.nodeValue);
306
- dom.removeAttributeNode(rdfid);
307
- } else if (about == null && rdfid == null) {
308
- var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
309
- if (bnid) {
310
- frame.addBNode(bnid.nodeValue);
311
- dom.removeAttributeNode(bnid);
312
- } else {
313
- frame.addBNode();
314
- }
294
+ if (!about && rdfid) {
295
+ frame.addNode('#' + rdfid.nodeValue);
296
+ dom.removeAttributeNode(rdfid);
297
+ } else if (about == null && rdfid == null) {
298
+ var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
299
+ if (bnid) {
300
+ frame.addBNode(bnid.nodeValue);
301
+ dom.removeAttributeNode(bnid);
315
302
  } else {
316
- frame.addNode(about.nodeValue);
317
- dom.removeAttributeNode(about);
318
- }
319
- // Typed nodes
320
- var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type');
321
- if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {
322
- rdftype = {
323
- 'nodeValue': elementURI(dom)
324
- };
325
- }
326
- if (rdftype != null) {
327
- this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue, frame.base)), this.why);
328
- if (rdftype.nodeName) {
329
- dom.removeAttributeNode(rdftype);
330
- }
331
- }
332
- // Property Attributes
333
- for (var x = attrs.length - 1; x >= 0; x--) {
334
- this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue, frame.lang), this.why);
303
+ frame.addBNode();
335
304
  }
336
305
  } else {
337
- // we should add an arc (or implicit bnode+arc)
338
- frame.addArc(elementURI(dom)); // save the arc's rdf:ID if it has one
339
- if (this.reify) {
340
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
341
- if (rdfid) {
342
- frame.rdfid = rdfid.nodeValue;
343
- dom.removeAttributeNode(rdfid);
344
- }
306
+ frame.addNode(about.nodeValue);
307
+ dom.removeAttributeNode(about);
308
+ }
309
+ // Typed nodes
310
+ var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type');
311
+ if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {
312
+ rdftype = {
313
+ 'nodeValue': elementURI(dom)
314
+ };
315
+ }
316
+ if (rdftype != null) {
317
+ this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue, frame.base)), this.why);
318
+ if (rdftype.nodeName) {
319
+ dom.removeAttributeNode(rdftype);
320
+ }
321
+ }
322
+ // Property Attributes
323
+ for (var x = attrs.length - 1; x >= 0; x--) {
324
+ this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue, frame.lang), this.why);
325
+ }
326
+ } else {
327
+ // we should add an arc (or implicit bnode+arc)
328
+ frame.addArc(elementURI(dom)); // save the arc's rdf:ID if it has one
329
+ if (this.reify) {
330
+ rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
331
+ if (rdfid) {
332
+ frame.rdfid = rdfid.nodeValue;
333
+ dom.removeAttributeNode(rdfid);
345
334
  }
346
- var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType');
347
- var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype');
348
- if (datatype) {
349
- frame.datatype = datatype.nodeValue;
350
- dom.removeAttributeNode(datatype);
335
+ }
336
+ var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType');
337
+ var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype');
338
+ if (datatype) {
339
+ frame.datatype = datatype.nodeValue;
340
+ dom.removeAttributeNode(datatype);
341
+ }
342
+ if (parsetype) {
343
+ var nv = parsetype.nodeValue;
344
+ if (nv === 'Literal') {
345
+ frame.datatype = RDFParser.ns.RDF + 'XMLLiteral';
346
+ frame = this.buildFrame(frame);
347
+ // Don't include the literal node, only its children
348
+ // see https://github.com/linkeddata/rdflib.js/issues/75
349
+ frame.addLiteral(dom.innerHTML || dom.childNodes);
350
+ dig = false;
351
+ } else if (nv === 'Resource') {
352
+ frame = this.buildFrame(frame, frame.element);
353
+ frame.parent.element = null;
354
+ frame.addBNode();
355
+ } else if (nv === 'Collection') {
356
+ frame = this.buildFrame(frame, frame.element);
357
+ frame.parent.element = null;
358
+ frame.addCollection();
351
359
  }
352
- if (parsetype) {
353
- var nv = parsetype.nodeValue;
354
- if (nv === 'Literal') {
355
- frame.datatype = RDFParser.ns.RDF + 'XMLLiteral';
356
- frame = this.buildFrame(frame);
357
- // Don't include the literal node, only its children
358
- // see https://github.com/linkeddata/rdflib.js/issues/75
359
- frame.addLiteral(dom.innerHTML || dom.childNodes);
360
- dig = false;
361
- } else if (nv === 'Resource') {
362
- frame = this.buildFrame(frame, frame.element);
363
- frame.parent.element = null;
360
+ dom.removeAttributeNode(parsetype);
361
+ }
362
+ if (attrs.length !== 0) {
363
+ var resource = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'resource');
364
+ var bnid2 = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
365
+ frame = this.buildFrame(frame);
366
+ if (resource) {
367
+ frame.addNode(resource.nodeValue);
368
+ dom.removeAttributeNode(resource);
369
+ } else {
370
+ if (bnid2) {
371
+ frame.addBNode(bnid2.nodeValue);
372
+ dom.removeAttributeNode(bnid2);
373
+ } else {
364
374
  frame.addBNode();
365
- } else if (nv === 'Collection') {
366
- frame = this.buildFrame(frame, frame.element);
367
- frame.parent.element = null;
368
- frame.addCollection();
369
375
  }
370
- dom.removeAttributeNode(parsetype);
371
376
  }
372
- if (attrs.length !== 0) {
373
- var resource = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'resource');
374
- var bnid2 = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
375
- frame = this.buildFrame(frame);
376
- if (resource) {
377
- frame.addNode(resource.nodeValue);
378
- dom.removeAttributeNode(resource);
377
+ for (var x1 = attrs.length - 1; x1 >= 0; x1--) {
378
+ var f = this.buildFrame(frame);
379
+ f.addArc(elementURI(attrs[x1]));
380
+ if (elementURI(attrs[x1]) === RDFParser.ns.RDF + 'type') {
381
+ this.buildFrame(f).addNode(attrs[x1].nodeValue);
379
382
  } else {
380
- if (bnid2) {
381
- frame.addBNode(bnid2.nodeValue);
382
- dom.removeAttributeNode(bnid2);
383
- } else {
384
- frame.addBNode();
385
- }
383
+ this.buildFrame(f).addLiteral(attrs[x1].nodeValue);
386
384
  }
387
- for (var x1 = attrs.length - 1; x1 >= 0; x1--) {
388
- var f = this.buildFrame(frame);
389
- f.addArc(elementURI(attrs[x1]));
390
- if (elementURI(attrs[x1]) === RDFParser.ns.RDF + 'type') {
391
- this.buildFrame(f).addNode(attrs[x1].nodeValue);
392
- } else {
393
- this.buildFrame(f).addLiteral(attrs[x1].nodeValue);
394
- }
395
- }
396
- } else if (dom.childNodes.length === 0) {
397
- this.buildFrame(frame).addLiteral('');
398
385
  }
386
+ } else if (dom.childNodes.length === 0) {
387
+ this.buildFrame(frame).addLiteral('');
399
388
  }
400
- } // rdf:RDF
401
- // dig dug
402
- dom = frame.element;
403
- while (frame.parent) {
404
- var pframe = frame;
405
- while (dom == null) {
406
- frame = frame.parent;
407
- dom = frame.element;
408
- }
409
- var candidate = dom.childNodes && dom.childNodes[frame.lastChild];
410
- if (!candidate || !dig) {
411
- frame.terminateFrame();
412
- if (!(frame = frame.parent)) {
413
- break;
414
- } // done
415
- dom = frame.element;
416
- dig = true;
417
- } else if (candidate.nodeType !== RDFParser.nodeType.ELEMENT && candidate.nodeType !== RDFParser.nodeType.TEXT && candidate.nodeType !== RDFParser.nodeType.CDATA_SECTION || (candidate.nodeType === RDFParser.nodeType.TEXT || candidate.nodeType === RDFParser.nodeType.CDATA_SECTION) && dom.childNodes.length !== 1) {
418
- frame.lastChild++;
419
- } else {
420
- // not a leaf
421
- frame.lastChild++;
422
- frame = this.buildFrame(pframe, dom.childNodes[frame.lastChild - 1]);
389
+ }
390
+ } // rdf:RDF
391
+ // dig dug
392
+ dom = frame.element;
393
+ while (frame.parent) {
394
+ var pframe = frame;
395
+ while (dom == null) {
396
+ frame = frame.parent;
397
+ dom = frame.element;
398
+ }
399
+ var candidate = dom.childNodes && dom.childNodes[frame.lastChild];
400
+ if (!candidate || !dig) {
401
+ frame.terminateFrame();
402
+ if (!(frame = frame.parent)) {
423
403
  break;
424
- }
404
+ } // done
405
+ dom = frame.element;
406
+ dig = true;
407
+ } else if (candidate.nodeType !== RDFParser.nodeType.ELEMENT && candidate.nodeType !== RDFParser.nodeType.TEXT && candidate.nodeType !== RDFParser.nodeType.CDATA_SECTION || (candidate.nodeType === RDFParser.nodeType.TEXT || candidate.nodeType === RDFParser.nodeType.CDATA_SECTION) && dom.childNodes.length !== 1) {
408
+ frame.lastChild++;
409
+ } else {
410
+ // not a leaf
411
+ frame.lastChild++;
412
+ frame = this.buildFrame(pframe, dom.childNodes[frame.lastChild - 1]);
413
+ break;
425
414
  }
426
- } // while
427
- }
415
+ }
416
+ } // while
417
+ }
428
418
 
429
- /**
430
- * Cleans out state from a previous parse run
431
- * @private
432
- */
433
- }, {
434
- key: "cleanParser",
435
- value: function cleanParser() {
436
- this.bnodes = {};
437
- this.why = null;
438
- }
419
+ /**
420
+ * Cleans out state from a previous parse run
421
+ * @private
422
+ */
423
+ cleanParser() {
424
+ this.bnodes = {};
425
+ this.why = null;
426
+ }
439
427
 
440
- /**
441
- * Builds scope frame
442
- * @private
443
- */
444
- }, {
445
- key: "buildFrame",
446
- value: function buildFrame(parent, element) {
447
- var frame = this.frameFactory(this, parent, element);
448
- if (parent) {
449
- frame.base = parent.base;
450
- frame.lang = parent.lang;
451
- }
452
- if (!element || element.nodeType === RDFParser.nodeType.TEXT || element.nodeType === RDFParser.nodeType.CDATA_SECTION) {
453
- return frame;
454
- }
455
- var attrs = element.attributes;
456
- var base = element.getAttributeNode('xml:base');
457
- if (base != null) {
458
- frame.base = base.nodeValue;
459
- element.removeAttribute('xml:base');
460
- }
461
- var lang = element.getAttributeNode('xml:lang');
462
- if (lang != null) {
463
- frame.lang = lang.nodeValue;
464
- element.removeAttribute('xml:lang');
465
- }
466
- // remove all extraneous xml and xmlns attributes
467
- for (var x = attrs.length - 1; x >= 0; x--) {
468
- if (attrs[x].nodeName.substr(0, 3) === 'xml') {
469
- if (attrs[x].name.slice(0, 6) === 'xmlns:') {
470
- var uri = attrs[x].nodeValue; // alert('base for namespac attr:'+this.base)
471
- if (this.base) uri = uriUtil.join(uri, this.base);
472
- this.store.setPrefixForURI(attrs[x].name.slice(6), uri);
473
- }
474
- // alert('rdfparser: xml atribute: '+attrs[x].name) //@@
475
- element.removeAttributeNode(attrs[x]);
428
+ /**
429
+ * Builds scope frame
430
+ * @private
431
+ */
432
+ buildFrame(parent, element) {
433
+ var frame = this.frameFactory(this, parent, element);
434
+ if (parent) {
435
+ frame.base = parent.base;
436
+ frame.lang = parent.lang;
437
+ }
438
+ if (!element || element.nodeType === RDFParser.nodeType.TEXT || element.nodeType === RDFParser.nodeType.CDATA_SECTION) {
439
+ return frame;
440
+ }
441
+ var attrs = element.attributes;
442
+ var base = element.getAttributeNode('xml:base');
443
+ if (base != null) {
444
+ frame.base = base.nodeValue;
445
+ element.removeAttribute('xml:base');
446
+ }
447
+ var lang = element.getAttributeNode('xml:lang');
448
+ if (lang != null) {
449
+ frame.lang = lang.nodeValue;
450
+ element.removeAttribute('xml:lang');
451
+ }
452
+ // remove all extraneous xml and xmlns attributes
453
+ for (var x = attrs.length - 1; x >= 0; x--) {
454
+ if (attrs[x].nodeName.substr(0, 3) === 'xml') {
455
+ if (attrs[x].name.slice(0, 6) === 'xmlns:') {
456
+ var uri = attrs[x].nodeValue; // alert('base for namespac attr:'+this.base)
457
+ if (this.base) uri = uriUtil.join(uri, this.base);
458
+ this.store.setPrefixForURI(attrs[x].name.slice(6), uri);
476
459
  }
460
+ // alert('rdfparser: xml atribute: '+attrs[x].name) //@@
461
+ element.removeAttributeNode(attrs[x]);
477
462
  }
478
- return frame;
479
463
  }
480
- }]);
481
- }();
464
+ return frame;
465
+ }
466
+ }
467
+ exports.default = RDFParser;
482
468
  (0, _defineProperty2.default)(RDFParser, "ns", {
483
469
  'RDF': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
484
470
  'RDFS': 'http://www.w3.org/2000/01/rdf-schema#'