VIVO-469 run the URL Finders from an RDFService, not an OntModel

This commit is contained in:
j2blake 2013-11-07 12:35:49 -05:00
parent 10631e1a29
commit 9f31c3f08b
3 changed files with 65 additions and 152 deletions

View file

@ -12,26 +12,21 @@ import java.util.Set;
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 com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.QuerySolutionMap; import com.hp.hpl.jena.query.QuerySolutionMap;
import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.Syntax;
import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory; import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.shared.Lock;
import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.search.beans.StatementToURIsToUpdate; import edu.cornell.mannlib.vitro.webapp.search.beans.StatementToURIsToUpdate;
public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate {
private OntModel model; private final RDFService rdfService;
private Set<String> alreadyChecked; private Set<String> alreadyChecked;
private long accumulatedTime = 0; private long accumulatedTime = 0;
@ -43,8 +38,8 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate {
private Log log = LogFactory.getLog(AdditionalURIsForContextNodes.class); private Log log = LogFactory.getLog(AdditionalURIsForContextNodes.class);
public AdditionalURIsForContextNodes( OntModel jenaOntModel){ public AdditionalURIsForContextNodes( RDFService rdfService){
this.model = jenaOntModel; this.rdfService = rdfService;
} }
@Override @Override
@ -93,41 +88,26 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate {
List<String> uriList = new ArrayList<String>(); List<String> uriList = new ArrayList<String>();
for(String query : queryList){ for (String query : queryList) {
//log.info("Executing query: "+ query);
QuerySolutionMap initialBinding = new QuerySolutionMap(); QuerySolutionMap initialBinding = new QuerySolutionMap();
Resource uriResource = ResourceFactory.createResource(uri); Resource uriResource = ResourceFactory.createResource(uri);
initialBinding.add("uri", uriResource); initialBinding.add("uri", uriResource);
Query sparqlQuery = QueryFactory.create( query, Syntax.syntaxARQ); ResultSet results = QueryUtils.getQueryResults(query,
model.getLock().enterCriticalSection(Lock.READ); initialBinding, rdfService);
try{ while (results.hasNext()) {
QueryExecution qExec = QueryExecutionFactory.create(sparqlQuery, model, initialBinding);
try{
ResultSet results = qExec.execSelect();
while(results.hasNext()){
QuerySolution soln = results.nextSolution(); QuerySolution soln = results.nextSolution();
Iterator<String> iter = soln.varNames() ; Iterator<String> iter = soln.varNames();
while( iter.hasNext()){ while (iter.hasNext()) {
String name = iter.next(); String name = iter.next();
RDFNode node = soln.get( name ); RDFNode node = soln.get(name);
if( node != null ){ if (node != null) {
uriList.add("" + node.toString()); uriList.add("" + node.toString());
}else{ } else {
log.debug(name + " is null"); log.debug(name + " is null");
} }
} }
} }
}catch(Throwable t){
log.error(t,t);
} finally{
qExec.close();
}
}finally{
model.getLock().leaveCriticalSection();
}
} }
if( log.isDebugEnabled() ) if( log.isDebugEnabled() )

View file

@ -5,9 +5,8 @@ package edu.cornell.mannlib.vitro.webapp.search.indexing;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.hp.hpl.jena.ontology.OntModel;
import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.search.beans.StatementToURIsToUpdate; import edu.cornell.mannlib.vitro.webapp.search.beans.StatementToURIsToUpdate;
/** /**
@ -16,12 +15,12 @@ import edu.cornell.mannlib.vitro.webapp.search.beans.StatementToURIsToUpdate;
*/ */
public class AdditionalUriFinders { public class AdditionalUriFinders {
public static List<StatementToURIsToUpdate> getList(OntModel jenaOntModel, public static List<StatementToURIsToUpdate> getList(RDFService rdfService,
IndividualDao indDao) { IndividualDao indDao) {
List<StatementToURIsToUpdate> uriFinders = new ArrayList<>(); List<StatementToURIsToUpdate> uriFinders = new ArrayList<>();
uriFinders.add(new AdditionalURIsForDataProperties()); uriFinders.add(new AdditionalURIsForDataProperties());
uriFinders.add(new AdditionalURIsForObjectProperties(jenaOntModel)); uriFinders.add(new AdditionalURIsForObjectProperties(rdfService));
uriFinders.add(new AdditionalURIsForContextNodes(jenaOntModel)); uriFinders.add(new AdditionalURIsForContextNodes(rdfService));
uriFinders.add(new AdditionalURIsForTypeStatements()); uriFinders.add(new AdditionalURIsForTypeStatements());
uriFinders.add(new URIsForClassGroupChange(indDao)); uriFinders.add(new URIsForClassGroupChange(indDao));
return uriFinders; return uriFinders;

View file

@ -12,11 +12,13 @@ import org.junit.Test;
import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.ModelFactory;
import edu.cornell.mannlib.vitro.webapp.search.indexing.AdditionalURIsForContextNodes; import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
public class AdditionalURIsForContextNodesTest { public class AdditionalURIsForContextNodesTest {
private AdditionalURIsForContextNodes uriFinder;
@Test @Test
public void testPositionChanges(){ public void testPositionChanges(){
String n3 = String n3 =
@ -59,12 +61,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivoweb.org/ontology/core#DateTimeInterval> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . \n" + "<http://vivoweb.org/ontology/core#DateTimeInterval> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . \n" +
"<http://vivoweb.org/ontology/core#Department> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . \n" ; "<http://vivoweb.org/ontology/core#Department> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . \n" ;
//make a test model with an person, an authorship context node and a book populateModelAndCreateUriFinder(n3);
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the org needs to be updated //if the person changes then the org needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n932"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n932");
@ -107,22 +104,16 @@ public class AdditionalURIsForContextNodesTest {
" core:contributingRole <http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n2577> . \n" + " core:contributingRole <http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n2577> . \n" +
" <http://vivo.scripps.edu/individual/n14979> a <http://xmlns.com/foaf/0.1/Person> , owl:Thing , <http://xmlns.com/foaf/0.1/Agent> . \n"; " <http://vivo.scripps.edu/individual/n14979> a <http://xmlns.com/foaf/0.1/Person> , owl:Thing , <http://xmlns.com/foaf/0.1/Agent> . \n";
//make a test model with an person, an authorship context node and a book //make a test model with an person, an authorship context node and a book
OntModel model = ModelFactory.createOntologyModel(); populateModelAndCreateUriFinder(n3);
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//get additional uris for org //get additional uris for org
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n2592"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://caruso-laptop.mannlib.cornell.edu:8090/vivo/individual/n2592");
assertTrue("did not find person for context node", uris.contains("http://vivo.scripps.edu/individual/n14979" )); assertTrue("did not find person for context node", uris.contains("http://vivo.scripps.edu/individual/n14979" ));
} }
@Test @Test
public void testLeaderRoleChanges(){ public void testLeaderRoleChanges(){
String n3= String n3=
@ -153,13 +144,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n7080> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " + "<http://vivo.scripps.edu/individual/n7080> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " +
"<http://vivo.scripps.edu/individual/n7080> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Organization> . \n " ; "<http://vivo.scripps.edu/individual/n7080> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Organization> . \n " ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a leader role node and a university
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the university needs to be updated //if the person changes then the university needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2027"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2027");
@ -168,8 +153,6 @@ public class AdditionalURIsForContextNodesTest {
//if the university changes then the person needs to be updated //if the university changes then the person needs to be updated
uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n7080"); uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n7080");
assertTrue("did not find person for context node", uris.contains("http://vivo.scripps.edu/individual/n2027" )); assertTrue("did not find person for context node", uris.contains("http://vivo.scripps.edu/individual/n2027" ));
} }
@ -204,14 +187,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n6004> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " + "<http://vivo.scripps.edu/individual/n6004> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " +
"<http://vivo.scripps.edu/individual/n6004> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Organization> . \n " ; "<http://vivo.scripps.edu/individual/n6004> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Organization> . \n " ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a member role node and a university
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the university needs to be updated //if the person changes then the university needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4519"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4519");
@ -255,14 +231,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n5177> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n5177> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n5177> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Process> . \n" ; "<http://vivo.scripps.edu/individual/n5177> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Process> . \n" ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a clinical role node and a project
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the project needs to be updated //if the person changes then the project needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4858"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4858");
@ -303,12 +272,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n4442> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n4442> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n4442> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.obolibrary.org/obo/ERO_0000005> . \n" ; "<http://vivo.scripps.edu/individual/n4442> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.obolibrary.org/obo/ERO_0000005> . \n" ;
//make a test model with an person, a clinical role node and a service populateModelAndCreateUriFinder(n3);
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the service needs to be updated //if the person changes then the service needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5651"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5651");
@ -350,13 +314,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n1305> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/NET/c4dm/event.owl#Event> . \n" + "<http://vivo.scripps.edu/individual/n1305> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/NET/c4dm/event.owl#Event> . \n" +
"<http://vivo.scripps.edu/individual/n1305> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" ; "<http://vivo.scripps.edu/individual/n1305> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a presenter role node and a presentation
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the presentation needs to be updated //if the person changes then the presentation needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5596"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5596");
@ -399,12 +357,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n4107> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " + "<http://vivo.scripps.edu/individual/n4107> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " +
"<http://vivo.scripps.edu/individual/n4107> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#InvitedTalk> . \n " ; "<http://vivo.scripps.edu/individual/n4107> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#InvitedTalk> . \n " ;
//make a test model with an person, a presenter role node and an invited talk populateModelAndCreateUriFinder(n3);
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the invited talk needs to be updated //if the person changes then the invited talk needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4112"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4112");
@ -447,13 +400,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n4252> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n4252> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n4252> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ; "<http://vivo.scripps.edu/individual/n4252> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a researcher role node and a grant
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the grant needs to be updated //if the person changes then the grant needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4957"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4957");
@ -497,14 +444,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n564> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " + "<http://vivo.scripps.edu/individual/n564> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n " +
"<http://vivo.scripps.edu/individual/n564> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Process> . \n " ; "<http://vivo.scripps.edu/individual/n564> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Process> . \n " ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a researcher role node and a project
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the project needs to be updated //if the person changes then the project needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2029"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2029");
@ -548,13 +488,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n1742> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n1742> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n1742> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ; "<http://vivo.scripps.edu/individual/n1742> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a principal investigator role node and a grant
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the person changes then the grant needs to be updated //if the person changes then the grant needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2368"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2368");
@ -598,12 +532,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n4931> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n4931> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n4931> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ; "<http://vivo.scripps.edu/individual/n4931> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ;
//make a test model with an person, a co-principal investigator role node and a grant populateModelAndCreateUriFinder(n3);
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the copi changes then the grant needs to be updated //if the copi changes then the grant needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n1373"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n1373");
@ -646,13 +575,7 @@ public class AdditionalURIsForContextNodesTest {
"<http://vivo.scripps.edu/individual/n160> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" + "<http://vivo.scripps.edu/individual/n160> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> . \n" +
"<http://vivo.scripps.edu/individual/n160> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ; "<http://vivo.scripps.edu/individual/n160> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Grant> . \n" ;
populateModelAndCreateUriFinder(n3);
//make a test model with an person, a investigator role node and a grant
OntModel model = ModelFactory.createOntologyModel();
model.read( new StringReader(n3), null, "N3");
//make an AdditionalURIsForContextNodesTest object with that model
AdditionalURIsForContextNodes uriFinder = new AdditionalURIsForContextNodes( model );
//if the investigator changes then the grant needs to be updated //if the investigator changes then the grant needs to be updated
List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5282"); List<String> uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5282");
@ -662,9 +585,20 @@ public class AdditionalURIsForContextNodesTest {
uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n160"); uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n160");
assertTrue("did not find investigator for grant", uris.contains("http://vivo.scripps.edu/individual/n5282" )); assertTrue("did not find investigator for grant", uris.contains("http://vivo.scripps.edu/individual/n5282" ));
} }
// ----------------------------------------------------------------------
// Helper methods
// ----------------------------------------------------------------------
/**
* Build a Model from this N3 string, and create a URI Finder based on that
* Model.
*/
private void populateModelAndCreateUriFinder(String n3String) {
OntModel model = ModelFactory.createOntologyModel();
model.read(new StringReader(n3String), null, "N3");
uriFinder = new AdditionalURIsForContextNodes(
new RDFServiceModel(model));
}
} }