UNPKG

data-pipeline-information-system-sparql

Version:

Sparql function to query/update RDF through SPARQL 1.1

60 lines 2.45 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var common_1 = require("./common"); var getter_1 = __importDefault(require("../SparqlAttribute/getter")); var AGGREGATE_KEYORD; (function (AGGREGATE_KEYORD) { AGGREGATE_KEYORD["SUM"] = "SUM"; AGGREGATE_KEYORD["AVG"] = "AVG"; AGGREGATE_KEYORD["COUNT"] = "COUNT"; AGGREGATE_KEYORD["MIN"] = "MIN"; AGGREGATE_KEYORD["MAX"] = "MAX"; })(AGGREGATE_KEYORD = exports.AGGREGATE_KEYORD || (exports.AGGREGATE_KEYORD = {})); function aggregate_filter(aggregate_keyword, arithmetic_symbol, reference, definition, json_pointer, value) { var incremented_definition = common_1.copy(definition); var _a = __assign({}, getter_1.default(reference, json_pointer)), attribute = _a.attribute, nestedPath = _a.nestedPath; var pointerToDefinition = incremented_definition; nestedPath.forEach(function (path) { pointerToDefinition = pointerToDefinition.subQuery[path]; }); var attributeName = ''; if (attribute.reference !== undefined && attribute.reference.length > 0) { attributeName = '?' + attribute.name + '_pKey'; } else { attributeName = '?' + attribute.name; } var aggregate = { type: 'operation', operator: arithmetic_symbol, args: [ { type: 'aggregate', aggregation: aggregate_keyword, expression: attributeName, distinct: true }, (typeof value === 'number') ? "\"" + value + "\"^^http://www.w3.org/2001/XMLSchema#decimal" : "\"" + value + "\"" ] }; pointerToDefinition.query.having = pointerToDefinition.query.having || []; pointerToDefinition.query.having.push(aggregate); return incremented_definition; } exports.aggregate_filter = aggregate_filter; exports.default = aggregate_filter; //# sourceMappingURL=aggregate_filter.js.map