[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:
parent
15cd6a8ac0
commit
656488b958
1 changed files with 9 additions and 10 deletions
|
@ -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();
|
||||||
|
@ -185,8 +184,8 @@ public class IndividualSDB extends IndividualImpl implements Individual {
|
||||||
}
|
}
|
||||||
|
|
||||||
static final boolean SKIP_INITIALIZATION = true;
|
static final boolean SKIP_INITIALIZATION = true;
|
||||||
|
|
||||||
public IndividualSDB(String individualURI,
|
public IndividualSDB(String individualURI,
|
||||||
DatasetWrapperFactory datasetWrapperFactory,
|
DatasetWrapperFactory datasetWrapperFactory,
|
||||||
SDBDatasetMode datasetMode,
|
SDBDatasetMode datasetMode,
|
||||||
WebappDaoFactorySDB wadf) throws IndividualNotFoundException {
|
WebappDaoFactorySDB wadf) throws IndividualNotFoundException {
|
||||||
|
|
Loading…
Add table
Reference in a new issue