/** * This version is broken - use * MapServiceResourceShape.createLookupService(qef, shape); * @param sparqlService * @param mappedConcept * @return */ @Deprecated public static <T> LookupService<Node, T> createLookupService(QueryExecutionFactory sparqlService, MappedConcept<T> mappedConcept) { if(true) { throw new RuntimeException("This method is broken. Use MapServiceResourceShape.createLookupService(qef, shape) instead)"); } Concept concept = mappedConcept.getConcept(); Query query = concept.asQuery(); query.setQueryResultStar(true); // TODO Set up a projection using the grouping variable and the variables referenced by the aggregator LookupService<Node, Table> base = new LookupServiceSparqlQuery(sparqlService, query, concept.getVar()); FunctionResultSetAggregate<T> transform = FunctionResultSetAggregate.create(mappedConcept.getAggregator()); LookupService<Node, T> result = LookupServiceTransformValue.create(base, transform); return result; } }
public static void main(String[] args) { QueryExecutionFactory sparqlService = new QueryExecutionFactoryHttp("http://dbpedia.org/sparql", "http://dbpedia.org"); Var var = Var.alloc("s"); Query query = QueryFactory.create("Prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> Prefix dbpo: <http://dbpedia.org/ontology/> Select ?s ?w { ?s a dbpo:Castle ; geo:geometry ?w }"); LookupService<Node, Table> ls = new LookupServiceSparqlQuery(sparqlService, query, var); ls = LookupServicePartition.create(ls, 1); ls = LookupServiceCacheMem.create(ls); List<Node> keys = new ArrayList<Node>(); keys.add(NodeFactory.createURI("http://dbpedia.org/resource/Marksburg")); keys.add(NodeFactory.createURI("http://dbpedia.org/resource/Rosenburg")); Map<Node, Table> map = ls.fetchMap(keys); System.out.println(map); } }
public static <T> LookupService<Node, T> createLookupService(QueryExecutionFactory sparqlService, MappedQuery<T> mappedQuery) { PartitionedQuery1 partQuery = mappedQuery.getPartQuery(); Query query = partQuery.getQuery(); Var partVar = partQuery.getPartitionVar(); Agg<T> agg = mappedQuery.getAgg(); LookupService<Node, Table> base = new LookupServiceSparqlQuery(sparqlService, query, partVar); FunctionResultSetAggregate<T> transform = FunctionResultSetAggregate.create(agg); LookupService<Node, T> result = LookupServiceTransformValue.create(base, transform); return result; }
public static LookupService<Node, Node> createLookupServiceMostRecentChangeSet(QueryExecutionFactory qef, Node service, Node graph) { Query query = queryMostRecentChangeSet; if(service != null || graph != null) { query = query.cloneQuery(); } if(service != null) { QueryUtils.injectFilter(query, new E_Equals(new ExprVar(Vars.y), NodeValue.makeNode(service))); //QueryUtils.injectElement(query, ElementUtils.createElement(new Triple(Vars.s, NodeFactory.createURI("http://purl.org/vocab/changeset/schema#service"), Vars.y))); //query.getProject().add(Vars.y); // new E_Equals(new ExprVar(Vars.y), new ExprVar(graph))); } if(graph != null) { QueryUtils.injectFilter(query, new E_Equals(new ExprVar(Vars.z), NodeValue.makeNode(graph))); //QueryUtils.injectElement(query, ElementUtils.createElement(new Triple(Vars.s, NodeFactory.createURI("http://purl.org/vocab/changeset/schema#graph"), Vars.z))); } LookupService<Node, Table> ls = new LookupServiceSparqlQuery(qef, query, Vars.o); // We filter by o, but project by s LookupService<Node, Node> result = LookupServiceTransformValue.create(ls, (k, v) -> FunctionTableFirstRow.fn.andThen( FunctionBindingMapper.create(BindingMapperProjectVar.create(Vars.s))).apply(v)); return result; }