Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return new UnionIterator(group.patterns.map(function (patternToken) {
return new SparqlGroupIterator(source.clone(), patternToken, childOptions);
}), options);
case 'filter':
// A set of bindings does not match the filter
// if it evaluates to 0/false, or errors
var evaluate = new SparqlExpressionEvaluator(group.expression);
return source.filter(function (bindings) {
try { return !/^"false"|^"0"/.test(evaluate(bindings)); }
catch (error) { return false; }
});
default:
throw new Error('Unsupported group type: ' + group.type);
}
}
AsyncIterator.subclass(SparqlGroupIterator);
// Error thrown when the query has a syntax error
var InvalidQueryError = createErrorType('InvalidQueryError', function (query, cause) {
this.message = 'Syntax error in query\n' + cause.message;
});
// Error thrown when no combination of iterators can solve the query
var UnsupportedQueryError = createErrorType('UnsupportedQueryError', function (query, cause) {
this.message = 'The query is not yet supported\n' + cause.message;
});
module.exports = SparqlIterator;
SparqlIterator.InvalidQueryError = InvalidQueryError;
SparqlIterator.UnsupportedQueryError = UnsupportedQueryError;
};
// If no answer was received, output false
SparqlAskIterator.prototype._flush = function (done) {
this._push(this._result), done();
};
// Creates an iterator for a list of SPARQL groups
function SparqlGroupsIterator(source, groups, options) {
// Chain iterators for each of the graphs in the group
return groups.reduce(function (source, group) {
return new SparqlGroupIterator(source, group, options);
}, source);
}
AsyncIterator.subclass(SparqlGroupsIterator);
// Creates an iterator for a SPARQL group
function SparqlGroupIterator(source, group, options) {
// Reset flags on the options for child iterators
var childOptions = options.optional ? _.create(options, { optional: false }) : options;
switch (group.type) {
case 'bgp':
return new ReorderingGraphPatternIterator(source, group.triples, options);
case 'group':
return new SparqlGroupsIterator(source, group.patterns, childOptions);
case 'optional':
childOptions = _.create(options, { optional: true });