package org.aksw.jena_sparql_api.update; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.function.Function; import org.aksw.jena_sparql_api.core.FluentBase; import org.aksw.jena_sparql_api.core.FluentQueryExecutionFactory; import org.aksw.jena_sparql_api.core.QueryExecutionFactory; import org.aksw.jena_sparql_api.core.SparqlService; import org.aksw.jena_sparql_api.core.SparqlServiceImpl; import org.aksw.jena_sparql_api.core.SparqlServiceReference; import org.aksw.jena_sparql_api.core.UpdateExecutionFactory; import org.aksw.jena_sparql_api.core.UpdateExecutionFactoryHttp; import org.aksw.jena_sparql_api.http.QueryExecutionFactoryHttp; import org.apache.http.client.HttpClient; import org.apache.jena.query.Dataset; import org.apache.jena.query.DatasetFactory; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.sparql.core.DatasetDescription; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.DatasetGraphFactory; import org.apache.jena.sparql.util.Context; import com.google.common.base.Supplier; public class FluentSparqlService<P> extends FluentBase<SparqlService, P> { //private FluentQueryExecutionFactory fluentQef = //private FluentUpdateExecutionFactory fluentUef; // protected SparqlService sparqlService; // private FluentQueryExecutionFactoryEndable fluentQef; // private FluentUpdateExecutionFactoryEndable fluentUef; // public FluentSparqlService(SparqlService sparqlService) { this.fn = sparqlService; // this.fluentQef = new FluentQueryExecutionFactoryEndable(this); // this.fluentUef = new FluentUpdateExecutionFactoryEndable(this); } // // public FluentQueryExecutionFactoryEndable configureQuery() { // return fluentQef; // } // // public FluentUpdateExecutionFactoryEndable configureUpdate() { // return fluentUef; // } // // public SparqlService create() { // //QueryExecutionFactory qef = fluentQef.create(); // //UpdateExecutionFactory uef = fluentUef.create(); // return sparqlService; // } // // public <T extends UpdateExecutionFactory & DatasetListenable> FluentSparqlService withUpdateListeners(Function<SparqlService, T> updateStrategy, Collection<DatasetListener> listeners) { // // QueryExecutionFactory qef = sparqlService.getQueryExecutionFactory(); // T uef = updateStrategy.apply(sparqlService); // uef.getDatasetListeners().addAll(listeners); // //UpdateContext updateContext = new UpdateContext(sparqlService, batchSize, containmentChecker); // // //UpdateExecutionFactory uef = new UpdateExecutionFactoryEventSource(updateContext); // sparqlService = new SparqlServiceImpl(qef, uef); // // return this; // } // public FluentSparqlServiceFn<FluentSparqlService<P>> config() { final FluentSparqlService<P> self = this; final FluentSparqlServiceFn<FluentSparqlService<P>> result = new FluentSparqlServiceFn<FluentSparqlService<P>>(); result.setParentSupplier(new Supplier<FluentSparqlService<P>>() { @Override public FluentSparqlService<P> get() { Function<SparqlService, SparqlService> transform = result.value(); fn = transform.apply(fn); return self; } }); return result; } public static FluentSparqlService<?> forModel() { Model model = ModelFactory.createDefaultModel(); FluentSparqlService<?> result = from(model); return result; } public static FluentSparqlService<?> from(Model model) { FluentSparqlService<?> result = from(model, null); return result; } public static FluentSparqlService<?> from(Model model, Context context) { QueryExecutionFactory qef = FluentQueryExecutionFactory.model(model, context).create(); UpdateExecutionFactory uef = FluentUpdateExecutionFactory.from(model, context).create(); FluentSparqlService<?> result = from(qef, uef); return result; } public static FluentSparqlService<?> forDataset() { Dataset dataset = DatasetFactory.createMem(); FluentSparqlService<?> result = from(dataset); return result; } public static FluentSparqlService<?> from(Dataset dataset) { QueryExecutionFactory qef = FluentQueryExecutionFactory.from(dataset).create(); UpdateExecutionFactory uef = FluentUpdateExecutionFactory.from(dataset).create(); FluentSparqlService<?> result = from(qef, uef); return result; } public static FluentSparqlService<?> forDatasetGraph() { DatasetGraph datasetGraph = DatasetGraphFactory.createMem(); FluentSparqlService<?> result = from(datasetGraph); return result; } public static FluentSparqlService<?> from(DatasetGraph datasetGraph) { FluentSparqlService<?> result = from(datasetGraph, null); return result; } public static FluentSparqlService<?> from(DatasetGraph datasetGraph, Context context) { QueryExecutionFactory qef = FluentQueryExecutionFactory.from(datasetGraph, context).create(); UpdateExecutionFactory uef = FluentUpdateExecutionFactory.from(datasetGraph, context).create(); FluentSparqlService<?> result = from(qef, uef); return result; } public static FluentSparqlService<?> http(String service, String ... defaultGraphs) { return http(service, Arrays.asList(defaultGraphs)); } public static FluentSparqlService<?> http(String service, String defaultGraph, HttpClient httpClient) { return http(service, new DatasetDescription(Collections.singletonList(defaultGraph), Collections.<String>emptyList()), httpClient); } public static FluentSparqlService<?> http(SparqlServiceReference sparqlService) { return http(sparqlService.getServiceURL(), sparqlService.getDatasetDescription()); } public static FluentSparqlService<?> http(String service, List<String> defaultGraphs) { DatasetDescription datasetDescription = new DatasetDescription(defaultGraphs, Collections.<String>emptyList()); return http(service, datasetDescription, null); } public static FluentSparqlService<?> http(String service, DatasetDescription datasetDescription) { return http(service, datasetDescription, null); } public static FluentSparqlService<?> http(String service, DatasetDescription datasetDescription, HttpClient httpClient) { QueryExecutionFactory qef = new QueryExecutionFactoryHttp(service, datasetDescription, httpClient); UpdateExecutionFactory uef = new UpdateExecutionFactoryHttp(service, datasetDescription, httpClient); return from(service, datasetDescription, qef, uef); } public static FluentSparqlService<?> from(QueryExecutionFactory qef, UpdateExecutionFactory uef) { FluentSparqlService<?> result = from(null, null, qef, uef); return result; } public static FluentSparqlService<?> from(String serviceUri, DatasetDescription datasetDescription, QueryExecutionFactory qef, UpdateExecutionFactory uef) { SparqlService sparqlService = new SparqlServiceImpl(serviceUri, datasetDescription, qef, uef); FluentSparqlService<?> result = from(sparqlService); return result; } public static FluentSparqlService<?> from(SparqlService sparqlService) { FluentSparqlService<?> result = new FluentSparqlService<Object>(sparqlService); return result; } }