use of org.apache.jena.query.Query in project opentheso by miledrousset.
the class AlignmentQuery method queryDBPedia.
/**
* Cette fonction permet de récupérer les alignements présents sur DBPedia
* pour un concept passé en paramètre
*
* @param idC
* @param idTheso
* @param lexicalValue
* @param lang
* @param source
* @return
*/
public ArrayList<NodeAlignment> queryDBPedia(String idC, String idTheso, String lexicalValue, String lang, String source) {
listeAlign = new ArrayList<>();
if (lexicalValue.contains(" ")) {
lexicalValue = lexicalValue.substring(0, lexicalValue.indexOf(" "));
}
lexicalValue = String.valueOf(lexicalValue.charAt(0)).toUpperCase() + lexicalValue.substring(1);
String sparqlQueryString1 = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" + "PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>" + "PREFIX foaf: <http://xmlns.com/foaf/0.1/>" + "SELECT * WHERE {" + " ?s rdfs:label ?label ." + " ?s rdfs:comment ?comment ." + " ?s dbpedia-owl:thumbnail ?thumbnail ." + " ?s foaf:isPrimaryTopicOf ?primaryTopicOf ." + " FILTER(regex(?s,\"resource/" + lexicalValue + "*\"))" + " FILTER(lang(?label) = \"" + lang + "\")" + " FILTER(lang(?comment) = \"" + lang + "\")" + " }";
// System.out.println(sparqlQueryString1);
Query query = QueryFactory.create(sparqlQueryString1);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
ResultSet results = qexec.execSelect();
while (results.hasNext()) {
QuerySolution qs = results.next();
NodeAlignment na = new NodeAlignment();
na.setInternal_id_concept(idC);
na.setInternal_id_thesaurus(idTheso);
na.setConcept_target(qs.get("label").toString());
na.setDef_target(qs.get("comment").toString());
na.setThesaurus_target(source);
na.setUri_target(qs.get("primaryTopicOf").toString());
listeAlign.add(na);
}
qexec.close();
return listeAlign;
}
use of org.apache.jena.query.Query in project opentheso by miledrousset.
the class AlignmentQuery method queryBNF.
// private getAlignementFromSkos(){
// }
// //////////////////////////////////////
// //////////////////////////////////////
// //// /////////////
// //// SPARQL /////////////
// //// /////////////
// //////////////////////////////////////
// //////////////////////////////////////
/**
* cette fonction permet de récuperer les alignements de la BNF
* requête de type Sparql
* @param idC
* @param idTheso
* @param lexicalValue
* @param lang
* @param requete
* @param source
* @return
*/
public ArrayList<NodeAlignment> queryBNF(String idC, String idTheso, String lexicalValue, String lang, String requete, String source) {
listeAlign = new ArrayList<>();
// lexicalValue = lexicalValue.replaceAll(" ", "%20");
requete = requete.replace("##lang##", "\"" + lang + "\"");
if (lexicalValue.contains(" ")) {
String[] valueTemp = lexicalValue.split(" ");
boolean first = true;
for (String valuetemp : valueTemp) {
requete = requete.substring(0, requete.length() - 1);
if (first) {
requete = requete.replace("##value##", valuetemp.trim());
first = false;
} else {
requete = requete.concat(" && regex(?value, \"" + valuetemp.trim() + "\",\"i\")");
}
}
requete = requete + ")";
} else {
requete = requete.replace("##value##", "\"" + lexicalValue + "\"");
}
/*requete = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>" +
" PREFIX xml: <http://www.w3.org/XML/1998/namespace>" +
" SELECT ?instrument ?prop ?value" +
" where { <http://data.bnf.fr/ark:/12148/cb119367821> skos:narrower+ ?instrument. ?instrument ?prop ?value. FILTER( (regex(?prop,skos:prefLabel) || regex(?prop,skos:altLabel)) && regex(?value, \"cornemuse\",\"i\")) filter(lang(?value) =\"fr\")} LIMIT 10";
*/
// System.out.println(requete);
Query query = QueryFactory.create(requete);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://data.bnf.fr/sparql", query);
ResultSet results = qexec.execSelect();
while (results.hasNext()) {
QuerySolution qs = results.next();
NodeAlignment na = new NodeAlignment();
na.setInternal_id_concept(idC);
na.setInternal_id_thesaurus(idTheso);
na.setConcept_target(qs.get("value").toString());
// qs.get("comment").toString());
na.setDef_target("");
na.setThesaurus_target(source);
na.setUri_target(qs.get("instrument").toString());
listeAlign.add(na);
}
qexec.close();
return listeAlign;
}
use of org.apache.jena.query.Query in project jena by apache.
the class Service method exec.
/**
* Executes a service operator
*
* @param op
* Service
* @param context
* Context
* @return Query iterator of service results
*/
public static QueryIterator exec(OpService op, Context context) {
if (context != null && context.isFalse(serviceAllowed))
throw new QueryExecException("SERVICE execution disabled");
if (!op.getService().isURI())
throw new QueryExecException("Service URI not bound: " + op.getService());
// This relies on the observation that the query was originally correct,
// so reversing the scope renaming is safe (it merely restores the
// algebra expression).
// Any variables that reappear should be internal ones that were hidden
// by renaming in the first place.
// Any substitution is also safe because it replaced variables by
// values.
Op opRemote = Rename.reverseVarRename(op.getSubOp(), true);
// JENA-494 There is a bug here that the renaming means that if this is
// deeply nested and joined to other things at the same level of you end
// up with the variables being disjoint and the same results
// The naive fix for this is to map the variables visible in the inner
// operator to those visible in the rewritten operator
// There may be some cases where the re-mapping is incorrect due to
// deeply nested SERVICE clauses
Map<Var, Var> varMapping = new HashMap<>();
Set<Var> originalVars = OpVars.visibleVars(op);
Set<Var> remoteVars = OpVars.visibleVars(opRemote);
boolean requiresRemapping = false;
for (Var v : originalVars) {
if (v.getName().contains("/")) {
// A variable which was scope renamed so has a different name
String origName = v.getName().substring(v.getName().lastIndexOf('/') + 1);
Var remoteVar = Var.alloc(origName);
if (remoteVars.contains(remoteVar)) {
varMapping.put(remoteVar, v);
requiresRemapping = true;
}
} else {
// A variable which does not have a different name
if (remoteVars.contains(v))
varMapping.put(v, v);
}
}
// Explain.explain("HTTP", opRemote, context) ;
Query query;
//@formatter:off
// Comment (for the future?)
// if ( false )
// {
// // ***** Interacts with substitution.
// Element el = op.getServiceElement().getElement() ;
// if ( el instanceof ElementSubQuery )
// query = ((ElementSubQuery)el).getQuery() ;
// else
// {
// query = QueryFactory.create() ;
// query.setQueryPattern(el) ;
// query.setResultVars() ;
// }
// }
// else
//@formatter:on
query = OpAsQuery.asQuery(opRemote);
Explain.explain("HTTP", query, context);
String uri = op.getService().getURI();
HttpQuery httpQuery = configureQuery(uri, context, query);
InputStream in = httpQuery.exec();
// Read the whole of the results now.
// Avoids the problems with calling back into the same system e.g.
// Fuseki+SERVICE <http://localhost:3030/...>
ResultSet rs = ResultSetFactory.fromXML(in);
QueryIterator qIter = QueryIter.materialize(new QueryIteratorResultSet(rs));
// And close connection now, not when qIter is closed.
IO.close(in);
// nested SERVICE clauses
if (requiresRemapping) {
qIter = QueryIter.map(qIter, varMapping);
}
return qIter;
}
use of org.apache.jena.query.Query in project jena by apache.
the class ExprUtils method parse.
public static Expr parse(String s, PrefixMapping pmap) {
Query query = QueryFactory.make();
query.setPrefixMapping(pmap);
return parse(query, s, true);
}
use of org.apache.jena.query.Query in project jena by apache.
the class QueryTransformOps method shallowCopy.
public static Query shallowCopy(Query query) {
QueryShallowCopy copy = new QueryShallowCopy();
query.visit(copy);
Query q2 = copy.newQuery;
return q2;
}
Aggregations