public SparqlNotExistsExpression(ISparqlGraphPattern sparqlGraphPattern) : base(sparqlGraphPattern) { // TODO: Complete member initialization //this.sparqlGraphPattern = sparqlGraphPattern; Operator = variableBinding => !sparqlGraphPattern.Run(Enumerable.Repeat(variableBinding, 1)).Any(); }
//private SparqlGraphPattern sparqlGraphPattern; public SparqlExistsExpression(ISparqlGraphPattern sparqlGraphPattern) : base(VariableDependenceGroupLevel.SimpleVariable, true) { // TODO: Complete member initialization //this.sparqlGraphPattern = sparqlGraphPattern; //SetExprType(ObjectVariantEnum.Bool); Operator = variableBinding => sparqlGraphPattern.Run(Enumerable.Repeat(variableBinding, 1)).Any(); TypedOperator = variableBinding => new OV_bool(Operator(variableBinding)); }
public IEnumerable <SparqlResult> Run(IEnumerable <SparqlResult> variableBindings) { var minusResults = sparqlGraphPattern.Run(Enumerable.Repeat(new SparqlResult(q), 1)) .Select(result => result.Clone()).ToArray(); var before = variableBindings.Select(result => result.Clone()).ToArray(); var after = before.Where(result => minusResults.All(minusResult => minusResult.TestAll((minusVar, minusValue) => { var value = result[minusVar]; return(value == null || !Equals(minusValue, value)); }))); return(after); }
public virtual SparqlResultSet Run() { ResultSet.Variables = q.Variables; Seed = Enumerable.Repeat(new SparqlResult(q), 1); ResultSet.Results = Seed; if (valueDataBlock != null) { ResultSet.Results = valueDataBlock.Run(ResultSet.Results); } ResultSet.Results = sparqlWhere.Run(ResultSet.Results); if (SparqlSolutionModifier != null) { ResultSet.Results = SparqlSolutionModifier.Run(ResultSet.Results, ResultSet); } return(ResultSet); }
public IEnumerable <SparqlResult> Run(IEnumerable <SparqlResult> variableBindings) { foreach (var variableBinding in variableBindings) { var any = false; foreach (var resultVariableBinding in sparqlGraphPattern.Run(Enumerable.Repeat(variableBinding, 1))) { yield return(resultVariableBinding); any = true; } if (any) { continue; } yield return(variableBinding); } }
public void Run(IStore store) { var results = @where.Run(Enumerable.Repeat(new SparqlResult(q), 1)); SparqlTriple[] defaultGraphTriplesInsert = null; SparqlTriple[] defaultGraphTriplesDelete = null; SparqlGraphGraph[] graphPatternsInsert = null; SparqlGraphGraph[] graphPatternsDelete = null; if (insert != null) { defaultGraphTriplesInsert = insert.Where(pattern => pattern.PatternType == SparqlGraphPatternType.SparqlTriple) .Cast <SparqlTriple>() .ToArray(); graphPatternsInsert = insert .Where(pattern => pattern.PatternType == SparqlGraphPatternType.Graph) .Cast <SparqlGraphGraph>() .ToArray(); } if (delete != null) { defaultGraphTriplesDelete = delete.Where(pattern => pattern.PatternType == SparqlGraphPatternType.SparqlTriple) .Cast <SparqlTriple>() .ToArray(); graphPatternsDelete = delete .Where(pattern => pattern.PatternType == SparqlGraphPatternType.Graph) .Cast <SparqlGraphGraph>() .ToArray(); } foreach (var result in results) { if (delete != null) { if (with == null) { foreach (SparqlTriple triple in defaultGraphTriplesDelete) { triple.Substitution(result, store.Delete); } } else { foreach (SparqlTriple triple in defaultGraphTriplesDelete) { triple.Substitution(result, with, store.NamedGraphs.Delete); } } foreach (SparqlGraphGraph sparqlGraphPattern in graphPatternsDelete) { if (sparqlGraphPattern.Name is VariableNode) { var gVariableNode = ((VariableNode)sparqlGraphPattern.Name); foreach (var triple in sparqlGraphPattern.GetTriples()) { triple.Substitution(result, gVariableNode, store.NamedGraphs.Delete); } } else { foreach (var triple in sparqlGraphPattern.GetTriples()) { triple.Substitution(result, sparqlGraphPattern.Name, store.NamedGraphs.Delete); } } } } if (insert != null) { if (with == null) { foreach (SparqlTriple triple in defaultGraphTriplesInsert) { triple.Substitution(result, store.Add); } } else { foreach (SparqlTriple triple in defaultGraphTriplesInsert) { triple.Substitution(result, with, store.NamedGraphs.Add); } } foreach (SparqlGraphGraph sparqlGraphPattern in graphPatternsInsert) { if (sparqlGraphPattern.Name is VariableNode) { var gVariableNode = ((VariableNode)sparqlGraphPattern.Name); foreach (var triple in sparqlGraphPattern.GetTriples()) { triple.Substitution(result, gVariableNode, store.NamedGraphs.Add); } } else { foreach (var triple in sparqlGraphPattern.GetTriples()) { triple.Substitution(result, sparqlGraphPattern.Name, store.NamedGraphs.Add); } } } } } }