package at.ac.univie.mminf.qskos4j.issues.conceptscheme;
import at.ac.univie.mminf.qskos4j.util.vocab.SparqlPrefix;
import org.openrdf.OpenRDFException;
import org.openrdf.model.Resource;
import org.openrdf.query.QueryLanguage;
import org.openrdf.repository.RepositoryConnection;
/**
* Created by christian on 26.09.14.
*/
class ConceptSchemeUtil {
public static boolean inSameConceptScheme(Resource concept, Resource otherConcept, RepositoryConnection repCon)
throws OpenRDFException
{
return repCon.prepareBooleanQuery(QueryLanguage.SPARQL, createInSchemeQuery(concept, otherConcept)).evaluate();
}
private static String createInSchemeQuery(Resource... concepts) {
String query = SparqlPrefix.SKOS + "ASK {";
for (Resource concept : concepts) {
query += "<" +concept.stringValue()+ "> skos:inScheme ?conceptScheme .";
}
return query + "}";
}
public static boolean inNoConceptScheme(Resource concept, Resource otherConcept, RepositoryConnection repCon)
throws OpenRDFException
{
boolean conceptInScheme = repCon.prepareBooleanQuery(QueryLanguage.SPARQL, createInSchemeQuery(concept)).evaluate();
boolean otherConceptInScheme = repCon.prepareBooleanQuery(QueryLanguage.SPARQL, createInSchemeQuery(otherConcept)).evaluate();
return !conceptInScheme || !otherConceptInScheme;
}
}