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.
- package/dist/rdflib.min.js +1 -1
- package/dist/rdflib.min.js.LICENSE.txt +0 -2
- package/dist/rdflib.min.js.map +1 -1
- package/esm/blank-node.js +57 -82
- package/esm/class-order.js +1 -1
- package/esm/collection.js +70 -103
- package/esm/default-graph.js +13 -30
- package/esm/empty.js +8 -23
- package/esm/factories/canonical-data-factory.js +33 -29
- package/esm/factories/extended-term-factory.js +18 -13
- package/esm/factories/factory-types.js +1 -1
- package/esm/factories/rdflib-data-factory.js +9 -11
- package/esm/fetcher.js +1366 -1651
- package/esm/formula.js +631 -736
- package/esm/index.js +31 -48
- package/esm/jsonldparser.js +19 -26
- package/esm/jsonparser.js +1 -1
- package/esm/lists.js +38 -86
- package/esm/literal.js +120 -154
- package/esm/log.js +7 -7
- package/esm/n3parser.js +1009 -1086
- package/esm/named-node.js +69 -96
- package/esm/namespace.js +2 -4
- package/esm/node-internal.js +73 -96
- package/esm/node.js +1 -1
- package/esm/parse.js +3 -3
- package/esm/patch-parser.js +1 -1
- package/esm/query.js +15 -16
- package/esm/rdfaparser.js +775 -841
- package/esm/rdfxmlparser.js +348 -364
- package/esm/serialize.js +2 -2
- package/esm/serializer.js +835 -877
- package/esm/statement.js +52 -71
- package/esm/store.js +853 -957
- package/esm/types.js +21 -21
- package/esm/update-manager.js +965 -1100
- package/esm/updates-via.js +104 -132
- package/esm/uri.js +3 -3
- package/esm/utils/default-graph-uri.js +2 -2
- package/esm/utils/terms.js +4 -5
- package/esm/utils-js.js +5 -5
- package/esm/utils.js +6 -6
- package/esm/variable.js +32 -55
- package/esm/xsd.js +2 -2
- package/lib/blank-node.js +57 -80
- package/lib/class-order.js +1 -1
- package/lib/collection.js +70 -101
- package/lib/default-graph.js +14 -29
- package/lib/empty.js +9 -22
- package/lib/factories/canonical-data-factory.js +35 -31
- package/lib/factories/extended-term-factory.js +18 -13
- package/lib/factories/factory-types.js +1 -1
- package/lib/factories/rdflib-data-factory.js +9 -11
- package/lib/fetcher.js +1375 -1654
- package/lib/formula.js +632 -735
- package/lib/index.js +80 -84
- package/lib/jsonldparser.js +21 -32
- package/lib/jsonparser.js +1 -1
- package/lib/lists.js +47 -87
- package/lib/literal.js +121 -153
- package/lib/log.js +7 -7
- package/lib/n3parser.js +1012 -1090
- package/lib/named-node.js +70 -95
- package/lib/namespace.js +2 -4
- package/lib/node-internal.js +73 -94
- package/lib/node.js +1 -1
- package/lib/parse.js +5 -6
- package/lib/patch-parser.js +1 -1
- package/lib/query.js +20 -18
- package/lib/rdfaparser.js +778 -843
- package/lib/rdfxmlparser.js +351 -365
- package/lib/serialize.js +2 -2
- package/lib/serializer.js +840 -880
- package/lib/statement.js +55 -73
- package/lib/store.js +860 -958
- package/lib/types.js +21 -21
- package/lib/update-manager.js +970 -1102
- package/lib/updates-via.js +107 -132
- package/lib/uri.js +3 -3
- package/lib/utils/default-graph-uri.js +2 -2
- package/lib/utils/terms.js +4 -6
- package/lib/utils-js.js +8 -9
- package/lib/utils.js +6 -6
- package/lib/variable.js +35 -57
- package/lib/xsd.js +2 -2
- package/package.json +2 -2
- package/src/n3parser.js +1 -1
- package/src/serializer.js +1 -1
- package/src/update-manager.ts +2 -1
- package/.babelrc +0 -20
package/lib/rdfxmlparser.js
CHANGED
|
@@ -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
|
|
14
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
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
|
-
|
|
69
|
+
|
|
70
|
+
class RDFParser {
|
|
73
71
|
/*
|
|
74
72
|
* @constructor
|
|
75
73
|
* @param {RDFStore} store An RDFStore object
|
|
76
74
|
*/
|
|
77
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
this.
|
|
175
|
-
|
|
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.
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
222
|
-
|
|
192
|
+
};
|
|
193
|
+
}
|
|
223
194
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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
|
-
|
|
268
|
-
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
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
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
if (
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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.
|
|
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
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
frame.
|
|
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
|
-
|
|
373
|
-
var
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
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
|
-
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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
|
-
}
|
|
427
|
-
}
|
|
415
|
+
}
|
|
416
|
+
} // while
|
|
417
|
+
}
|
|
428
418
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (
|
|
470
|
-
|
|
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#'
|