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"); } }
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; }