Beispiel #1
0
 public SparqlNotExistsExpression(ISparqlGraphPattern sparqlGraphPattern)
     : base(sparqlGraphPattern)
 {
     // TODO: Complete member initialization
     //this.sparqlGraphPattern = sparqlGraphPattern;
     Operator = variableBinding => !sparqlGraphPattern.Run(Enumerable.Repeat(variableBinding, 1)).Any();
 }
Beispiel #2
0
        //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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #6
0
        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);
                            }
                        }
                    }
                }
            }
        }