@matdata/yasr 4.6.1 → 4.7.5

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.
@@ -1,43 +1,43 @@
1
- import Parser from "./";
2
-
3
- export default function (tsvString: string) {
4
- const lines = tsvString.split("\n");
5
-
6
- lines.pop(); //remove the last empty line
7
-
8
- const [headersString, ...sparqlDataStringArr] = lines;
9
- const headers = headersString.split("\t").map((header) => header.substring(1));
10
-
11
- const sparqlData = sparqlDataStringArr.map((row) => {
12
- const binding: Parser.Binding = {};
13
- for (const [index, value] of row.split("\t").entries()) {
14
- const bindingName = headers[index];
15
- if (value[0] === "<") {
16
- binding[bindingName] = { value: value.substring(1, value.length - 1), type: "uri" };
17
- } else if (value[0] === '"') {
18
- const lastDoubleQuote = value.lastIndexOf('"');
19
- const literalValue = value.substring(1, lastDoubleQuote);
20
- if (lastDoubleQuote === value.length - 1) binding[bindingName] = { value: literalValue, type: "literal" };
21
- else if (lastDoubleQuote < value.lastIndexOf("@")) {
22
- const langTag = value.substring(value.lastIndexOf("@") + 1);
23
- binding[bindingName] = { value: literalValue, type: "literal", "xml:lang": langTag };
24
- } else if (lastDoubleQuote < value.lastIndexOf("^^")) {
25
- const dataTag = value.substring(value.lastIndexOf("^^") + 2);
26
- binding[bindingName] = { value: literalValue, type: "typed-literal", datatype: dataTag };
27
- }
28
- }
29
- }
30
- return binding;
31
- });
32
-
33
- const sparqlResults: Parser.SparqlResults = {
34
- head: {
35
- vars: headers,
36
- },
37
- results: {
38
- bindings: sparqlData,
39
- },
40
- };
41
-
42
- return sparqlResults;
43
- }
1
+ import Parser from "./";
2
+
3
+ export default function (tsvString: string) {
4
+ const lines = tsvString.split("\n");
5
+
6
+ lines.pop(); //remove the last empty line
7
+
8
+ const [headersString, ...sparqlDataStringArr] = lines;
9
+ const headers = headersString.split("\t").map((header) => header.substring(1));
10
+
11
+ const sparqlData = sparqlDataStringArr.map((row) => {
12
+ const binding: Parser.Binding = {};
13
+ for (const [index, value] of row.split("\t").entries()) {
14
+ const bindingName = headers[index];
15
+ if (value[0] === "<") {
16
+ binding[bindingName] = { value: value.substring(1, value.length - 1), type: "uri" };
17
+ } else if (value[0] === '"') {
18
+ const lastDoubleQuote = value.lastIndexOf('"');
19
+ const literalValue = value.substring(1, lastDoubleQuote);
20
+ if (lastDoubleQuote === value.length - 1) binding[bindingName] = { value: literalValue, type: "literal" };
21
+ else if (lastDoubleQuote < value.lastIndexOf("@")) {
22
+ const langTag = value.substring(value.lastIndexOf("@") + 1);
23
+ binding[bindingName] = { value: literalValue, type: "literal", "xml:lang": langTag };
24
+ } else if (lastDoubleQuote < value.lastIndexOf("^^")) {
25
+ const dataTag = value.substring(value.lastIndexOf("^^") + 2);
26
+ binding[bindingName] = { value: literalValue, type: "typed-literal", datatype: dataTag };
27
+ }
28
+ }
29
+ }
30
+ return binding;
31
+ });
32
+
33
+ const sparqlResults: Parser.SparqlResults = {
34
+ head: {
35
+ vars: headers,
36
+ },
37
+ results: {
38
+ bindings: sparqlData,
39
+ },
40
+ };
41
+
42
+ return sparqlResults;
43
+ }
@@ -1,60 +1,60 @@
1
- import Parser from "./";
2
- import * as N3 from "n3";
3
-
4
- function n3TermToSparqlBinding(term: N3.Term): Parser.BindingValue {
5
- if (term.termType === "NamedNode") {
6
- return {
7
- value: term.value,
8
- type: "uri",
9
- };
10
- }
11
- if (term.termType === "Literal") {
12
- const bindingVal: Parser.BindingValue = {
13
- value: term.value,
14
- type: "literal",
15
- };
16
- const lang = term.language;
17
- if (lang) bindingVal["xml:lang"] = lang;
18
- const type = term.datatypeString;
19
- if (type) bindingVal.datatype = type;
20
-
21
- return bindingVal;
22
- }
23
-
24
- if (term.termType === "BlankNode") {
25
- return {
26
- value: term.value,
27
- type: "bnode",
28
- };
29
- }
30
- return {
31
- value: term.value,
32
- type: "uri",
33
- };
34
- }
35
- export default function (queryResponse: any): Parser.SparqlResults {
36
- const statements = getTurtleAsStatements(queryResponse);
37
- const vars = ["subject", "predicate", "object"];
38
- const bindings = statements.map((statement) => {
39
- const binding: Parser.Binding = {
40
- subject: n3TermToSparqlBinding(statement.subject),
41
- predicate: n3TermToSparqlBinding(statement.predicate),
42
- object: n3TermToSparqlBinding(statement.object),
43
- };
44
- return binding;
45
- });
46
- return {
47
- head: {
48
- vars: vars,
49
- },
50
- results: {
51
- bindings: bindings,
52
- },
53
- };
54
- }
55
- export function getTurtleAsStatements(queryResponse: any): N3.Quad[] {
56
- const parser = new N3.Parser();
57
- // When no the response has no body use an empty string
58
- const parsed = parser.parse(queryResponse || "");
59
- return parsed;
60
- }
1
+ import Parser from "./";
2
+ import * as N3 from "n3";
3
+
4
+ function n3TermToSparqlBinding(term: N3.Term): Parser.BindingValue {
5
+ if (term.termType === "NamedNode") {
6
+ return {
7
+ value: term.value,
8
+ type: "uri",
9
+ };
10
+ }
11
+ if (term.termType === "Literal") {
12
+ const bindingVal: Parser.BindingValue = {
13
+ value: term.value,
14
+ type: "literal",
15
+ };
16
+ const lang = term.language;
17
+ if (lang) bindingVal["xml:lang"] = lang;
18
+ const type = term.datatypeString;
19
+ if (type) bindingVal.datatype = type;
20
+
21
+ return bindingVal;
22
+ }
23
+
24
+ if (term.termType === "BlankNode") {
25
+ return {
26
+ value: term.value,
27
+ type: "bnode",
28
+ };
29
+ }
30
+ return {
31
+ value: term.value,
32
+ type: "uri",
33
+ };
34
+ }
35
+ export default function (queryResponse: any): Parser.SparqlResults {
36
+ const statements = getTurtleAsStatements(queryResponse);
37
+ const vars = ["subject", "predicate", "object"];
38
+ const bindings = statements.map((statement) => {
39
+ const binding: Parser.Binding = {
40
+ subject: n3TermToSparqlBinding(statement.subject),
41
+ predicate: n3TermToSparqlBinding(statement.predicate),
42
+ object: n3TermToSparqlBinding(statement.object),
43
+ };
44
+ return binding;
45
+ });
46
+ return {
47
+ head: {
48
+ vars: vars,
49
+ },
50
+ results: {
51
+ bindings: bindings,
52
+ },
53
+ };
54
+ }
55
+ export function getTurtleAsStatements(queryResponse: any): N3.Quad[] {
56
+ const parser = new N3.Parser();
57
+ // When no the response has no body use an empty string
58
+ const parsed = parser.parse(queryResponse || "");
59
+ return parsed;
60
+ }
@@ -1,79 +1,79 @@
1
- import Parser from "./";
2
- import { unescape, isEmpty } from "lodash-es";
3
- function parseHead(node: ChildNode): Parser.SparqlResults["head"] {
4
- const head: Parser.SparqlResults["head"] = {
5
- vars: [],
6
- };
7
- for (let headNodeIt = 0; headNodeIt < node.childNodes.length; headNodeIt++) {
8
- const headNode = node.childNodes[headNodeIt] as Element;
9
- if (headNode.nodeName == "variable") {
10
- const name = headNode.getAttribute("name");
11
- if (name) head.vars.push(name);
12
- }
13
- }
14
- return head;
15
- }
16
-
17
- const allowedBindingValueTypes: Array<Parser.BindingValue["type"]> = ["uri", "literal", "bnode", "typed-literal"];
18
- function parseResults(node: ChildNode, postProcessBinding: Parser.PostProcessBinding): Parser.SparqlResults["results"] {
19
- const results: Parser.SparqlResults["results"] = {
20
- bindings: [],
21
- };
22
-
23
- for (let resultIt = 0; resultIt < node.childNodes.length; resultIt++) {
24
- const resultNode = node.childNodes[resultIt];
25
- const binding: Parser.Binding = {};
26
-
27
- for (let bindingIt = 0; bindingIt < resultNode.childNodes.length; bindingIt++) {
28
- const bindingNode = resultNode.childNodes[bindingIt] as Element;
29
- if (bindingNode.nodeName == "binding") {
30
- const varName = bindingNode.getAttribute("name");
31
- if (varName) {
32
- for (let bindingInfIt = 0; bindingInfIt < bindingNode.childNodes.length; bindingInfIt++) {
33
- const bindingInf = bindingNode.childNodes[bindingInfIt] as Element;
34
- if (bindingInf.nodeName === "#text") continue;
35
- if (allowedBindingValueTypes.indexOf(bindingInf.nodeName as any) < 0) continue;
36
- const bindingValue: Parser.BindingValue = {
37
- type: bindingInf.nodeName as Parser.BindingValue["type"],
38
- value: unescape(bindingInf.innerHTML),
39
- };
40
- const dataType = bindingInf.getAttribute("datatype");
41
- if (dataType) bindingValue.datatype = dataType;
42
- binding[varName] = bindingValue;
43
- }
44
- }
45
- }
46
- }
47
-
48
- if (!isEmpty) {
49
- }
50
- if (!isEmpty(binding)) results.bindings.push(postProcessBinding(binding));
51
- }
52
- return results;
53
- }
54
-
55
- function parseBoolean(node: Element) {
56
- return node.innerHTML === "true";
57
- }
58
- export default function (
59
- xmlString: string,
60
- postProcessBinding: Parser.PostProcessBinding
61
- ): Parser.SparqlResults | undefined {
62
- if (typeof xmlString !== "string") return;
63
- const domParser = new DOMParser();
64
- let mainXml = domParser.parseFromString(xmlString, "text/xml");
65
- if (!mainXml.childNodes.length) return;
66
-
67
- const xml = mainXml.childNodes[0];
68
-
69
- const json: Partial<Parser.SparqlResults> = {};
70
-
71
- for (let i = 0; i < xml.childNodes.length; i++) {
72
- const node = xml.childNodes[i];
73
- if (node.nodeName == "head") json.head = parseHead(node as Element);
74
- if (node.nodeName == "results") json.results = parseResults(node as Element, postProcessBinding);
75
- if (node.nodeName == "boolean") json.boolean = parseBoolean(node as Element);
76
- }
77
-
78
- return json as Parser.SparqlResults;
79
- }
1
+ import Parser from "./";
2
+ import { unescape, isEmpty } from "lodash-es";
3
+ function parseHead(node: ChildNode): Parser.SparqlResults["head"] {
4
+ const head: Parser.SparqlResults["head"] = {
5
+ vars: [],
6
+ };
7
+ for (let headNodeIt = 0; headNodeIt < node.childNodes.length; headNodeIt++) {
8
+ const headNode = node.childNodes[headNodeIt] as Element;
9
+ if (headNode.nodeName == "variable") {
10
+ const name = headNode.getAttribute("name");
11
+ if (name) head.vars.push(name);
12
+ }
13
+ }
14
+ return head;
15
+ }
16
+
17
+ const allowedBindingValueTypes: Array<Parser.BindingValue["type"]> = ["uri", "literal", "bnode", "typed-literal"];
18
+ function parseResults(node: ChildNode, postProcessBinding: Parser.PostProcessBinding): Parser.SparqlResults["results"] {
19
+ const results: Parser.SparqlResults["results"] = {
20
+ bindings: [],
21
+ };
22
+
23
+ for (let resultIt = 0; resultIt < node.childNodes.length; resultIt++) {
24
+ const resultNode = node.childNodes[resultIt];
25
+ const binding: Parser.Binding = {};
26
+
27
+ for (let bindingIt = 0; bindingIt < resultNode.childNodes.length; bindingIt++) {
28
+ const bindingNode = resultNode.childNodes[bindingIt] as Element;
29
+ if (bindingNode.nodeName == "binding") {
30
+ const varName = bindingNode.getAttribute("name");
31
+ if (varName) {
32
+ for (let bindingInfIt = 0; bindingInfIt < bindingNode.childNodes.length; bindingInfIt++) {
33
+ const bindingInf = bindingNode.childNodes[bindingInfIt] as Element;
34
+ if (bindingInf.nodeName === "#text") continue;
35
+ if (allowedBindingValueTypes.indexOf(bindingInf.nodeName as any) < 0) continue;
36
+ const bindingValue: Parser.BindingValue = {
37
+ type: bindingInf.nodeName as Parser.BindingValue["type"],
38
+ value: unescape(bindingInf.innerHTML),
39
+ };
40
+ const dataType = bindingInf.getAttribute("datatype");
41
+ if (dataType) bindingValue.datatype = dataType;
42
+ binding[varName] = bindingValue;
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ if (!isEmpty) {
49
+ }
50
+ if (!isEmpty(binding)) results.bindings.push(postProcessBinding(binding));
51
+ }
52
+ return results;
53
+ }
54
+
55
+ function parseBoolean(node: Element) {
56
+ return node.innerHTML === "true";
57
+ }
58
+ export default function (
59
+ xmlString: string,
60
+ postProcessBinding: Parser.PostProcessBinding
61
+ ): Parser.SparqlResults | undefined {
62
+ if (typeof xmlString !== "string") return;
63
+ const domParser = new DOMParser();
64
+ let mainXml = domParser.parseFromString(xmlString, "text/xml");
65
+ if (!mainXml.childNodes.length) return;
66
+
67
+ const xml = mainXml.childNodes[0];
68
+
69
+ const json: Partial<Parser.SparqlResults> = {};
70
+
71
+ for (let i = 0; i < xml.childNodes.length; i++) {
72
+ const node = xml.childNodes[i];
73
+ if (node.nodeName == "head") json.head = parseHead(node as Element);
74
+ if (node.nodeName == "results") json.results = parseResults(node as Element, postProcessBinding);
75
+ if (node.nodeName == "boolean") json.boolean = parseBoolean(node as Element);
76
+ }
77
+
78
+ return json as Parser.SparqlResults;
79
+ }
@@ -1,11 +1,11 @@
1
- .yasr {
2
- .booleanResult {
3
- display: flex;
4
- align-items: center;
5
- justify-content: center;
6
- svg {
7
- margin-bottom: -10px;
8
- margin-right: 7px;
9
- }
10
- }
11
- }
1
+ .yasr {
2
+ .booleanResult {
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ svg {
7
+ margin-bottom: -10px;
8
+ margin-right: 7px;
9
+ }
10
+ }
11
+ }
@@ -1,57 +1,57 @@
1
- .yasr {
2
- .errorResult {
3
- padding: 10px;
4
- .errorHeader {
5
- // display:flex;
6
- overflow: hidden;
7
- .yasr_tryQuery {
8
- float: right;
9
- // color: #428bca;
10
- text-decoration: none;
11
- padding-top: 3px;
12
- padding-bottom: 3px;
13
- }
14
- span.status {
15
- display: inline-block;
16
- padding: 0.35em 0.5rem;
17
- font-size: 75%;
18
- font-weight: 600;
19
- line-height: 1.35;
20
- text-align: center;
21
- white-space: nowrap;
22
- vertical-align: baseline;
23
- border-radius: 0.25em;
24
- color: #fff;
25
- background-color: #dc3545;
26
- }
27
- }
28
- .errorMessageContainer {
29
- display: flex;
30
- .errorMessage {
31
- flex-grow: 1;
32
- width: 0;
33
- min-width: 100px;
34
- overflow: auto;
35
- display: block;
36
- padding: 10px;
37
- margin: 10px 0 10px;
38
- font-size: 13px;
39
- line-height: 1.42857;
40
- word-break: break-all;
41
- word-wrap: break-word;
42
- color: #333;
43
- background-color: #f5f5f5;
44
- border: 1px solid #ccc;
45
- border-radius: 4px;
46
- }
47
- }
48
- .redOutline {
49
- color: #a94442;
50
- background-color: #f2dede;
51
- margin-top: 10px;
52
- padding: 5px 1em;
53
- border: 1px solid #ebccd1;
54
- border-radius: 4px;
55
- }
56
- }
57
- }
1
+ .yasr {
2
+ .errorResult {
3
+ padding: 10px;
4
+ .errorHeader {
5
+ // display:flex;
6
+ overflow: hidden;
7
+ .yasr_tryQuery {
8
+ float: right;
9
+ // color: #428bca;
10
+ text-decoration: none;
11
+ padding-top: 3px;
12
+ padding-bottom: 3px;
13
+ }
14
+ span.status {
15
+ display: inline-block;
16
+ padding: 0.35em 0.5rem;
17
+ font-size: 75%;
18
+ font-weight: 600;
19
+ line-height: 1.35;
20
+ text-align: center;
21
+ white-space: nowrap;
22
+ vertical-align: baseline;
23
+ border-radius: 0.25em;
24
+ color: #fff;
25
+ background-color: #dc3545;
26
+ }
27
+ }
28
+ .errorMessageContainer {
29
+ display: flex;
30
+ .errorMessage {
31
+ flex-grow: 1;
32
+ width: 0;
33
+ min-width: 100px;
34
+ overflow: auto;
35
+ display: block;
36
+ padding: 10px;
37
+ margin: 10px 0 10px;
38
+ font-size: 13px;
39
+ line-height: 1.42857;
40
+ word-break: break-all;
41
+ word-wrap: break-word;
42
+ color: #333;
43
+ background-color: #f5f5f5;
44
+ border: 1px solid #ccc;
45
+ border-radius: 4px;
46
+ }
47
+ }
48
+ .redOutline {
49
+ color: #a94442;
50
+ background-color: #f2dede;
51
+ margin-top: 10px;
52
+ padding: 5px 1em;
53
+ border: 1px solid #ebccd1;
54
+ border-radius: 4px;
55
+ }
56
+ }
57
+ }
@@ -1,24 +1,24 @@
1
- export interface Plugin<Opts extends any> {
2
- priority: number;
3
- canHandleResults(): boolean;
4
- hideFromSelection?: boolean;
5
- // getPersistentSettings?: () => any;
6
- label?: string;
7
- options?: Opts;
8
-
9
- initialize?(): Promise<void>;
10
- destroy?(): void;
11
- draw(persistentConfig: any, runtimeConfig?: any): Promise<void> | void;
12
- getIcon(): Element | undefined;
13
- download?(filename?: string): DownloadInfo | undefined;
14
- helpReference?: string;
15
- }
16
- export interface DownloadInfo {
17
- contentType: string;
18
- /**
19
- * File contents as a string or a data url
20
- */
21
- getData: () => string;
22
- filename: string;
23
- title: string;
24
- }
1
+ export interface Plugin<Opts extends any> {
2
+ priority: number;
3
+ canHandleResults(): boolean;
4
+ hideFromSelection?: boolean;
5
+ // getPersistentSettings?: () => any;
6
+ label?: string;
7
+ options?: Opts;
8
+
9
+ initialize?(): Promise<void>;
10
+ destroy?(): void;
11
+ draw(persistentConfig: any, runtimeConfig?: any): Promise<void> | void;
12
+ getIcon(): Element | undefined;
13
+ download?(filename?: string): DownloadInfo | undefined;
14
+ helpReference?: string;
15
+ }
16
+ export interface DownloadInfo {
17
+ contentType: string;
18
+ /**
19
+ * File contents as a string or a data url
20
+ */
21
+ getData: () => string;
22
+ filename: string;
23
+ title: string;
24
+ }