public IEnumerable <SparqlResult> spoVarGraphs(ObjectVariants subjectNode, ObjectVariants predicateNode, ObjectVariants objectNode,
                                                SparqlResult variablesBindings, VariableDataSet graphs)
 {
     return((graphs.Any()
         ? graphs.Where(g => store.NamedGraphs.Contains(subjectNode, predicateNode, objectNode, g))
         : store.NamedGraphs.GetGraph(subjectNode, predicateNode, objectNode))
            .Select(g => variablesBindings.Add(g, graphs.Variable)));
 }
Ejemplo n.º 2
0
        private IEnumerable <SparqlResult> SetVariablesValues(SparqlResult variableBinding, StoreCallCase @case)
        {
            switch (@case)
            {
            case StoreCallCase.spo:
                return(spo(Subject, Predicate, Object, variableBinding));

            case StoreCallCase.spO:
                return(q.Store.GetTriplesWithSubjectPredicate(Subject, Predicate).Select(o => variableBinding.Add(o, oVariableNode)));

            case StoreCallCase.sPo:
                return(q.Store.GetTriplesWithSubjectObject(Subject, Object).Select(p => variableBinding.Add(p, pVariableNode)));

            case StoreCallCase.sPO:
                return(q.Store.GetTriplesWithSubject(Subject).Select(t => SetValues(variableBinding, t)));

            case StoreCallCase.Spo:
                return(q.Store.GetSubjects(Predicate, Object).Select(s => variableBinding.Add(s, sVariableNode)));

            case StoreCallCase.SpO:
                return(q.Store.GetTriplesWithPredicate(Predicate).Select(t => SetValues(variableBinding, t)));

            case StoreCallCase.SPo:
                return(q.Store.GetTriplesWithObject(Object).Select(t => SetValues(variableBinding, t)));

            case StoreCallCase.SPO:
                return(q.Store.GetTriples((s, p, o) => variableBinding.Add(s, sVariableNode, p, pVariableNode, o, oVariableNode)));


            case StoreCallCase.gspo:
                return(spoGraphs(variableBinding));

            case StoreCallCase.gspO:
                return(graphs.SelectMany(graph =>
                                         q.Store.NamedGraphs
                                         .GetObject(Subject, Predicate, graph)

                                         .Select(o => variableBinding.Add(o, oVariableNode))));

            case StoreCallCase.gsPo:
                return(graphs.SelectMany(graph =>
                                         q.Store.NamedGraphs
                                         .GetPredicate(Subject, Object, graph)

                                         .Select(p => variableBinding.Add(p, pVariableNode))));

            case StoreCallCase.gsPO:
                return(graphs.SelectMany(g =>
                                         q.Store
                                         .NamedGraphs
                                         .GetTriplesWithSubjectFromGraph(Subject, g)

                                         .Select(quad => SetValues(variableBinding, quad))));

            case StoreCallCase.gSpo:
                return(graphs.SelectMany(graph =>
                                         q.Store.NamedGraphs
                                         .GetSubject(Predicate, Object, graph)

                                         .Select(s => variableBinding.Add(s, sVariableNode))));

            case StoreCallCase.gSpO:
                return(graphs.SelectMany(g =>
                                         q.Store
                                         .NamedGraphs
                                         .GetTriplesWithPredicateFromGraph(Predicate, g)

                                         .Select(quad => SetValues(variableBinding, quad))));

            case StoreCallCase.gSPo:
                return(graphs.SelectMany(g =>
                                         q.Store
                                         .NamedGraphs
                                         .GetTriplesWithObjectFromGraph(Object, g)

                                         .Select(quad => SetValues(variableBinding, quad))));

            case StoreCallCase.gSPO:
                return(graphs.SelectMany(g => q.Store.NamedGraphs.GetTriplesFromGraph(g, (s, p, o) => variableBinding.Add(s, sVariableNode, p, pVariableNode, o, oVariableNode))));

            case StoreCallCase.Gspo:
                return((variableDataSet.Any()
                        ? variableDataSet.Where(g => q.Store.NamedGraphs.Contains(Subject, Predicate, Object, g))
                        : q.Store.NamedGraphs.GetGraph(Subject, Predicate, Object))

                       .Select(g => variableBinding.Add(g, variableDataSet.Variable)));

            case StoreCallCase.GspO:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g => q.Store
                                                      .NamedGraphs
                                                      .GetObject(Subject, Predicate, g)

                                                      .Select(o => variableBinding.Add(o, oVariableNode, g, variableDataSet.Variable))));
                }
                else
                {
                    return(q.Store
                           .NamedGraphs
                           .GetTriplesWithSubjectPredicate(Subject, Predicate)

                           .Select(quad => SetValues(variableBinding, quad)));
                }

            // if graphVariable is null, ctor check this.
            case StoreCallCase.GsPo:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g =>
                                                      q.Store.NamedGraphs.GetPredicate(Subject, Object, g)

                                                      .Select(p => variableBinding.Add(p, pVariableNode, g, variableDataSet.Variable))));
                }
                else
                {
                    return(q.Store
                           .NamedGraphs
                           .GetTriplesWithSubjectObject(Subject, Object)

                           .Select(quad => SetValues(variableBinding, quad)));
                }

            case StoreCallCase.GsPO:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g => q.Store
                                                      .NamedGraphs
                                                      .GetTriplesWithSubjectFromGraph(Subject, g)

                                                      .Select(quad => SetValues(variableBinding, quad))));
                }
                else
                {
                    return(q.Store
                           .NamedGraphs
                           .GetTriplesWithSubject(Subject)

                           .Select(quad => SetValues(variableBinding, quad)));
                }

            case StoreCallCase.GSpo:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g => q.Store
                                                      .NamedGraphs
                                                      .GetSubject(Predicate, Object, g)

                                                      .Select(s => variableBinding.Add(s, sVariableNode, g, variableDataSet.Variable))));
                }
                else
                {
                    return(q.Store
                           .NamedGraphs
                           .GetTriplesWithPredicateObject(Predicate, Object)

                           .Select(quad => SetValues(variableBinding, quad)));
                }

            case StoreCallCase.GSpO:
                ObjectVariants predicate = Predicate;
                if (variableDataSet.Any())
                {
                    return
                        (variableDataSet.SelectMany(
                             g => q.Store.NamedGraphs.GetTriplesWithPredicateFromGraph(predicate, g)

                             .Select(quad => SetValues(variableBinding, quad))));
                }
                else
                {
                    return(q.Store.NamedGraphs.GetTriplesWithPredicate(predicate)

                           .Select(quad => SetValues(variableBinding, quad)));
                }

            case StoreCallCase.GSPo:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g => q.Store
                                                      .NamedGraphs
                                                      .GetTriplesWithObjectFromGraph(Object, g))

                           .Select(quad => SetValues(variableBinding, quad)));
                }
                return(q.Store
                       .NamedGraphs
                       .GetTriplesWithObject(Object)

                       .Select(quad => SetValues(variableBinding, quad)));

            case StoreCallCase.GSPO:
                if (variableDataSet.Any())
                {
                    return(variableDataSet.SelectMany(g =>
                                                      q.Store
                                                      .NamedGraphs
                                                      .GetTriplesFromGraph(g, (s, p, o) =>
                                                                           variableBinding.Add(s, sVariableNode, p, pVariableNode, o, oVariableNode, g,
                                                                                               variableDataSet.Variable))));
                }
                return(q.Store
                       .NamedGraphs
                       .GetAll((s, p, o, g) =>
                               variableBinding.Add(s, sVariableNode, p, pVariableNode, o, oVariableNode, g,
                                                   variableDataSet.Variable)));

            default:
                throw new ArgumentOutOfRangeException("case");
            }
        }