[VIVO-1031] Shave off 2/3rds of time required to check if any triples exist by using Jena API instead of SPARQL ASK

This commit is contained in:
grahamtriggs 2015-09-29 21:59:01 +01:00
parent 15cd6a8ac0
commit 656488b958

View file

@ -17,6 +17,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.hp.hpl.jena.graph.NodeFactory;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.joda.time.DateTime; import org.joda.time.DateTime;
@ -62,6 +63,8 @@ import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils; import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils;
import javax.xml.soap.Node;
public class IndividualSDB extends IndividualImpl implements Individual { public class IndividualSDB extends IndividualImpl implements Individual {
private static final Log log = LogFactory.getLog( private static final Log log = LogFactory.getLog(
@ -166,18 +169,14 @@ public class IndividualSDB extends IndividualImpl implements Individual {
} }
private boolean noTriplesFor(String individualURI) { private boolean noTriplesFor(String individualURI) {
String ask = "ASK { <" + individualURI + "> ?p ?o }";
DatasetWrapper w = getDatasetWrapper(); DatasetWrapper w = getDatasetWrapper();
Dataset dataset = w.getDataset(); Dataset dataset = w.getDataset();
dataset.getLock().enterCriticalSection(Lock.READ); dataset.getLock().enterCriticalSection(Lock.READ);
try { try {
Query askQuery = QueryFactory.create(ask, Syntax.syntaxARQ); return !dataset.asDatasetGraph().contains(NodeFactory.createURI(individualURI),
QueryExecution qe = QueryExecutionFactory.create(askQuery, dataset); com.hp.hpl.jena.graph.Node.ANY,
try { com.hp.hpl.jena.graph.Node.ANY,
return !qe.execAsk(); com.hp.hpl.jena.graph.Node.ANY);
} finally {
qe.close();
}
} finally { } finally {
dataset.getLock().leaveCriticalSection(); dataset.getLock().leaveCriticalSection();
w.close(); w.close();