/// <summary> /// Adds a graph portion to the repository /// </summary> public void Insert(LabelledTreeNode <object, Term> graph) { var body = SparqlBgpWriter.ConvertQueryModelToSparql(graph); var query = $"INSERT DATA {{{body}}}"; Client.ExecuteQuery(query, DefaultSource.EndPoint); }
/// <summary> /// Evaluates a graph query model against a graph source /// </summary> /// <param name="queryModel">tree model of the query</param> /// <param name="offset">number of solutions to skip</param> /// <param name="limit">maximum number of solutions to take</param> /// <param name="filter">a bgp filter</param> /// <param name="source">query target</param> /// <returns>A collection of trees</returns> public IEnumerable <LabelledTreeNode <object, Term> > Evaluate(LabelledTreeNode <object, Term> queryModel, int?offset, int?limit, IFilter filter, IGraphSource source) { var queryString = SparqlBgpWriter.Write(queryModel, offset, limit, filter); var client = new SparqlJsonClient(); var responseModel = client.ExecuteQuery(queryString, source.EndPoint); foreach (var solution in responseModel.Results.Bindings) { yield return(CreateResultGraph(solution, queryModel)); } }