@faubulous/mentor-rdf 0.2.15 → 0.2.16
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.
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IRecognitionException, IToken } from "chevrotain";
|
|
2
|
+
import { W3SpecSparqlParser, IStardogParser } from "millan";
|
|
3
|
+
/**
|
|
4
|
+
* An extended version of the Millan SPARQL parser that also returns semantic errors such as undefined prefixes.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SparqlSynstaxParser implements IStardogParser {
|
|
7
|
+
readonly parser: W3SpecSparqlParser;
|
|
8
|
+
get input(): IToken[];
|
|
9
|
+
tokenize(document: string): IToken[];
|
|
10
|
+
parse: (document: string) => {
|
|
11
|
+
errors: IRecognitionException[];
|
|
12
|
+
semanticErrors: IRecognitionException[];
|
|
13
|
+
comments: IToken[];
|
|
14
|
+
cst: any;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SparqlSynstaxParser = void 0;
|
|
4
|
+
const millan_1 = require("millan");
|
|
5
|
+
/**
|
|
6
|
+
* An extended version of the Millan SPARQL parser that also returns semantic errors such as undefined prefixes.
|
|
7
|
+
*/
|
|
8
|
+
class SparqlSynstaxParser {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.parser = new millan_1.W3SpecSparqlParser();
|
|
11
|
+
this.parse = (document) => {
|
|
12
|
+
var _a;
|
|
13
|
+
const { cst, errors, comments } = this.parser.parse(document);
|
|
14
|
+
const tokens = this.parser.input;
|
|
15
|
+
const semanticErrors = [];
|
|
16
|
+
const declaredPrefixes = new Set();
|
|
17
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
18
|
+
const token = tokens[i];
|
|
19
|
+
const tokenName = (_a = token.tokenType) === null || _a === void 0 ? void 0 : _a.name;
|
|
20
|
+
switch (tokenName) {
|
|
21
|
+
case "PNAME_NS": {
|
|
22
|
+
const prefix = token.image.split(":")[0];
|
|
23
|
+
declaredPrefixes.add(prefix);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case "PNAME_LN": {
|
|
27
|
+
const prefix = token.image.split(":")[0];
|
|
28
|
+
if (!declaredPrefixes.has(prefix)) {
|
|
29
|
+
semanticErrors.push({
|
|
30
|
+
message: `Undefined prefix: ${prefix}`,
|
|
31
|
+
name: "NoNamespacePrefixError",
|
|
32
|
+
token: token,
|
|
33
|
+
resyncedTokens: [],
|
|
34
|
+
context: {
|
|
35
|
+
ruleStack: [],
|
|
36
|
+
ruleOccurrenceStack: []
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { cst, errors, semanticErrors, comments: comments ? comments : [] };
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
get input() {
|
|
48
|
+
return this.parser.input;
|
|
49
|
+
}
|
|
50
|
+
tokenize(document) {
|
|
51
|
+
return this.parser.tokenize(document);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.SparqlSynstaxParser = SparqlSynstaxParser;
|
|
55
|
+
//# sourceMappingURL=sparql-syntax-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparql-syntax-parser.js","sourceRoot":"","sources":["../../../src/rdf/parsers/sparql-syntax-parser.ts"],"names":[],"mappings":";;;AACA,mCAA4D;AAE5D;;GAEG;AACH,MAAa,mBAAmB;IAAhC;QACa,WAAM,GAAuB,IAAI,2BAAkB,EAAE,CAAC;QAUxD,UAAK,GAAG,CAAC,QAAgB,EAK9B,EAAE;;YACA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,MAAM,cAAc,GAA4B,EAAE,CAAC;YAEnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;YAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CAAC;gBAExC,QAAQ,SAAS,EAAE;oBACf,KAAK,UAAU,CAAC,CAAC;wBACb,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEzC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7B,MAAM;qBACT;oBACD,KAAK,UAAU,CAAC,CAAC;wBACb,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;4BAC/B,cAAc,CAAC,IAAI,CAAC;gCAChB,OAAO,EAAE,qBAAqB,MAAM,EAAE;gCACtC,IAAI,EAAE,wBAAwB;gCAC9B,KAAK,EAAE,KAAK;gCACZ,cAAc,EAAE,EAAE;gCAClB,OAAO,EAAE;oCACL,SAAS,EAAE,EAAE;oCACb,mBAAmB,EAAE,EAAE;iCAC1B;6BACJ,CAAC,CAAC;yBACN;wBACD,MAAM;qBACT;iBACJ;aACJ;YAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IArDG,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;CA+CJ;AAxDD,kDAwDC"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Tokenizer = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const millan_1 = require("millan");
|
|
6
5
|
const rdf_syntax_1 = require("./rdf-syntax");
|
|
7
6
|
const trig_syntax_parser_1 = require("./trig-syntax-parser");
|
|
7
|
+
const sparql_syntax_parser_1 = require("./sparql-syntax-parser");
|
|
8
8
|
/**
|
|
9
9
|
* Parses RDF data into tokens.
|
|
10
10
|
*/
|
|
@@ -12,10 +12,10 @@ class Tokenizer {
|
|
|
12
12
|
static parseData(data, syntax) {
|
|
13
13
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
14
|
if (syntax === rdf_syntax_1.RdfSyntax.Sparql) {
|
|
15
|
-
const parser = new
|
|
16
|
-
const { errors, comments } = parser.parse(data);
|
|
17
|
-
const tokens =
|
|
18
|
-
return { tokens, syntaxErrors: errors, semanticErrors
|
|
15
|
+
const parser = new sparql_syntax_parser_1.SparqlSynstaxParser();
|
|
16
|
+
const { errors, semanticErrors, comments } = parser.parse(data);
|
|
17
|
+
const tokens = [...parser.input, ...comments];
|
|
18
|
+
return { tokens, syntaxErrors: errors, semanticErrors };
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
21
|
const parser = new trig_syntax_parser_1.TrigSyntaxParser();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../src/rdf/parsers/tokenizer.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../src/rdf/parsers/tokenizer.ts"],"names":[],"mappings":";;;;AAEA,6CAAyC;AACzC,6DAAwD;AACxD,iEAA6D;AAW7D;;GAEG;AACH,MAAa,SAAS;IAClB,MAAM,CAAO,SAAS,CAAC,IAAY,EAAE,MAAiB;;YAClD,IAAI,MAAM,KAAK,sBAAS,CAAC,MAAM,EAAE;gBAC7B,MAAM,MAAM,GAAG,IAAI,0CAAmB,EAAE,CAAC;gBAEzC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;gBAE9C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;aAC3D;iBAAM;gBACH,MAAM,MAAM,GAAG,IAAI,qCAAgB,EAAE,CAAC;gBAEtC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;gBAE9C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;aAC3D;QACL,CAAC;KAAA;CACJ;AAlBD,8BAkBC"}
|