/**
* OpenKM, Open Document Management System (http://www.openkm.com)
* Copyright (c) 2006-2011 Paco Avila & Josep Llort
*
* No bytes were intentionally harmed during the development of this application.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.openkm.kea.tree;
import org.openrdf.query.MalformedQueryException;
import org.openrdf.query.QueryLanguage;
import org.openrdf.query.TupleQuery;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.RepositoryException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.openkm.core.Config;
/**
* QueryBank
*
* @author jllort
*
*/
public class QueryBank {
private static Logger log = LoggerFactory.getLogger(QueryBank.class);
private static QueryBank instance;
/**
* QueryBank
*/
private QueryBank() { }
/**
* QueryBank
*
* @return
*/
public static synchronized QueryBank getInstance() {
if (instance == null) {
instance = new QueryBank();
}
return instance;
}
/**
* getTreeTopQuery
*
* @param con Repository connection
*
* @return
*/
public TupleQuery getTreeTopQuery(RepositoryConnection con) {
try {
// query = "SELECT C, tipus FROM {C} rdfs:subClassOf {tipus} ";
//
// query = "SELECT C, tipus FROM {C} tipus {Z} "; // Treu totes les relacions
//
// // La consulta del miracle que treu els fills !!! l'invent de la comparacio esta en transformar-ho a string
// // en la comparació
// query = "SELECT C, tipus FROM {C} rdfs:subClassOf {tipus} where xsd:string(tipus) = \"http://www.fao.org/aos/agrovoc#c_50113\"";
//
// // Aquesta es la consulta que ens retorna els nodes que no tenen pare
// query = "SELECT C, tipus FROM {C} Y {tipus}; [rdfs:subClassOf {classe}] where not bound(classe) ";
// String query = "SELECT DISTINCT UID, TEXT FROM {UID} Y {OBJECT}, {UID} rdfs:label {TEXT} ; "+
// "[rdfs:subClassOf {CLAZZ}] where not bound(CLAZZ) and lang(TEXT)=\"es\" "+
// "USING NAMESPACE " +
// "foaf=<http://xmlns.com/foaf/0.1/>, " +
// "dcterms=<http://purl.org/dc/terms/>, "+
// "rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>, " +
// "owl=<http://www.w3.org/2002/07/owl#>, " +
// "rdfs=<http://www.w3.org/2000/01/rdf-schema#>, " +
// "skos=<http://www.w3.org/2004/02/skos/core#>, " +
// "dc=<http://purl.org/dc/elements/1.1/> ";
//
// System.out.println(query);
return con.prepareTupleQuery(QueryLanguage.SERQL, Config.KEA_THESAURUS_TREE_ROOT);
} catch (RepositoryException e) {
log.error("Error preparing tree top query",e);
} catch (MalformedQueryException e) {
log.error("malformed rMap query",e);
}
return null;
}
/**
* getTreeNextLayerQuery
*
* @param parentID The parent id
* @param con The repository connection
*
* @return
*/
public TupleQuery getTreeNextLayerQuery(String RDFparentID, RepositoryConnection con) {
try {
// String query = "SELECT DISTINCT UID, TEXT FROM {UID} rdfs:subClassOf {CLAZZ}, {UID} rdfs:label {TEXT} "+
// "where xsd:string(CLAZZ) = \"RDFparentID\" and lang(TEXT)=\"es\" "+
// "USING NAMESPACE " +
// "foaf=<http://xmlns.com/foaf/0.1/>, " +
// "dcterms=<http://purl.org/dc/terms/>, "+
// "rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>, " +
// "owl=<http://www.w3.org/2002/07/owl#>, " +
// "rdfs=<http://www.w3.org/2000/01/rdf-schema#>, " +
// "skos=<http://www.w3.org/2004/02/skos/core#>, " +
// "dc=<http://purl.org/dc/elements/1.1/> ";
//
// query = query.replace("RDFparentID", RDFparentID);
return con.prepareTupleQuery(QueryLanguage.SERQL, Config.KEA_THESAURUS_TREE_CHILDS.replace("RDFparentID", RDFparentID));
} catch (RepositoryException e) {
log.error("Error preparing rMap query",e);
} catch (MalformedQueryException e) {
log.error("malformed next tree layer query",e);
}
return null;
}
}