rdflib 2.2.34 → 2.2.35-2bb9ed0b

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 (100) hide show
  1. package/dist/515.rdflib.min.js +3 -0
  2. package/dist/515.rdflib.min.js.map +1 -0
  3. package/dist/789.rdflib.min.js +1 -0
  4. package/dist/rdflib.min.js +1 -1
  5. package/dist/rdflib.min.js.LICENSE.txt +0 -2
  6. package/dist/rdflib.min.js.map +1 -1
  7. package/esm/blank-node.js +57 -85
  8. package/esm/class-order.js +1 -1
  9. package/esm/collection.js +70 -106
  10. package/esm/default-graph.js +13 -33
  11. package/esm/empty.js +8 -26
  12. package/esm/factories/canonical-data-factory.js +33 -30
  13. package/esm/factories/extended-term-factory.js +18 -14
  14. package/esm/factories/factory-types.js +1 -1
  15. package/esm/factories/rdflib-data-factory.js +9 -11
  16. package/esm/fetcher.js +1364 -1668
  17. package/esm/formula.js +631 -739
  18. package/esm/index.js +31 -51
  19. package/esm/jsonldparser.js +19 -26
  20. package/esm/jsonparser.js +1 -1
  21. package/esm/lists.js +41 -86
  22. package/esm/literal.js +120 -157
  23. package/esm/log.js +7 -7
  24. package/esm/n3parser.js +1008 -1090
  25. package/esm/named-node.js +69 -99
  26. package/esm/namespace.js +2 -4
  27. package/esm/node-internal.js +73 -97
  28. package/esm/node.js +1 -2
  29. package/esm/parse.js +3 -3
  30. package/esm/patch-parser.js +1 -2
  31. package/esm/query.js +15 -30
  32. package/esm/rdfaparser.js +775 -846
  33. package/esm/rdfxmlparser.js +348 -365
  34. package/esm/serialize.js +2 -3
  35. package/esm/serializer.js +834 -889
  36. package/esm/sparql-to-query.js +0 -2
  37. package/esm/statement.js +52 -72
  38. package/esm/store.js +852 -963
  39. package/esm/types.js +26 -21
  40. package/esm/update-manager.js +963 -1104
  41. package/esm/updates-via.js +104 -134
  42. package/esm/uri.js +3 -3
  43. package/esm/utils/default-graph-uri.js +2 -2
  44. package/esm/utils/terms.js +4 -5
  45. package/esm/utils-js.js +5 -6
  46. package/esm/utils.js +7 -6
  47. package/esm/variable.js +32 -58
  48. package/esm/xsd.js +2 -2
  49. package/lib/blank-node.js +56 -83
  50. package/lib/class-order.js +2 -3
  51. package/lib/collection.js +69 -104
  52. package/lib/default-graph.js +13 -32
  53. package/lib/empty.js +8 -25
  54. package/lib/factories/canonical-data-factory.js +36 -34
  55. package/lib/factories/extended-term-factory.js +19 -16
  56. package/lib/factories/factory-types.js +2 -3
  57. package/lib/factories/rdflib-data-factory.js +10 -13
  58. package/lib/fetcher.js +1394 -1693
  59. package/lib/formula.js +631 -738
  60. package/lib/index.js +66 -89
  61. package/lib/jsonldparser.js +21 -32
  62. package/lib/jsonparser.js +3 -4
  63. package/lib/lists.js +47 -87
  64. package/lib/literal.js +120 -156
  65. package/lib/log.js +8 -9
  66. package/lib/n3parser.js +1011 -1096
  67. package/lib/named-node.js +69 -98
  68. package/lib/namespace.js +2 -4
  69. package/lib/node-internal.js +72 -95
  70. package/lib/node.js +2 -4
  71. package/lib/parse.js +5 -6
  72. package/lib/patch-parser.js +1 -2
  73. package/lib/query.js +19 -32
  74. package/lib/rdfaparser.js +777 -849
  75. package/lib/rdfxmlparser.js +350 -366
  76. package/lib/serialize.js +2 -3
  77. package/lib/serializer.js +838 -892
  78. package/lib/sparql-to-query.js +0 -2
  79. package/lib/statement.js +54 -74
  80. package/lib/store.js +873 -978
  81. package/lib/types.js +22 -43
  82. package/lib/update-manager.js +972 -1111
  83. package/lib/updates-via.js +105 -134
  84. package/lib/uri.js +3 -3
  85. package/lib/utils/default-graph-uri.js +2 -4
  86. package/lib/utils/terms.js +4 -6
  87. package/lib/utils-js.js +11 -13
  88. package/lib/utils.js +6 -7
  89. package/lib/variable.js +34 -60
  90. package/lib/xsd-internal.js +2 -3
  91. package/lib/xsd.js +3 -4
  92. package/package.json +31 -31
  93. package/src/n3parser.js +1 -1
  94. package/src/rdfxmlparser.js +2 -1
  95. package/src/serializer.js +1 -1
  96. package/.babelrc +0 -20
  97. package/dist/670.rdflib.min.js +0 -1
  98. package/dist/730.rdflib.min.js +0 -3
  99. package/dist/730.rdflib.min.js.map +0 -1
  100. /package/dist/{730.rdflib.min.js.LICENSE.txt → 515.rdflib.min.js.LICENSE.txt} +0 -0
@@ -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(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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(obj, nodeInterop) { if (!nodeInterop && obj &&
69
66
  * @author David Sheets <dsheets@mit.edu>
70
67
  *
71
68
  */
72
- var RDFParser = /*#__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,399 +84,386 @@ var RDFParser = /*#__PURE__*/function () {
87
84
  /** Standard namespaces that we know how to handle @final
88
85
  * @member RDFParser
89
86
  */
90
- (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
-
250
- this.why = why; // our topmost frame
251
- var f = this.frameFactory(this);
252
- this.base = base;
253
- f.base = base;
254
- f.lang = null; // was '' but can't have langs like that 2015 (!)
255
- this.parseDOM(this.buildFrame(f, root));
256
- return true;
257
213
  }
258
- }, {
259
- key: "parseDOM",
260
- value: function parseDOM(frame) {
261
- // a DOM utility function used in parsing
262
- var rdfid;
263
- var elementURI = function (el) {
264
- var result = '';
265
- if (el.namespaceURI == null) {
266
- 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;
267
233
  }
268
- if (el.namespaceURI) {
269
- 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);
270
277
  }
271
- if (el.localName) {
272
- result = result + el.localName;
273
- } else if (el.nodeName) {
274
- 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;
275
286
  }
276
- return result;
277
- }.bind(this);
278
- var dig = true; // if we'll dig down in the tree on the next iter
279
- while (frame.parent) {
280
- var dom = frame.element;
281
- var attrs = dom.attributes;
282
- if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {
283
- // we have a literal
284
- if (frame.parent.nodeType === frame.NODE) {
285
- // must have had attributes, store as rdf:value
286
- frame.addArc(RDFParser.ns.RDF + 'value');
287
- frame = this.buildFrame(frame);
288
- }
289
- frame.addLiteral(dom.nodeValue);
290
- } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {
291
- // not root
292
- if (frame.parent && frame.parent.collection) {
293
- // we're a collection element
294
- frame.addCollectionArc();
295
- frame = this.buildFrame(frame, frame.element);
296
- frame.parent.element = null;
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.');
297
293
  }
298
- if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {
299
- // we need a node
300
- var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about');
301
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
302
- if (about && rdfid) {
303
- 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.');
304
- }
305
- if (!about && rdfid) {
306
- frame.addNode('#' + rdfid.nodeValue);
307
- dom.removeAttributeNode(rdfid);
308
- } else if (about == null && rdfid == null) {
309
- var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
310
- if (bnid) {
311
- frame.addBNode(bnid.nodeValue);
312
- dom.removeAttributeNode(bnid);
313
- } else {
314
- frame.addBNode();
315
- }
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);
316
302
  } else {
317
- frame.addNode(about.nodeValue);
318
- dom.removeAttributeNode(about);
319
- }
320
- // Typed nodes
321
- var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type');
322
- if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {
323
- rdftype = {
324
- 'nodeValue': elementURI(dom)
325
- };
326
- }
327
- if (rdftype != null) {
328
- this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue, frame.base)), this.why);
329
- if (rdftype.nodeName) {
330
- dom.removeAttributeNode(rdftype);
331
- }
332
- }
333
- // Property Attributes
334
- for (var x = attrs.length - 1; x >= 0; x--) {
335
- this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue, frame.lang), this.why);
303
+ frame.addBNode();
336
304
  }
337
305
  } else {
338
- // we should add an arc (or implicit bnode+arc)
339
- frame.addArc(elementURI(dom)); // save the arc's rdf:ID if it has one
340
- if (this.reify) {
341
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
342
- if (rdfid) {
343
- frame.rdfid = rdfid.nodeValue;
344
- dom.removeAttributeNode(rdfid);
345
- }
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);
346
334
  }
347
- var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType');
348
- var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype');
349
- if (datatype) {
350
- frame.datatype = datatype.nodeValue;
351
- 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();
352
359
  }
353
- if (parsetype) {
354
- var nv = parsetype.nodeValue;
355
- if (nv === 'Literal') {
356
- frame.datatype = RDFParser.ns.RDF + 'XMLLiteral';
357
- frame = this.buildFrame(frame);
358
- // Don't include the literal node, only its children
359
- frame.addLiteral(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
- }
386
- }
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
- }
383
+ this.buildFrame(f).addLiteral(attrs[x1].nodeValue);
395
384
  }
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
- return RDFParser;
482
- }();
464
+ return frame;
465
+ }
466
+ }
483
467
  exports.default = RDFParser;
484
468
  (0, _defineProperty2.default)(RDFParser, "ns", {
485
469
  'RDF': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',