Example #1
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");
            }
        }
Example #2
0
        private IEnumerable <SparqlResult> SetVariablesValuesWithFilters(SparqlResult variableBinding, StoreCallCase @case)
        {
            switch (@case)
            {
            case StoreCallCase.spo:
                return(spo(Subject, Predicate, Object, variableBinding));

            case StoreCallCase.spO:
                return(ApplyFilters(variableBinding, oVariableNode, q.Store.GetTriplesWithSubjectPredicate(Subject, Predicate)));

            case StoreCallCase.sPo:
                return(ApplyFilters(variableBinding, pVariableNode, q.Store.GetTriplesWithSubjectObject(Subject, Object)));

            case StoreCallCase.sPO:
                return(ApplyFilters(variableBinding, q.Store.GetTriplesWithSubject(Subject)));

            case StoreCallCase.Spo:
                return(ApplyFilters(variableBinding, sVariableNode, q.Store.GetSubjects(Predicate, Object)));

            case StoreCallCase.SpO:
                return(ApplyFilters(variableBinding, q.Store.GetTriplesWithPredicate(Predicate)));

            case StoreCallCase.SPo:
                return(ApplyFilters(variableBinding, q.Store.GetTriplesWithObject(Object)));

            case StoreCallCase.SPO:
                return(ApplyFilters(variableBinding, q.Store.GetTriples((s, p, o) => new TripleOVStruct(s, p, o))));


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

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

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

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

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

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

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

            case StoreCallCase.gSPO:
                return(ApplyFilters(variableBinding, graphs.SelectMany(g => q.Store.NamedGraphs.GetTriplesFromGraph(g, (s, p, o) => new TripleOVStruct(s, p, o)))));

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

            case StoreCallCase.GspO:
                if (variableDataSet.Any())
                {
                    return(ApplyFilters(variableBinding, oVariableNode, variableDataSet.SelectMany(g => q.Store
                                                                                                   .NamedGraphs
                                                                                                   .GetObject(Subject, Predicate, g))));
                }
                else
                {
                    return(ApplyFilters(variableBinding, q.Store
                                        .NamedGraphs
                                        .GetTriplesWithSubjectPredicate(Subject, Predicate)));
                }

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

            case StoreCallCase.GsPO:
                if (variableDataSet.Any())
                {
                    return(ApplyFilters(variableBinding, variableDataSet.SelectMany(g => q.Store
                                                                                    .NamedGraphs
                                                                                    .GetTriplesWithSubjectFromGraph(Subject, g))));
                }
                else
                {
                    return(ApplyFilters(variableBinding, q.Store
                                        .NamedGraphs
                                        .GetTriplesWithSubject(Subject)));
                }

            case StoreCallCase.GSpo:
                if (variableDataSet.Any())
                {
                    return(ApplyFilters(variableBinding, sVariableNode, variableDataSet.SelectMany(g => q.Store
                                                                                                   .NamedGraphs
                                                                                                   .GetSubject(Predicate, Object, g))));
                }
                else
                {
                    return(ApplyFilters(variableBinding, q.Store
                                        .NamedGraphs
                                        .GetTriplesWithPredicateObject(Predicate, Object)));
                }

            case StoreCallCase.GSpO:
                if (variableDataSet.Any())
                {
                    return(ApplyFilters(variableBinding,
                                        variableDataSet.SelectMany(g => q.Store.NamedGraphs.GetTriplesWithPredicateFromGraph(Predicate, g))));
                }
                else
                {
                    return(ApplyFilters(variableBinding, q.Store.NamedGraphs.GetTriplesWithPredicate(Predicate)));
                }

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

            case StoreCallCase.GSPO:
                if (variableDataSet.Any())
                {
                    return(ApplyFilters(variableBinding, variableDataSet.SelectMany(g =>
                                                                                    q.Store
                                                                                    .NamedGraphs
                                                                                    .GetTriplesFromGraph(g, (s, p, o) => new QuadOVStruct(s, p, o, g)))));
                }
                return(ApplyFilters(variableBinding,
                                    q.Store
                                    .NamedGraphs
                                    .GetAll((s, p, o, g) =>
                                            new QuadOVStruct(s, p, o, g))));

            default:
                throw new ArgumentOutOfRangeException("case");
            }
        }
        private IEnumerable <SparqlResult> SetVariablesValues(SparqlResult variableBinding, StoreCallCase @case)
        {
            switch (@case)
            {
            case StoreCallCase.spo:
                foreach (var r in   q.StoreCalls.spo(Subject, Predicate, Object, variableBinding))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.spO:
                foreach (var r in   q.StoreCalls.spO(Subject, Predicate, oVariableNode, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[oVariableNode] = null;
                break;

            case StoreCallCase.sPo:
                foreach (var r in   q.StoreCalls.sPo(Subject, pVariableNode, Object, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[pVariableNode] = null;
                break;

            case StoreCallCase.sPO:
                foreach (var r in   q.StoreCalls.sPO(Subject, pVariableNode, oVariableNode, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[pVariableNode] = null;
                variableBinding[oVariableNode] = null;
                break;

            case StoreCallCase.Spo:
                foreach (var r in   q.StoreCalls.Spo(sVariableNode, Predicate, Object, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[sVariableNode] = null;
                break;

            case StoreCallCase.SpO:
                foreach (var r in   q.StoreCalls.SpO(sVariableNode, Predicate, oVariableNode, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[sVariableNode] = null;
                variableBinding[oVariableNode] = null;
                break;

            case StoreCallCase.SPo:
                foreach (var r in   q.StoreCalls.SPo(sVariableNode, pVariableNode, Object, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[sVariableNode] = null;
                variableBinding[pVariableNode] = null;
                break;

            case StoreCallCase.SPO:
                foreach (var r in   q.StoreCalls.SPO(sVariableNode, pVariableNode, oVariableNode, variableBinding))
                {
                    yield return(r);
                }
                variableBinding[sVariableNode] = null;
                variableBinding[pVariableNode] = null;
                variableBinding[oVariableNode] = null;
                break;

            //todo
            case StoreCallCase.gspo:
                foreach (var r in   q.StoreCalls.spoGraphs(Subject, Predicate, Object, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gspO:
                foreach (var r in   q.StoreCalls.spOGraphs(Subject, Predicate, oVariableNode, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gsPo:
                foreach (var r in   q.StoreCalls.sPoGraphs(Subject, pVariableNode, Object, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gsPO:
                foreach (var r in   q.StoreCalls.sPOGraphs(Subject, pVariableNode, oVariableNode, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gSpo:
                foreach (var r in   q.StoreCalls.SpoGraphs(sVariableNode, Predicate, Object, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gSpO:
                foreach (var r in   q.StoreCalls.SpOGraphs(sVariableNode, Predicate, oVariableNode, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gSPo:
                foreach (var r in   q.StoreCalls.SPoGraphs(sVariableNode, pVariableNode, Object, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.gSPO:
                foreach (var r in   q.StoreCalls.SPOGraphs(sVariableNode, pVariableNode, oVariableNode, variableBinding, graphs))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.Gspo:
                foreach (var r in   q.StoreCalls.spoVarGraphs(Subject, Predicate, Object, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GspO:
                foreach (var r in   q.StoreCalls.spOVarGraphs(Subject, Predicate, oVariableNode, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GsPo:
                foreach (var r in   q.StoreCalls.sPoVarGraphs(Subject, pVariableNode, Object, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GsPO:
                foreach (var r in   q.StoreCalls.sPOVarGraphs(Subject, pVariableNode, oVariableNode, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GSpo:
                foreach (var r in   q.StoreCalls.SpoVarGraphs(sVariableNode, Predicate, Object, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GSpO:
                foreach (var r in   q.StoreCalls.SpOVarGraphs(sVariableNode, Predicate, oVariableNode, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GSPo:
                foreach (var r in   q.StoreCalls.SPoVarGraphs(sVariableNode, pVariableNode, Object, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

            case StoreCallCase.GSPO:
                foreach (var r in   q.StoreCalls.SPOVarGraphs(sVariableNode, pVariableNode, oVariableNode, variableBinding, variableDataSet))
                {
                    yield return(r);
                }
                break;

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