NIHVIVO-330 code added for tool to merge individuals
This commit is contained in:
parent
0b02cc5fbb
commit
164946a8cf
1 changed files with 71 additions and 3 deletions
|
@ -30,6 +30,7 @@ import com.hp.hpl.jena.db.DBConnection;
|
|||
import com.hp.hpl.jena.ontology.Individual;
|
||||
import com.hp.hpl.jena.ontology.OntModel;
|
||||
import com.hp.hpl.jena.ontology.OntModelSpec;
|
||||
import com.hp.hpl.jena.ontology.OntProperty;
|
||||
import com.hp.hpl.jena.query.Query;
|
||||
import com.hp.hpl.jena.query.QueryExecException;
|
||||
import com.hp.hpl.jena.query.QueryExecution;
|
||||
|
@ -100,7 +101,8 @@ public class JenaIngestController extends BaseEditController {
|
|||
private static final String WORKFLOW_STEP_JSP = "/jenaIngest/workflowStep.jsp";
|
||||
private static final String GENERATE_TBOX_JSP = "/jenaIngest/generateTBox.jsp";
|
||||
private static final String PERMANENT_URI = "/jenaIngest/permanentURI.jsp";
|
||||
|
||||
private static final String MERGE_INDIVIDUALS = "/jenaIngest/mergeIndividuals.jsp";
|
||||
private static final String MERGE_RESULT = "/templates/edit/specific/merge_result.jsp";
|
||||
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";
|
||||
|
||||
|
@ -439,7 +441,25 @@ public class JenaIngestController extends BaseEditController {
|
|||
}
|
||||
|
||||
|
||||
} else {
|
||||
}
|
||||
else if("mergeIndividuals".equals(actionStr)){
|
||||
String uri1 = vreq.getParameter("uri1");
|
||||
String uri2 = vreq.getParameter("uri2");
|
||||
if(uri1!=null){
|
||||
String result = doMerge(uri1,uri2,response);
|
||||
request.setAttribute("result",result);
|
||||
request.setAttribute("title","Merge Individuals");
|
||||
request.setAttribute("bodyJsp",MERGE_RESULT);
|
||||
|
||||
}
|
||||
else{
|
||||
request.setAttribute("title","Merge Individuals");
|
||||
request.setAttribute("bodyJsp",MERGE_INDIVIDUALS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
request.setAttribute("title","Ingest Menu");
|
||||
request.setAttribute("bodyJsp",INGEST_MENU_JSP);
|
||||
}
|
||||
|
@ -966,7 +986,55 @@ public class JenaIngestController extends BaseEditController {
|
|||
res.removeAll((Property)null);
|
||||
return uri;
|
||||
}
|
||||
|
||||
private String doMerge(String uri1, String uri2,HttpServletResponse response){
|
||||
OntModel vitroJenaModel = (OntModel) getServletContext().getAttribute("baseOntModel");
|
||||
Resource res1 = vitroJenaModel.getResource(uri1);
|
||||
Resource res2 = vitroJenaModel.getResource(uri2);
|
||||
String result = null;
|
||||
StmtIterator stmtItr1 = vitroJenaModel.listStatements(res1,(Property)null,(RDFNode)null);
|
||||
StmtIterator stmtItr2 = vitroJenaModel.listStatements(res2,(Property)null,(RDFNode)null);
|
||||
if(!stmtItr1.hasNext()){
|
||||
result = "resource 1 not present";
|
||||
res1.removeAll((Property)null);
|
||||
return result;
|
||||
}
|
||||
else if(!stmtItr2.hasNext()){
|
||||
result = "resource 2 not present";
|
||||
res2.removeAll((Property)null);
|
||||
return result;
|
||||
}
|
||||
|
||||
int counter = 0;
|
||||
Model leftoverModel = ModelFactory.createDefaultModel();
|
||||
while(stmtItr2.hasNext()){
|
||||
|
||||
Statement stmt = stmtItr2.next();
|
||||
Property prop = stmt.getPredicate();
|
||||
OntProperty oprop = vitroJenaModel.getOntProperty(prop.getURI());
|
||||
if(oprop!=null && oprop.isFunctionalProperty()){
|
||||
leftoverModel.add(res2,stmt.getPredicate(),stmt.getObject());
|
||||
}
|
||||
else{
|
||||
vitroJenaModel.add(res1,stmt.getPredicate(),stmt.getObject());
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
res2.removeAll((Property)null);
|
||||
response.setContentType("RDF/XML-ABBREV");
|
||||
try{
|
||||
OutputStream outStream = response.getOutputStream();
|
||||
outStream.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes());
|
||||
leftoverModel.write( outStream,"RDF/XML-ABBREV");
|
||||
outStream.flush();
|
||||
outStream.close();
|
||||
}
|
||||
catch(IOException ioe){
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
result = "merging done for " + counter + " statements.";
|
||||
return result;
|
||||
|
||||
}
|
||||
public void prepareSmush (VitroRequest vreq) {
|
||||
String smushPropURI = vreq.getParameter("smushPropURI");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue