NIHVIVO-3 code for permanent URIs
This commit is contained in:
parent
e1229bd38c
commit
d335d83d57
1 changed files with 101 additions and 1 deletions
|
@ -14,6 +14,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
@ -42,9 +43,11 @@ import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||||
import com.hp.hpl.jena.rdf.model.ModelMaker;
|
import com.hp.hpl.jena.rdf.model.ModelMaker;
|
||||||
import com.hp.hpl.jena.rdf.model.Property;
|
import com.hp.hpl.jena.rdf.model.Property;
|
||||||
import com.hp.hpl.jena.rdf.model.RDFNode;
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ResIterator;
|
||||||
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.rdf.model.StmtIterator;
|
||||||
import com.hp.hpl.jena.sdb.SDBFactory;
|
import com.hp.hpl.jena.sdb.SDBFactory;
|
||||||
import com.hp.hpl.jena.sdb.Store;
|
import com.hp.hpl.jena.sdb.Store;
|
||||||
import com.hp.hpl.jena.sdb.StoreDesc;
|
import com.hp.hpl.jena.sdb.StoreDesc;
|
||||||
|
@ -59,6 +62,7 @@ import edu.cornell.mannlib.vedit.controller.BaseEditController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.InsertException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.SimpleOntModelSelector;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.SimpleOntModelSelector;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
|
||||||
|
@ -95,6 +99,7 @@ public class JenaIngestController extends BaseEditController {
|
||||||
private static final String EXECUTE_WORKFLOW_JSP = "/jenaIngest/executeWorkflow.jsp";
|
private static final String EXECUTE_WORKFLOW_JSP = "/jenaIngest/executeWorkflow.jsp";
|
||||||
private static final String WORKFLOW_STEP_JSP = "/jenaIngest/workflowStep.jsp";
|
private static final String WORKFLOW_STEP_JSP = "/jenaIngest/workflowStep.jsp";
|
||||||
private static final String GENERATE_TBOX_JSP = "/jenaIngest/generateTBox.jsp";
|
private static final String GENERATE_TBOX_JSP = "/jenaIngest/generateTBox.jsp";
|
||||||
|
private static final String PERMANENT_URI = "/jenaIngest/permanentURI.jsp";
|
||||||
|
|
||||||
private static final String SPARQL_CONSTRUCT_CLASS = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#SPARQLCONSTRUCTQuery";
|
private static final String SPARQL_CONSTRUCT_CLASS = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#SPARQLCONSTRUCTQuery";
|
||||||
private static final String SPARQL_QUERYSTR_PROP = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#queryStr";
|
private static final String SPARQL_QUERYSTR_PROP = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#queryStr";
|
||||||
|
@ -397,7 +402,44 @@ public class JenaIngestController extends BaseEditController {
|
||||||
request.setAttribute("title","Generate TBox from Assertions Data");
|
request.setAttribute("title","Generate TBox from Assertions Data");
|
||||||
request.setAttribute("bodyJsp",GENERATE_TBOX_JSP);
|
request.setAttribute("bodyJsp",GENERATE_TBOX_JSP);
|
||||||
}
|
}
|
||||||
} else {
|
}else if("permanentURI".equals(actionStr)){
|
||||||
|
String modelName = vreq.getParameter("modelName");
|
||||||
|
String oldModel = vreq.getParameter("oldModel");
|
||||||
|
String newModel = vreq.getParameter("newModel");
|
||||||
|
String oldNamespace = vreq.getParameter("oldNamespace");
|
||||||
|
String newNamespace = vreq.getParameter("newNamespace");
|
||||||
|
String dNamespace = vreq.getParameter("defaultNamespace");
|
||||||
|
|
||||||
|
if(modelName!=null){
|
||||||
|
Model m = maker.getModel(modelName);
|
||||||
|
ArrayList namespaceList = new ArrayList();
|
||||||
|
Iterator namespaceItr = m.listNameSpaces();
|
||||||
|
|
||||||
|
if(namespaceItr!=null){
|
||||||
|
while(namespaceItr.hasNext()){
|
||||||
|
|
||||||
|
namespaceList.add(namespaceItr.next().toString());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
namespaceList.add("no resources present");
|
||||||
|
}
|
||||||
|
String defaultNamespace = getWebappDaoFactory().getDefaultNamespace();
|
||||||
|
request.setAttribute("modelName", modelName);
|
||||||
|
request.setAttribute("defaultNamespace", defaultNamespace);
|
||||||
|
request.setAttribute("namespaceList", namespaceList);
|
||||||
|
request.setAttribute("title","Permanent URI");
|
||||||
|
request.setAttribute("bodyJsp",PERMANENT_URI);
|
||||||
|
}
|
||||||
|
else if(oldModel!=null){
|
||||||
|
doPermanentURI(oldModel,newModel,oldNamespace,newNamespace,dNamespace,maker,vreq);
|
||||||
|
request.setAttribute("title","Ingest Menu");
|
||||||
|
request.setAttribute("bodyJsp",INGEST_MENU_JSP);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
request.setAttribute("title","Ingest Menu");
|
request.setAttribute("title","Ingest Menu");
|
||||||
request.setAttribute("bodyJsp",INGEST_MENU_JSP);
|
request.setAttribute("bodyJsp",INGEST_MENU_JSP);
|
||||||
}
|
}
|
||||||
|
@ -865,6 +907,64 @@ public class JenaIngestController extends BaseEditController {
|
||||||
new JenaIngestWorkflowProcessor(jenaOntModel.getIndividual(workflowURI),getVitroJenaModelMaker(vreq)).run(jenaOntModel.getIndividual(workflowStepURI));
|
new JenaIngestWorkflowProcessor(jenaOntModel.getIndividual(workflowURI),getVitroJenaModelMaker(vreq)).run(jenaOntModel.getIndividual(workflowStepURI));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doPermanentURI(String oldModel,String newModel,String oldNamespace,
|
||||||
|
String newNamespace,String dNamespace,ModelMaker maker,VitroRequest vreq){
|
||||||
|
|
||||||
|
|
||||||
|
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
|
||||||
|
Model m = maker.getModel(oldModel);
|
||||||
|
Model saveModel = maker.getModel(newModel);
|
||||||
|
ResIterator rsItr = m.listResourcesWithProperty((Property)null);
|
||||||
|
|
||||||
|
String uri = null;
|
||||||
|
while(rsItr.hasNext()){
|
||||||
|
Resource res = rsItr.next();
|
||||||
|
if(oldNamespace.equals(res.getNameSpace())){
|
||||||
|
Resource newRes = null;
|
||||||
|
if(!newNamespace.equals("")){
|
||||||
|
uri = getUnusedURI(newNamespace);
|
||||||
|
}
|
||||||
|
else if(!dNamespace.equals("")){
|
||||||
|
try{
|
||||||
|
uri = wdf.getIndividualDao().getUnusedURI(null);
|
||||||
|
}catch(InsertException ex){
|
||||||
|
log.error("could not create uri");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newRes = saveModel.createResource(uri);
|
||||||
|
StmtIterator stmItr = m.listStatements(res, (Property)null, (RDFNode)null);
|
||||||
|
while(stmItr.hasNext()){
|
||||||
|
Statement stmt = stmItr.next();
|
||||||
|
Property prop = stmt.getPredicate();
|
||||||
|
RDFNode node = stmt.getObject();
|
||||||
|
saveModel.add(newRes, prop, node);
|
||||||
|
}
|
||||||
|
res.removeAll((Property)null);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private String getUnusedURI(String newNamespace){
|
||||||
|
String uri = null;
|
||||||
|
SimpleOntModelSelector getModel = new SimpleOntModelSelector();
|
||||||
|
OntModel fullModel = getModel.getABoxModel();
|
||||||
|
Random random = new Random();
|
||||||
|
Resource res = null;
|
||||||
|
boolean check=true;
|
||||||
|
log.info("Going into loop");
|
||||||
|
do{
|
||||||
|
uri = newNamespace + "individual" + random.nextInt();
|
||||||
|
res = fullModel.getResource(uri);
|
||||||
|
check = fullModel.containsResource(res);
|
||||||
|
}while(check==true);
|
||||||
|
log.info("url assigned");
|
||||||
|
res.removeAll((Property)null);
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
|
||||||
public void prepareSmush (VitroRequest vreq) {
|
public void prepareSmush (VitroRequest vreq) {
|
||||||
String smushPropURI = vreq.getParameter("smushPropURI");
|
String smushPropURI = vreq.getParameter("smushPropURI");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue