Esempio n. 1
0
 private IEnumerable <SparqlQuery> GetRemoteQueries(SparqlEvaluationContext context, ISet[] bindings)
 {
     if (bindings.Length == 0)
     {
         // No pre-bound variables/BINDINGS clause so just return the query
         yield return(GetRemoteQuery(context));
     }
     else
     {
         // Split bindings in chunks and inject them
         foreach (var chunk in bindings.ChunkBy(100))
         {
             var vars = chunk.SelectMany(x => x.Variables).Distinct();
             var data = new BindingsPattern(vars);
             foreach (var set in chunk)
             {
                 var tuple = new BindingTuple(
                     new List <string>(set.Variables),
                     new List <PatternItem>(set.Values.Select(x => new NodeMatchPattern(x))));
                 data.AddTuple(tuple);
             }
             var sparqlQuery = GetRemoteQuery(context);
             sparqlQuery.RootGraphPattern.AddInlineData(data);
             yield return(sparqlQuery);
         }
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Creates a new Set from a Binding Tuple
 /// </summary>
 /// <param name="tuple">Tuple</param>
 internal Set(BindingTuple tuple)
 {
     this._values = new Dictionary <string, INode>();
     foreach (KeyValuePair <String, PatternItem> binding in tuple.Values)
     {
         this.Add(binding.Key, tuple[binding.Key]);
     }
 }