rdflib 2.2.21 → 2.2.22-b51259b5

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 (106) hide show
  1. package/dist/rdflib.min.js +1 -1
  2. package/dist/rdflib.min.js.LICENSE.txt +9 -1
  3. package/dist/rdflib.min.js.map +1 -1
  4. package/esm/blank-node.js +61 -114
  5. package/esm/class-order.js +1 -1
  6. package/esm/collection.js +70 -128
  7. package/esm/convert.js +1 -2
  8. package/esm/default-graph.js +14 -48
  9. package/esm/empty.js +8 -39
  10. package/esm/factories/canonical-data-factory.js +33 -65
  11. package/esm/factories/extended-term-factory.js +18 -25
  12. package/esm/factories/factory-types.js +3 -2
  13. package/esm/factories/rdflib-data-factory.js +9 -19
  14. package/esm/fetcher.js +1341 -1854
  15. package/esm/formula.js +639 -846
  16. package/esm/index.js +40 -76
  17. package/esm/jsonldparser.js +24 -49
  18. package/esm/jsonparser.js +1 -8
  19. package/esm/lists.js +47 -110
  20. package/esm/literal.js +120 -189
  21. package/esm/log.js +7 -7
  22. package/esm/n3parser.js +1015 -1412
  23. package/esm/named-node.js +70 -119
  24. package/esm/namespace.js +2 -5
  25. package/esm/node-internal.js +73 -110
  26. package/esm/node.js +2 -7
  27. package/esm/parse.js +12 -19
  28. package/esm/patch-parser.js +10 -30
  29. package/esm/query-to-sparql.js +0 -18
  30. package/esm/query.js +63 -147
  31. package/esm/rdfaparser.js +794 -997
  32. package/esm/rdfxmlparser.js +347 -461
  33. package/esm/serialize.js +9 -27
  34. package/esm/serializer.js +820 -1049
  35. package/esm/sparql-to-query.js +44 -134
  36. package/esm/statement.js +54 -85
  37. package/esm/store.js +830 -1103
  38. package/esm/types.js +22 -21
  39. package/esm/update-manager.js +869 -1106
  40. package/esm/updates-via.js +104 -161
  41. package/esm/uri.js +9 -53
  42. package/esm/utils/default-graph-uri.js +3 -2
  43. package/esm/utils/termValue.js +0 -1
  44. package/esm/utils/terms.js +19 -21
  45. package/esm/utils-js.js +20 -61
  46. package/esm/utils.js +10 -21
  47. package/esm/variable.js +32 -78
  48. package/esm/xsd.js +2 -2
  49. package/lib/blank-node.js +60 -113
  50. package/lib/class-order.js +1 -2
  51. package/lib/collection.js +69 -131
  52. package/lib/convert.js +3 -9
  53. package/lib/default-graph.js +13 -52
  54. package/lib/empty.js +8 -43
  55. package/lib/factories/canonical-data-factory.js +35 -79
  56. package/lib/factories/extended-term-factory.js +18 -32
  57. package/lib/factories/factory-types.d.ts +6 -6
  58. package/lib/factories/factory-types.js +1 -4
  59. package/lib/factories/rdflib-data-factory.js +9 -23
  60. package/lib/fetcher.d.ts +6 -6
  61. package/lib/fetcher.js +1370 -1843
  62. package/lib/formula.js +640 -855
  63. package/lib/index.js +66 -152
  64. package/lib/jsonldparser.js +23 -53
  65. package/lib/jsonparser.js +1 -10
  66. package/lib/lists.js +55 -112
  67. package/lib/literal.js +120 -195
  68. package/lib/log.d.ts +0 -6
  69. package/lib/log.js +7 -8
  70. package/lib/n3parser.js +1030 -1436
  71. package/lib/named-node.js +69 -126
  72. package/lib/namespace.js +2 -7
  73. package/lib/node-internal.js +74 -107
  74. package/lib/node.js +2 -12
  75. package/lib/parse.d.ts +1 -1
  76. package/lib/parse.js +12 -32
  77. package/lib/patch-parser.js +11 -34
  78. package/lib/query-to-sparql.js +0 -23
  79. package/lib/query.js +62 -167
  80. package/lib/rdfaparser.js +796 -1009
  81. package/lib/rdfxmlparser.js +349 -466
  82. package/lib/serialize.js +11 -37
  83. package/lib/serializer.js +823 -1064
  84. package/lib/sparql-to-query.js +42 -167
  85. package/lib/statement.js +55 -91
  86. package/lib/store.d.ts +1 -1
  87. package/lib/store.js +850 -1112
  88. package/lib/tf-types.d.ts +4 -4
  89. package/lib/types.d.ts +8 -8
  90. package/lib/types.js +23 -23
  91. package/lib/update-manager.d.ts +1 -1
  92. package/lib/update-manager.js +865 -1103
  93. package/lib/updates-via.js +105 -164
  94. package/lib/uri.js +8 -61
  95. package/lib/utils/default-graph-uri.js +3 -5
  96. package/lib/utils/termValue.js +0 -2
  97. package/lib/utils/terms.js +19 -40
  98. package/lib/utils-js.js +23 -88
  99. package/lib/utils.js +10 -27
  100. package/lib/variable.js +34 -85
  101. package/lib/xsd-internal.js +0 -3
  102. package/lib/xsd.js +2 -6
  103. package/package.json +35 -35
  104. package/src/fetcher.ts +2 -2
  105. package/src/update-manager.ts +12 -7
  106. package/changes.txt +0 -59
@@ -1,7 +1,4 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
-
5
2
  /**
6
3
  * RDF/XML PARSER
7
4
  *
@@ -53,7 +50,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
53
50
  * associated documentation will at all times remain with copyright
54
51
  * holders.
55
52
  */
56
-
57
53
  /**
58
54
  * @class RDFParser resource object tied to an RDFStore
59
55
  *
@@ -61,515 +57,407 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
61
57
  *
62
58
  */
63
59
  import * as uriUtil from './uri';
64
-
65
- var RDFParser = /*#__PURE__*/function () {
60
+ export default class RDFParser {
66
61
  /*
67
62
  * @constructor
68
63
  * @param {RDFStore} store An RDFStore object
69
64
  */
70
- function RDFParser(store) {
71
- _classCallCheck(this, RDFParser);
72
-
65
+ constructor(store) {
73
66
  /** Our triple store reference @private */
74
- this.store = store;
75
- /** Our identified blank nodes @private */
76
-
77
- this.bnodes = {};
78
- /** A context for context-aware stores @private */
79
-
80
- this.why = null;
81
- /** Reification flag */
82
67
 
68
+ this.store = store; /** Our identified blank nodes @private */
69
+ this.bnodes = {}; /** A context for context-aware stores @private */
70
+ this.why = null; /** Reification flag */
83
71
  this.reify = false;
84
72
  }
73
+
85
74
  /** Standard namespaces that we know how to handle @final
86
75
  * @member RDFParser
87
76
  */
88
77
 
78
+ /**
79
+ * Frame class for namespace and base URI lookups
80
+ * Base lookups will always resolve because the parser knows
81
+ * the default base.
82
+ *
83
+ * @private
84
+ */
89
85
 
90
- _createClass(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
- function frameFactory(parser, parent, element) {
101
- return {
102
- 'NODE': 1,
103
- 'ARC': 2,
104
- 'parent': parent,
105
- 'parser': parser,
106
- 'store': parser.store,
107
- 'element': element,
108
- 'lastChild': 0,
109
- 'base': null,
110
- 'lang': null,
111
- 'node': null,
112
- 'nodeType': null,
113
- 'listIndex': 1,
114
- 'rdfid': null,
115
- 'datatype': null,
116
- 'collection': false,
117
-
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
-
125
- /** Add a symbol of a certain type to the this frame */
126
- 'addSymbol': function addSymbol(type, uri) {
127
- uri = uriUtil.join(uri, this.base);
128
- this.node = this.store.sym(uri);
129
- this.nodeType = type;
130
- },
131
-
132
- /** Load any constructed triples into the store */
133
- 'loadTriple': function loadTriple() {
134
- if (this.parent.parent.collection) {
135
- this.parent.parent.node.append(this.node);
136
- } else {
137
- this.store.add(this.parent.parent.node, this.parent.node, this.node, this.parser.why);
138
- }
139
-
140
- if (this.parent.rdfid != null) {
141
- // reify
142
- var triple = this.store.sym(uriUtil.join('#' + this.parent.rdfid, this.base));
143
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(RDFParser.ns.RDF + 'Statement'), this.parser.why);
144
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'subject'), this.parent.parent.node, this.parser.why);
145
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'predicate'), this.parent.node, this.parser.why);
146
- this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'object'), this.node, this.parser.why);
147
- }
148
- },
149
-
150
- /** Check if it's OK to load a triple */
151
- 'isTripleToLoad': function isTripleToLoad() {
152
- return this.parent != null && this.parent.parent != null && this.nodeType === this.NODE && this.parent.nodeType === this.ARC && this.parent.parent.nodeType === this.NODE;
153
- },
154
-
155
- /** Add a symbolic node to this frame */
156
- 'addNode': function addNode(uri) {
157
- this.addSymbol(this.NODE, uri);
158
-
159
- if (this.isTripleToLoad()) {
160
- this.loadTriple();
161
- }
162
- },
163
-
164
- /** Add a collection node to this frame */
165
- 'addCollection': function addCollection() {
166
- this.nodeType = this.NODE;
167
- this.node = this.store.collection();
168
- this.collection = true;
169
-
170
- if (this.isTripleToLoad()) {
171
- this.loadTriple();
172
- }
173
- },
174
-
175
- /** Add a collection arc to this frame */
176
- 'addCollectionArc': function addCollectionArc() {
177
- this.nodeType = this.ARC;
178
- },
179
-
180
- /** Add a bnode to this frame */
181
- 'addBNode': function addBNode(id) {
182
- if (id != null) {
183
- if (this.parser.bnodes[id] != null) {
184
- this.node = this.parser.bnodes[id];
185
- } else {
186
- this.node = this.parser.bnodes[id] = this.store.bnode();
187
- }
188
- } else {
189
- this.node = this.store.bnode();
190
- }
191
-
192
- this.nodeType = this.NODE;
193
-
194
- if (this.isTripleToLoad()) {
195
- this.loadTriple();
196
- }
197
- },
198
-
199
- /** Add an arc or property to this frame */
200
- 'addArc': function addArc(uri) {
201
- if (uri === RDFParser.ns.RDF + 'li') {
202
- uri = RDFParser.ns.RDF + '_' + this.parent.listIndex;
203
- this.parent.listIndex++;
204
- }
205
-
206
- this.addSymbol(this.ARC, uri);
207
- },
208
-
209
- /** Add a literal to this frame */
210
- 'addLiteral': function addLiteral(value) {
211
- if (this.parent.datatype && this.parent.datatype !== RDFParser.ns.RDF + 'langString') {
212
- this.node = this.store.literal(value, this.store.sym(this.parent.datatype));
86
+ frameFactory(parser, parent, element) {
87
+ return {
88
+ 'NODE': 1,
89
+ 'ARC': 2,
90
+ 'parent': parent,
91
+ 'parser': parser,
92
+ 'store': parser.store,
93
+ 'element': element,
94
+ 'lastChild': 0,
95
+ 'base': null,
96
+ 'lang': null,
97
+ 'node': null,
98
+ 'nodeType': null,
99
+ 'listIndex': 1,
100
+ 'rdfid': null,
101
+ 'datatype': null,
102
+ 'collection': false,
103
+ /** Terminate the frame and notify the store that we're done */
104
+ 'terminateFrame': function () {
105
+ if (this.collection) {
106
+ this.node.close();
107
+ }
108
+ },
109
+ /** Add a symbol of a certain type to the this frame */'addSymbol': function (type, uri) {
110
+ uri = uriUtil.join(uri, this.base);
111
+ this.node = this.store.sym(uri);
112
+ this.nodeType = type;
113
+ },
114
+ /** Load any constructed triples into the store */'loadTriple': function () {
115
+ if (this.parent.parent.collection) {
116
+ this.parent.parent.node.append(this.node);
117
+ } else {
118
+ this.store.add(this.parent.parent.node, this.parent.node, this.node, this.parser.why);
119
+ }
120
+ if (this.parent.rdfid != null) {
121
+ // reify
122
+ var triple = this.store.sym(uriUtil.join('#' + this.parent.rdfid, this.base));
123
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(RDFParser.ns.RDF + 'Statement'), this.parser.why);
124
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'subject'), this.parent.parent.node, this.parser.why);
125
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'predicate'), this.parent.node, this.parser.why);
126
+ this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'object'), this.node, this.parser.why);
127
+ }
128
+ },
129
+ /** Check if it's OK to load a triple */'isTripleToLoad': function () {
130
+ return this.parent != null && this.parent.parent != null && this.nodeType === this.NODE && this.parent.nodeType === this.ARC && this.parent.parent.nodeType === this.NODE;
131
+ },
132
+ /** Add a symbolic node to this frame */'addNode': function (uri) {
133
+ this.addSymbol(this.NODE, uri);
134
+ if (this.isTripleToLoad()) {
135
+ this.loadTriple();
136
+ }
137
+ },
138
+ /** Add a collection node to this frame */'addCollection': function () {
139
+ this.nodeType = this.NODE;
140
+ this.node = this.store.collection();
141
+ this.collection = true;
142
+ if (this.isTripleToLoad()) {
143
+ this.loadTriple();
144
+ }
145
+ },
146
+ /** Add a collection arc to this frame */'addCollectionArc': function () {
147
+ this.nodeType = this.ARC;
148
+ },
149
+ /** Add a bnode to this frame */'addBNode': function (id) {
150
+ if (id != null) {
151
+ if (this.parser.bnodes[id] != null) {
152
+ this.node = this.parser.bnodes[id];
213
153
  } else {
214
- this.node = this.store.literal(value, this.lang);
215
- }
216
-
217
- this.nodeType = this.NODE;
218
-
219
- if (this.isTripleToLoad()) {
220
- this.loadTriple();
154
+ this.node = this.parser.bnodes[id] = this.store.bnode();
221
155
  }
156
+ } else {
157
+ this.node = this.store.bnode();
222
158
  }
223
- };
224
- } // from the OpenLayers source .. needed to get around IE problems.
225
-
226
- }, {
227
- key: "getAttributeNodeNS",
228
- value: function getAttributeNodeNS(node, uri, name) {
229
- var attributeNode = null;
230
-
231
- if (node.getAttributeNodeNS) {
232
- attributeNode = node.getAttributeNodeNS(uri, name);
233
- } else {
234
- var attributes = node.attributes;
235
- var potentialNode, fullName;
236
-
237
- for (var i = 0; i < attributes.length; ++i) {
238
- potentialNode = attributes[i];
239
-
240
- if (potentialNode.namespaceURI === uri) {
241
- fullName = potentialNode.prefix ? potentialNode.prefix + ':' + name : name;
242
-
243
- if (fullName === potentialNode.nodeName) {
244
- attributeNode = potentialNode;
245
- break;
246
- }
247
- }
159
+ this.nodeType = this.NODE;
160
+ if (this.isTripleToLoad()) {
161
+ this.loadTriple();
162
+ }
163
+ },
164
+ /** Add an arc or property to this frame */'addArc': function (uri) {
165
+ if (uri === RDFParser.ns.RDF + 'li') {
166
+ uri = RDFParser.ns.RDF + '_' + this.parent.listIndex;
167
+ this.parent.listIndex++;
168
+ }
169
+ this.addSymbol(this.ARC, uri);
170
+ },
171
+ /** Add a literal to this frame */'addLiteral': function (value) {
172
+ if (this.parent.datatype && this.parent.datatype !== RDFParser.ns.RDF + 'langString') {
173
+ this.node = this.store.literal(value, this.store.sym(this.parent.datatype));
174
+ } else {
175
+ this.node = this.store.literal(value, this.lang);
176
+ }
177
+ this.nodeType = this.NODE;
178
+ if (this.isTripleToLoad()) {
179
+ this.loadTriple();
248
180
  }
249
181
  }
182
+ };
183
+ }
250
184
 
251
- return attributeNode;
252
- }
253
- /**
254
- * Build our initial scope frame and parse the DOM into triples
255
- * @param {HTMLDocument} document The DOM to parse
256
- * @param {String} base The base URL to use
257
- * @param {Object} why The context to which this resource belongs
258
- */
259
-
260
- }, {
261
- key: "parse",
262
- value: function parse(document, base, why) {
263
- var children = document.childNodes; // clean up for the next run
264
-
265
- this.cleanParser(); // figure out the root element
266
-
267
- var root;
268
-
269
- if (document.nodeType === RDFParser.nodeType.DOCUMENT) {
270
- for (var c = 0; c < children.length; c++) {
271
- if (children[c].nodeType === RDFParser.nodeType.ELEMENT) {
272
- root = children[c];
185
+ // from the OpenLayers source .. needed to get around IE problems.
186
+ getAttributeNodeNS(node, uri, name) {
187
+ var attributeNode = null;
188
+ if (node.getAttributeNodeNS) {
189
+ attributeNode = node.getAttributeNodeNS(uri, name);
190
+ } else {
191
+ var attributes = node.attributes;
192
+ var potentialNode, fullName;
193
+ for (var i = 0; i < attributes.length; ++i) {
194
+ potentialNode = attributes[i];
195
+ if (potentialNode.namespaceURI === uri) {
196
+ fullName = potentialNode.prefix ? potentialNode.prefix + ':' + name : name;
197
+ if (fullName === potentialNode.nodeName) {
198
+ attributeNode = potentialNode;
273
199
  break;
274
200
  }
275
201
  }
276
- } else if (document.nodeType === RDFParser.nodeType.ELEMENT) {
277
- root = document;
278
- } else {
279
- throw new Error("RDFParser: can't find root in " + base + '. Halting. '); // return false
280
202
  }
281
-
282
- this.why = why; // our topmost frame
283
-
284
- var f = this.frameFactory(this);
285
- this.base = base;
286
- f.base = base;
287
- f.lang = null; // was '' but can't have langs like that 2015 (!)
288
-
289
- this.parseDOM(this.buildFrame(f, root));
290
- return true;
291
203
  }
292
- }, {
293
- key: "parseDOM",
294
- value: function parseDOM(frame) {
295
- // a DOM utility function used in parsing
296
- var rdfid;
204
+ return attributeNode;
205
+ }
297
206
 
298
- var elementURI = function (el) {
299
- var result = '';
207
+ /**
208
+ * Build our initial scope frame and parse the DOM into triples
209
+ * @param {HTMLDocument} document The DOM to parse
210
+ * @param {String} base The base URL to use
211
+ * @param {Object} why The context to which this resource belongs
212
+ */
300
213
 
301
- if (el.namespaceURI == null) {
302
- throw new Error('RDF/XML syntax error: No namespace for ' + el.localName + ' in ' + this.base);
214
+ parse(document, base, why) {
215
+ var children = document.childNodes; // clean up for the next run
216
+ this.cleanParser(); // figure out the root element
217
+ var root;
218
+ if (document.nodeType === RDFParser.nodeType.DOCUMENT) {
219
+ for (var c = 0; c < children.length; c++) {
220
+ if (children[c].nodeType === RDFParser.nodeType.ELEMENT) {
221
+ root = children[c];
222
+ break;
303
223
  }
224
+ }
225
+ } else if (document.nodeType === RDFParser.nodeType.ELEMENT) {
226
+ root = document;
227
+ } else {
228
+ throw new Error("RDFParser: can't find root in " + base + '. Halting. ');
229
+ // return false
230
+ }
304
231
 
305
- if (el.namespaceURI) {
306
- result = result + el.namespaceURI;
232
+ this.why = why; // our topmost frame
233
+ var f = this.frameFactory(this);
234
+ this.base = base;
235
+ f.base = base;
236
+ f.lang = null; // was '' but can't have langs like that 2015 (!)
237
+ this.parseDOM(this.buildFrame(f, root));
238
+ return true;
239
+ }
240
+ parseDOM(frame) {
241
+ // a DOM utility function used in parsing
242
+ var rdfid;
243
+ var elementURI = function (el) {
244
+ var result = '';
245
+ if (el.namespaceURI == null) {
246
+ throw new Error('RDF/XML syntax error: No namespace for ' + el.localName + ' in ' + this.base);
247
+ }
248
+ if (el.namespaceURI) {
249
+ result = result + el.namespaceURI;
250
+ }
251
+ if (el.localName) {
252
+ result = result + el.localName;
253
+ } else if (el.nodeName) {
254
+ if (el.nodeName.indexOf(':') >= 0) result = result + el.nodeName.split(':')[1];else result = result + el.nodeName;
255
+ }
256
+ return result;
257
+ }.bind(this);
258
+ var dig = true; // if we'll dig down in the tree on the next iter
259
+ while (frame.parent) {
260
+ var dom = frame.element;
261
+ var attrs = dom.attributes;
262
+ if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {
263
+ // we have a literal
264
+ if (frame.parent.nodeType === frame.NODE) {
265
+ // must have had attributes, store as rdf:value
266
+ frame.addArc(RDFParser.ns.RDF + 'value');
267
+ frame = this.buildFrame(frame);
307
268
  }
308
-
309
- if (el.localName) {
310
- result = result + el.localName;
311
- } else if (el.nodeName) {
312
- if (el.nodeName.indexOf(':') >= 0) result = result + el.nodeName.split(':')[1];else result = result + el.nodeName;
269
+ frame.addLiteral(dom.nodeValue);
270
+ } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {
271
+ // not root
272
+ if (frame.parent && frame.parent.collection) {
273
+ // we're a collection element
274
+ frame.addCollectionArc();
275
+ frame = this.buildFrame(frame, frame.element);
276
+ frame.parent.element = null;
313
277
  }
314
-
315
- return result;
316
- }.bind(this);
317
-
318
- var dig = true; // if we'll dig down in the tree on the next iter
319
-
320
- while (frame.parent) {
321
- var dom = frame.element;
322
- var attrs = dom.attributes;
323
-
324
- if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {
325
- // we have a literal
326
- if (frame.parent.nodeType === frame.NODE) {
327
- // must have had attributes, store as rdf:value
328
- frame.addArc(RDFParser.ns.RDF + 'value');
329
- frame = this.buildFrame(frame);
330
- }
331
-
332
- frame.addLiteral(dom.nodeValue);
333
- } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {
334
- // not root
335
- if (frame.parent && frame.parent.collection) {
336
- // we're a collection element
337
- frame.addCollectionArc();
338
- frame = this.buildFrame(frame, frame.element);
339
- frame.parent.element = null;
278
+ if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {
279
+ // we need a node
280
+ var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about');
281
+ rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
282
+ if (about && rdfid) {
283
+ 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.');
340
284
  }
341
-
342
- if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {
343
- // we need a node
344
- var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about');
345
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
346
-
347
- if (about && rdfid) {
348
- 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.');
349
- }
350
-
351
- if (!about && rdfid) {
352
- frame.addNode('#' + rdfid.nodeValue);
353
- dom.removeAttributeNode(rdfid);
354
- } else if (about == null && rdfid == null) {
355
- var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
356
-
357
- if (bnid) {
358
- frame.addBNode(bnid.nodeValue);
359
- dom.removeAttributeNode(bnid);
360
- } else {
361
- frame.addBNode();
362
- }
285
+ if (!about && rdfid) {
286
+ frame.addNode('#' + rdfid.nodeValue);
287
+ dom.removeAttributeNode(rdfid);
288
+ } else if (about == null && rdfid == null) {
289
+ var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
290
+ if (bnid) {
291
+ frame.addBNode(bnid.nodeValue);
292
+ dom.removeAttributeNode(bnid);
363
293
  } else {
364
- frame.addNode(about.nodeValue);
365
- dom.removeAttributeNode(about);
366
- } // Typed nodes
367
-
368
-
369
- var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type');
370
-
371
- if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {
372
- rdftype = {
373
- 'nodeValue': elementURI(dom)
374
- };
375
- }
376
-
377
- if (rdftype != null) {
378
- this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue, frame.base)), this.why);
379
-
380
- if (rdftype.nodeName) {
381
- dom.removeAttributeNode(rdftype);
382
- }
383
- } // Property Attributes
384
-
385
-
386
- for (var x = attrs.length - 1; x >= 0; x--) {
387
- this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue, frame.lang), this.why);
294
+ frame.addBNode();
388
295
  }
389
296
  } else {
390
- // we should add an arc (or implicit bnode+arc)
391
- frame.addArc(elementURI(dom)); // save the arc's rdf:ID if it has one
392
-
393
- if (this.reify) {
394
- rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
395
-
396
- if (rdfid) {
397
- frame.rdfid = rdfid.nodeValue;
398
- dom.removeAttributeNode(rdfid);
399
- }
297
+ frame.addNode(about.nodeValue);
298
+ dom.removeAttributeNode(about);
299
+ }
300
+ // Typed nodes
301
+ var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type');
302
+ if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {
303
+ rdftype = {
304
+ 'nodeValue': elementURI(dom)
305
+ };
306
+ }
307
+ if (rdftype != null) {
308
+ this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue, frame.base)), this.why);
309
+ if (rdftype.nodeName) {
310
+ dom.removeAttributeNode(rdftype);
400
311
  }
401
-
402
- var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType');
403
- var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype');
404
-
405
- if (datatype) {
406
- frame.datatype = datatype.nodeValue;
407
- dom.removeAttributeNode(datatype);
312
+ }
313
+ // Property Attributes
314
+ for (var x = attrs.length - 1; x >= 0; x--) {
315
+ this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue, frame.lang), this.why);
316
+ }
317
+ } else {
318
+ // we should add an arc (or implicit bnode+arc)
319
+ frame.addArc(elementURI(dom)); // save the arc's rdf:ID if it has one
320
+ if (this.reify) {
321
+ rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID');
322
+ if (rdfid) {
323
+ frame.rdfid = rdfid.nodeValue;
324
+ dom.removeAttributeNode(rdfid);
408
325
  }
409
-
410
- if (parsetype) {
411
- var nv = parsetype.nodeValue;
412
-
413
- if (nv === 'Literal') {
414
- frame.datatype = RDFParser.ns.RDF + 'XMLLiteral';
415
- frame = this.buildFrame(frame); // Don't include the literal node, only its children
416
-
417
- frame.addLiteral(dom.childNodes);
418
- dig = false;
419
- } else if (nv === 'Resource') {
420
- frame = this.buildFrame(frame, frame.element);
421
- frame.parent.element = null;
326
+ }
327
+ var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType');
328
+ var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype');
329
+ if (datatype) {
330
+ frame.datatype = datatype.nodeValue;
331
+ dom.removeAttributeNode(datatype);
332
+ }
333
+ if (parsetype) {
334
+ var nv = parsetype.nodeValue;
335
+ if (nv === 'Literal') {
336
+ frame.datatype = RDFParser.ns.RDF + 'XMLLiteral';
337
+ frame = this.buildFrame(frame);
338
+ // Don't include the literal node, only its children
339
+ frame.addLiteral(dom.childNodes);
340
+ dig = false;
341
+ } else if (nv === 'Resource') {
342
+ frame = this.buildFrame(frame, frame.element);
343
+ frame.parent.element = null;
344
+ frame.addBNode();
345
+ } else if (nv === 'Collection') {
346
+ frame = this.buildFrame(frame, frame.element);
347
+ frame.parent.element = null;
348
+ frame.addCollection();
349
+ }
350
+ dom.removeAttributeNode(parsetype);
351
+ }
352
+ if (attrs.length !== 0) {
353
+ var resource = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'resource');
354
+ var bnid2 = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
355
+ frame = this.buildFrame(frame);
356
+ if (resource) {
357
+ frame.addNode(resource.nodeValue);
358
+ dom.removeAttributeNode(resource);
359
+ } else {
360
+ if (bnid2) {
361
+ frame.addBNode(bnid2.nodeValue);
362
+ dom.removeAttributeNode(bnid2);
363
+ } else {
422
364
  frame.addBNode();
423
- } else if (nv === 'Collection') {
424
- frame = this.buildFrame(frame, frame.element);
425
- frame.parent.element = null;
426
- frame.addCollection();
427
365
  }
428
-
429
- dom.removeAttributeNode(parsetype);
430
366
  }
431
-
432
- if (attrs.length !== 0) {
433
- var resource = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'resource');
434
- var bnid2 = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID');
435
- frame = this.buildFrame(frame);
436
-
437
- if (resource) {
438
- frame.addNode(resource.nodeValue);
439
- dom.removeAttributeNode(resource);
367
+ for (var x1 = attrs.length - 1; x1 >= 0; x1--) {
368
+ var f = this.buildFrame(frame);
369
+ f.addArc(elementURI(attrs[x1]));
370
+ if (elementURI(attrs[x1]) === RDFParser.ns.RDF + 'type') {
371
+ this.buildFrame(f).addNode(attrs[x1].nodeValue);
440
372
  } else {
441
- if (bnid2) {
442
- frame.addBNode(bnid2.nodeValue);
443
- dom.removeAttributeNode(bnid2);
444
- } else {
445
- frame.addBNode();
446
- }
447
- }
448
-
449
- for (var x1 = attrs.length - 1; x1 >= 0; x1--) {
450
- var f = this.buildFrame(frame);
451
- f.addArc(elementURI(attrs[x1]));
452
-
453
- if (elementURI(attrs[x1]) === RDFParser.ns.RDF + 'type') {
454
- this.buildFrame(f).addNode(attrs[x1].nodeValue);
455
- } else {
456
- this.buildFrame(f).addLiteral(attrs[x1].nodeValue);
457
- }
373
+ this.buildFrame(f).addLiteral(attrs[x1].nodeValue);
458
374
  }
459
- } else if (dom.childNodes.length === 0) {
460
- this.buildFrame(frame).addLiteral('');
461
375
  }
376
+ } else if (dom.childNodes.length === 0) {
377
+ this.buildFrame(frame).addLiteral('');
462
378
  }
463
- } // rdf:RDF
464
- // dig dug
465
-
466
-
467
- dom = frame.element;
468
-
469
- while (frame.parent) {
470
- var pframe = frame;
471
-
472
- while (dom == null) {
473
- frame = frame.parent;
474
- dom = frame.element;
475
- }
476
-
477
- var candidate = dom.childNodes && dom.childNodes[frame.lastChild];
478
-
479
- if (!candidate || !dig) {
480
- frame.terminateFrame();
481
-
482
- if (!(frame = frame.parent)) {
483
- break;
484
- } // done
485
-
486
-
487
- dom = frame.element;
488
- dig = true;
489
- } 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) {
490
- frame.lastChild++;
491
- } else {
492
- // not a leaf
493
- frame.lastChild++;
494
- frame = this.buildFrame(pframe, dom.childNodes[frame.lastChild - 1]);
379
+ }
380
+ } // rdf:RDF
381
+ // dig dug
382
+ dom = frame.element;
383
+ while (frame.parent) {
384
+ var pframe = frame;
385
+ while (dom == null) {
386
+ frame = frame.parent;
387
+ dom = frame.element;
388
+ }
389
+ var candidate = dom.childNodes && dom.childNodes[frame.lastChild];
390
+ if (!candidate || !dig) {
391
+ frame.terminateFrame();
392
+ if (!(frame = frame.parent)) {
495
393
  break;
496
- }
394
+ } // done
395
+ dom = frame.element;
396
+ dig = true;
397
+ } 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) {
398
+ frame.lastChild++;
399
+ } else {
400
+ // not a leaf
401
+ frame.lastChild++;
402
+ frame = this.buildFrame(pframe, dom.childNodes[frame.lastChild - 1]);
403
+ break;
497
404
  }
498
- } // while
499
-
500
- }
501
- /**
502
- * Cleans out state from a previous parse run
503
- * @private
504
- */
505
-
506
- }, {
507
- key: "cleanParser",
508
- value: function cleanParser() {
509
- this.bnodes = {};
510
- this.why = null;
511
- }
512
- /**
513
- * Builds scope frame
514
- * @private
515
- */
516
-
517
- }, {
518
- key: "buildFrame",
519
- value: function buildFrame(parent, element) {
520
- var frame = this.frameFactory(this, parent, element);
521
-
522
- if (parent) {
523
- frame.base = parent.base;
524
- frame.lang = parent.lang;
525
- }
526
-
527
- if (!element || element.nodeType === RDFParser.nodeType.TEXT || element.nodeType === RDFParser.nodeType.CDATA_SECTION) {
528
- return frame;
529
405
  }
406
+ } // while
407
+ }
530
408
 
531
- var attrs = element.attributes;
532
- var base = element.getAttributeNode('xml:base');
533
-
534
- if (base != null) {
535
- frame.base = base.nodeValue;
536
- element.removeAttribute('xml:base');
537
- }
538
-
539
- var lang = element.getAttributeNode('xml:lang');
540
-
541
- if (lang != null) {
542
- frame.lang = lang.nodeValue;
543
- element.removeAttribute('xml:lang');
544
- } // remove all extraneous xml and xmlns attributes
545
-
546
-
547
- for (var x = attrs.length - 1; x >= 0; x--) {
548
- if (attrs[x].nodeName.substr(0, 3) === 'xml') {
549
- if (attrs[x].name.slice(0, 6) === 'xmlns:') {
550
- var uri = attrs[x].nodeValue; // alert('base for namespac attr:'+this.base)
551
-
552
- if (this.base) uri = uriUtil.join(uri, this.base);
553
- this.store.setPrefixForURI(attrs[x].name.slice(6), uri);
554
- } // alert('rdfparser: xml atribute: '+attrs[x].name) //@@
555
-
409
+ /**
410
+ * Cleans out state from a previous parse run
411
+ * @private
412
+ */
413
+ cleanParser() {
414
+ this.bnodes = {};
415
+ this.why = null;
416
+ }
556
417
 
557
- element.removeAttributeNode(attrs[x]);
418
+ /**
419
+ * Builds scope frame
420
+ * @private
421
+ */
422
+ buildFrame(parent, element) {
423
+ var frame = this.frameFactory(this, parent, element);
424
+ if (parent) {
425
+ frame.base = parent.base;
426
+ frame.lang = parent.lang;
427
+ }
428
+ if (!element || element.nodeType === RDFParser.nodeType.TEXT || element.nodeType === RDFParser.nodeType.CDATA_SECTION) {
429
+ return frame;
430
+ }
431
+ var attrs = element.attributes;
432
+ var base = element.getAttributeNode('xml:base');
433
+ if (base != null) {
434
+ frame.base = base.nodeValue;
435
+ element.removeAttribute('xml:base');
436
+ }
437
+ var lang = element.getAttributeNode('xml:lang');
438
+ if (lang != null) {
439
+ frame.lang = lang.nodeValue;
440
+ element.removeAttribute('xml:lang');
441
+ }
442
+ // remove all extraneous xml and xmlns attributes
443
+ for (var x = attrs.length - 1; x >= 0; x--) {
444
+ if (attrs[x].nodeName.substr(0, 3) === 'xml') {
445
+ if (attrs[x].name.slice(0, 6) === 'xmlns:') {
446
+ var uri = attrs[x].nodeValue; // alert('base for namespac attr:'+this.base)
447
+ if (this.base) uri = uriUtil.join(uri, this.base);
448
+ this.store.setPrefixForURI(attrs[x].name.slice(6), uri);
558
449
  }
450
+ // alert('rdfparser: xml atribute: '+attrs[x].name) //@@
451
+ element.removeAttributeNode(attrs[x]);
559
452
  }
560
-
561
- return frame;
562
453
  }
563
- }]);
564
-
565
- return RDFParser;
566
- }();
567
-
454
+ return frame;
455
+ }
456
+ }
568
457
  _defineProperty(RDFParser, "ns", {
569
458
  'RDF': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
570
459
  'RDFS': 'http://www.w3.org/2000/01/rdf-schema#'
571
460
  });
572
-
573
461
  _defineProperty(RDFParser, "nodeType", {
574
462
  'ELEMENT': 1,
575
463
  'ATTRIBUTE': 2,
@@ -583,6 +471,4 @@ _defineProperty(RDFParser, "nodeType", {
583
471
  'DOCUMENT_TYPE': 10,
584
472
  'DOCUMENT_FRAGMENT': 11,
585
473
  'NOTATION': 12
586
- });
587
-
588
- export { RDFParser as default };
474
+ });