Skip to content

Commit 93f6d18

Browse files
committed
Add sparql escape helpers
1 parent 5fd10f9 commit 93f6d18

File tree

3 files changed

+89
-4
lines changed

3 files changed

+89
-4
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ The following importable variables are available:
5151
- `update(query) => Promise`: Function for sending updates to the triplestore
5252
- `uuid()` => string: Generates a random UUID
5353
- `sparql`: [Template tag](https://www.npmjs.com/package/sparql-client-2#using-the-sparql-template-tag) to create queries with interpolated values
54+
- `sparqlEscapeString(value) => string`: Function to escape a string in SPARQL
55+
- `sparqlEscapeUri(value) => string`: Function to escape a URI in SPARQL
56+
- `sparqlEscapeInt(value) => string`: Function to escape an integer in SPARQL
57+
- `sparqlEscapeFloat(value) => string`: Function to escape a float in SPARQL
58+
- `sparqlEscapeDate(value) => string`: Function to escape a date in SPARQL
59+
- `sparqlEscapeDateTime(value) => string`: Function to escape a datetime in SPARQL
60+
- `sparqlEscapeBool(value) => string`: Function to escape a boolean in SPARQL
5461

5562
You can either import specific attributes from the mu library, or import the whole mu object.
5663

helpers/mu/index.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,41 @@ const mu = {
1111
SPARQL: sparql.sparql,
1212
query: sparql.query,
1313
update: sparql.update,
14+
sparqlEscapeString: sparql.sparqlEscapeString,
15+
sparqlEscapeUri: sparql.sparqlEscapeUri,
16+
sparqlEscapeInt: sparql.sparqlEscapeInt,
17+
sparqlEscapeFloat: sparql.sparqlEscapeFloat,
18+
sparqlEscapeDate: sparql.sparqlEscapeDate,
19+
sparqlEscapeDateTime: sparql.sparqlEscapeDateTime,
20+
sparqlEscapeBool: sparql.sparqlEscapeBool,
1421
uuid: uuid
1522
}
1623

17-
const SPARQL = mu.SPARQL, query = mu.query, update = mu.update;
24+
const SPARQL = mu.SPARQL,
25+
query = mu.query,
26+
update = mu.update,
27+
sparqlEscapeString = mu.sparqlEscapeString,
28+
sparqlEscapeUri = mu.sparqlEscapeUri,
29+
sparqlEscapeInt = mu.sparqlEscapeInt,
30+
sparqlEscapeFloat = mu.sparqlEscapeFloat,
31+
sparqlEscapeDate = mu.sparqlEscapeDate,
32+
sparqlEscapeDateTime = mu.sparqlEscapeDateTime,
33+
sparqlEscapeBool = mu.sparqlEscapeBool
34+
35+
export {
36+
app,
37+
sparql,
38+
SPARQL,
39+
query,
40+
update,
41+
sparqlEscapeString,
42+
sparqlEscapeUri,
43+
sparqlEscapeInt,
44+
sparqlEscapeFloat,
45+
sparqlEscapeDate,
46+
sparqlEscapeDateTime,
47+
sparqlEscapeBool,
48+
uuid
49+
};
1850

19-
export { app , sparql, SPARQL, query, update, uuid };
2051
export default mu;

helpers/mu/sparql.js

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,63 @@ function query( queryString ){
2020
// executes an update query
2121
const update = query;
2222

23+
function sparqlEscapeString( value ){
24+
return '"' + value.replace(/[\\"']/, function(match) { return '\\' + match }) + '"';
25+
};
26+
27+
function sparqlEscapeUri( value ){
28+
return '<' + value.replace(/[\\"']/, function(match) { return '\\' + match }) + '>';
29+
};
30+
31+
function sparqlEscapeInt( value ){
32+
return '"' + Number.parseInt(value) + '"^^xsd:integer';
33+
};
34+
35+
function sparqlEscapeFloat( value ){
36+
return '"' + Number.parseFloat(value) + '"^^xsd:float';
37+
};
38+
39+
function sparqlEscapeDate( value ){
40+
return '"' + new Date(value).toISOString() + '"^^xsd:date';
41+
};
42+
43+
function sparqlEscapeDateTime( value ){
44+
return '"' + new Date(value).toISOString() + '"^^xsd:dateTime';
45+
};
46+
47+
function sparqlEscapeBool( value ){
48+
return value ? '"true"^^xsd:boolean' : '"false"^^xsd:boolean';
49+
};
2350

2451
//==-- exports --==//
2552
const exports = {
2653
newSparqlClient: newSparqlClient,
2754
SPARQL: SPARQL,
2855
sparql: SPARQL,
2956
query: query,
30-
update: update
57+
update: update,
58+
sparqlEscapeString: sparqlEscapeString,
59+
sparqlEscapeUri: sparqlEscapeUri,
60+
sparqlEscapeInt: sparqlEscapeInt,
61+
sparqlEscapeFloat: sparqlEscapeFloat,
62+
sparqlEscapeDate: sparqlEscapeDate,
63+
sparqlEscapeDateTime: sparqlEscapeDateTime,
64+
sparqlEscapeBool: sparqlEscapeBool
3165
}
3266
export default exports;
3367

34-
export { query, update, SPARQL as SPARQL, SPARQL as sparql, newSparqlClient };
68+
export {
69+
newSparqlClient,
70+
SPARQL as SPARQL,
71+
SPARQL as sparql,
72+
query,
73+
update,
74+
sparqlEscapeString,
75+
sparqlEscapeUri,
76+
sparqlEscapeInt,
77+
sparqlEscapeFloat,
78+
sparqlEscapeDate,
79+
sparqlEscapeDateTime,
80+
sparqlEscapeBool
81+
};
3582

0 commit comments

Comments
 (0)