Updates for including termType as information to be displayed in custom list view as well as editing page (and added in the N3).
This commit is contained in:
parent
dd44eeb314
commit
1c4d73da07
5 changed files with 78 additions and 41 deletions
|
@ -9,11 +9,12 @@
|
||||||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
PREFIX core: <http://vivoweb.org/ontology/core#>
|
||||||
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
|
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
|
||||||
|
|
||||||
SELECT ?terminologyContextNode ?referencedTerm ?entryTerm ?termLabel WHERE {
|
SELECT ?terminologyContextNode ?referencedTerm ?entryTerm ?termLabel ?termType WHERE {
|
||||||
?subject ?property ?terminologyContextNode .
|
?subject ?property ?terminologyContextNode .
|
||||||
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
||||||
?terminologyContextNode core:entryTerm ?entryTerm .
|
?terminologyContextNode core:entryTerm ?entryTerm .
|
||||||
?terminologyContextNode core:termLabel ?termLabel .
|
?terminologyContextNode core:termLabel ?termLabel .
|
||||||
|
?terminologyContextNode core:termType ?termType .
|
||||||
} ORDER BY ?termLabel
|
} ORDER BY ?termLabel
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,13 +28,14 @@
|
||||||
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
||||||
?terminologyContextNode core:entryTerm ?entryTerm .
|
?terminologyContextNode core:entryTerm ?entryTerm .
|
||||||
?terminologyContextNode core:termLabel ?termLabel .
|
?terminologyContextNode core:termLabel ?termLabel .
|
||||||
|
?terminologyContextNode core:termType ?termType .
|
||||||
} WHERE {
|
} WHERE {
|
||||||
|
|
||||||
?subject ?property ?terminologyContextNode .
|
?subject ?property ?terminologyContextNode .
|
||||||
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
||||||
?terminologyContextNode core:entryTerm ?entryTerm .
|
?terminologyContextNode core:entryTerm ?entryTerm .
|
||||||
?terminologyContextNode core:termLabel ?termLabel .
|
?terminologyContextNode core:termLabel ?termLabel .
|
||||||
|
?terminologyContextNode core:termType ?termType .
|
||||||
}
|
}
|
||||||
</query-construct>
|
</query-construct>
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ SPARQL queries for existing values. --%>
|
||||||
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
?terminologyContextNode core:referencedTerm ?referencedTerm .
|
||||||
?terminologyContextNode core:entryTerm ?entryTerm .
|
?terminologyContextNode core:entryTerm ?entryTerm .
|
||||||
?terminologyContextNode core:termLabel ?termLabel .
|
?terminologyContextNode core:termLabel ?termLabel .
|
||||||
|
?terminologyContextNode core:termType ?termType .
|
||||||
</v:jsonset>
|
</v:jsonset>
|
||||||
|
|
||||||
<c:set var="returnPathAfterSubmit" value="/edit/editRequestDispatch.jsp?subjectUri=${subjectUri}&predicateUri=${predicateUri}" />
|
<c:set var="returnPathAfterSubmit" value="/edit/editRequestDispatch.jsp?subjectUri=${subjectUri}&predicateUri=${predicateUri}" />
|
||||||
|
@ -82,7 +83,7 @@ SPARQL queries for existing values. --%>
|
||||||
"urisInScope" : { },
|
"urisInScope" : { },
|
||||||
"literalsInScope": { },
|
"literalsInScope": { },
|
||||||
"urisOnForm" : [ "referencedTerm" ],
|
"urisOnForm" : [ "referencedTerm" ],
|
||||||
"literalsOnForm" : [ "entryTerm", "termLabel" ],
|
"literalsOnForm" : [ "entryTerm", "termLabel", "termType" ],
|
||||||
"filesOnForm" : [ ],
|
"filesOnForm" : [ ],
|
||||||
"sparqlForLiterals" : { },
|
"sparqlForLiterals" : { },
|
||||||
"sparqlForUris" : { },
|
"sparqlForUris" : { },
|
||||||
|
@ -107,7 +108,7 @@ SPARQL queries for existing values. --%>
|
||||||
"literalOptions" : [ ],
|
"literalOptions" : [ ],
|
||||||
"predicateUri" : "",
|
"predicateUri" : "",
|
||||||
"objectClassUri" : "",
|
"objectClassUri" : "",
|
||||||
"rangeDatatypeUri" : "",
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
"rangeLang" : "",
|
"rangeLang" : "",
|
||||||
"assertions" : [ "${n3ForTerminology}" ]
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
},
|
},
|
||||||
|
@ -118,7 +119,18 @@ SPARQL queries for existing values. --%>
|
||||||
"literalOptions" : [ ],
|
"literalOptions" : [ ],
|
||||||
"predicateUri" : "",
|
"predicateUri" : "",
|
||||||
"objectClassUri" : "",
|
"objectClassUri" : "",
|
||||||
"rangeDatatypeUri" : "",
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
|
"rangeLang" : "",
|
||||||
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
|
}
|
||||||
|
,"termType" : {
|
||||||
|
"newResource" : "false",
|
||||||
|
"validators" : [ "nonempty" ],
|
||||||
|
"optionsType" : "UNDEFINED",
|
||||||
|
"literalOptions" : [ ],
|
||||||
|
"predicateUri" : "",
|
||||||
|
"objectClassUri" : "",
|
||||||
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
"rangeLang" : "",
|
"rangeLang" : "",
|
||||||
"assertions" : [ "${n3ForTerminology}" ]
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
}
|
}
|
||||||
|
@ -201,14 +213,16 @@ SPARQL queries for existing values. --%>
|
||||||
|
|
||||||
<%
|
<%
|
||||||
String termLabelUri = vivoCore + "termLabel";
|
String termLabelUri = vivoCore + "termLabel";
|
||||||
|
String termTypeUri = vivoCore + "termType";
|
||||||
for ( Individual termNode : terminologyAnnotationNodes ) {
|
for ( Individual termNode : terminologyAnnotationNodes ) {
|
||||||
request.setAttribute("termNodeUri", termNode.getURI());
|
request.setAttribute("termNodeUri", termNode.getURI());
|
||||||
//Get label and type only as mirroring authorship where labels but no links for individuals incoldued
|
//Get label and type only as mirroring authorship where labels but no links for individuals incoldued
|
||||||
DataPropertyStatement termLabelStatement = termNode.getDataPropertyStatement(termLabelUri);
|
DataPropertyStatement termLabelStatement = termNode.getDataPropertyStatement(termLabelUri);
|
||||||
String termLabel = termLabelStatement.getData();
|
String termLabel = termLabelStatement.getData();
|
||||||
request.setAttribute("termLabel", termLabel);
|
request.setAttribute("termLabel", termLabel);
|
||||||
//Possible to get referenced term using object property statement?
|
DataPropertyStatement termTypeStatement = termNode.getDataPropertyStatement(termTypeUri);
|
||||||
|
String termType = termTypeStatement.getData();
|
||||||
|
request.setAttribute("termType", termType);
|
||||||
%>
|
%>
|
||||||
<li class="existingTerm">
|
<li class="existingTerm">
|
||||||
<%-- span.author will be used in the next phase, when we display a message that the author has been
|
<%-- span.author will be used in the next phase, when we display a message that the author has been
|
||||||
|
@ -218,7 +232,7 @@ SPARQL queries for existing values. --%>
|
||||||
for the case when it's followed by an em tag - we want the width to apply to the whole thing. --%>
|
for the case when it's followed by an em tag - we want the width to apply to the whole thing. --%>
|
||||||
<span class="termWrapper">
|
<span class="termWrapper">
|
||||||
<span class="termLabel">
|
<span class="termLabel">
|
||||||
${termLabel}</span>
|
${termLabel} (${termType})</span>
|
||||||
</span>
|
</span>
|
||||||
<c:url var="deleteTermHref" value="/edit/primitiveDelete" />
|
<c:url var="deleteTermHref" value="/edit/primitiveDelete" />
|
||||||
<a href="${deleteTermHref}" class="remove">Remove</a>
|
<a href="${deleteTermHref}" class="remove">Remove</a>
|
||||||
|
|
|
@ -14,5 +14,5 @@
|
||||||
<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the
|
<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the
|
||||||
next statement -->
|
next statement -->
|
||||||
<#macro showTerm statement>
|
<#macro showTerm statement>
|
||||||
<a href="${statement.referencedTerm}">${statement.termLabel}</a>
|
<a href="${statement.referencedTerm}">${statement.termLabel} (${statement.termType})</a>
|
||||||
</#macro>
|
</#macro>
|
|
@ -25,12 +25,19 @@ import freemarker.ext.beans.BeansWrapper;
|
||||||
import freemarker.template.DefaultObjectWrapper;
|
import freemarker.template.DefaultObjectWrapper;
|
||||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field;
|
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field;
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
|
import com.hp.hpl.jena.vocabulary.XSD;
|
||||||
public class ProcessTerminologyController extends VitroHttpServlet {
|
public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final Log log = LogFactory.getLog(ProcessTerminologyController.class);
|
private static final Log log = LogFactory.getLog(ProcessTerminologyController.class);
|
||||||
private static final String submissionUrl = "/edit/processRdfForm2.jsp";
|
private static final String submissionUrl = "/edit/processRdfForm2.jsp";
|
||||||
|
//Field names/variables names for n3 - these will have numbers added as suffix if more than one term
|
||||||
|
private static String referencedBase = "referencedTerm";
|
||||||
|
private static String entryBase = "entryTerm";
|
||||||
|
private static String labelBase = "termLabel";
|
||||||
|
private static String typeBase = "termType";
|
||||||
|
//String datatype
|
||||||
|
private static String xsdStringType = XSD.xstring.toString();
|
||||||
@Override
|
@Override
|
||||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
super.doPost(req, resp);
|
super.doPost(req, resp);
|
||||||
|
@ -101,19 +108,19 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
String[] termsArray = termParam.split(",");
|
String[] termsArray = termParam.split(",");
|
||||||
String[] termLabels = labelParam.split(",");
|
String[] termLabels = labelParam.split(",");
|
||||||
String[] termTypes = typeParam.split(",");
|
String[] termTypes = typeParam.split(",");
|
||||||
String entryTerm = vreq.getParameter("entryTerm");
|
|
||||||
int numberParameters = termsArray.length;
|
int numberParameters = termsArray.length;
|
||||||
int index;
|
int index;
|
||||||
String referencedBase = "referencedTerm";
|
|
||||||
String labelBase = "termLabel";
|
|
||||||
String termBase = "termType";
|
|
||||||
//Should already include entry term so no need to include here
|
//Should already include entry term so no need to include here
|
||||||
|
//If that changes, then add entry term here
|
||||||
|
//String entryTerm = vreq.getParameter("entryTerm");
|
||||||
//newUrl += "&entryTerm=" + URLEncoder.encode(entryTerm);
|
//newUrl += "&entryTerm=" + URLEncoder.encode(entryTerm);
|
||||||
//Add entry
|
//Process values and generate url matching field name to value
|
||||||
for(index = 1; index <= numberParameters; index++) {
|
for(index = 1; index <= numberParameters; index++) {
|
||||||
String referencedInputName = referencedBase + index;
|
String referencedInputName = referencedBase + index;
|
||||||
String termLabelInputName = labelBase + index;
|
String termLabelInputName = labelBase + index;
|
||||||
String termTypeInputName =termBase + index;
|
String termTypeInputName =typeBase + index;
|
||||||
//array is set to start at 0, not 1
|
//array is set to start at 0, not 1
|
||||||
String referencedTerm = termsArray[index - 1];
|
String referencedTerm = termsArray[index - 1];
|
||||||
String termLabel = termLabels[index - 1];
|
String termLabel = termLabels[index - 1];
|
||||||
|
@ -159,7 +166,7 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
"literalOptions" : [ ],
|
"literalOptions" : [ ],
|
||||||
"predicateUri" : "",
|
"predicateUri" : "",
|
||||||
"objectClassUri" : "",
|
"objectClassUri" : "",
|
||||||
"rangeDatatypeUri" : "",
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
"rangeLang" : "",
|
"rangeLang" : "",
|
||||||
"assertions" : [ "${n3ForTerminology}" ]
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
},
|
},
|
||||||
|
@ -170,7 +177,18 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
"literalOptions" : [ ],
|
"literalOptions" : [ ],
|
||||||
"predicateUri" : "",
|
"predicateUri" : "",
|
||||||
"objectClassUri" : "",
|
"objectClassUri" : "",
|
||||||
"rangeDatatypeUri" : "",
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
|
"rangeLang" : "",
|
||||||
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
|
}
|
||||||
|
,"termType" : {
|
||||||
|
"newResource" : "false",
|
||||||
|
"validators" : [ "nonempty" ],
|
||||||
|
"optionsType" : "UNDEFINED",
|
||||||
|
"literalOptions" : [ ],
|
||||||
|
"predicateUri" : "",
|
||||||
|
"objectClassUri" : "",
|
||||||
|
"rangeDatatypeUri" : "${stringDatatypeUriJson}",
|
||||||
"rangeLang" : "",
|
"rangeLang" : "",
|
||||||
"assertions" : [ "${n3ForTerminology}" ]
|
"assertions" : [ "${n3ForTerminology}" ]
|
||||||
}
|
}
|
||||||
|
@ -179,23 +197,20 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
private void addFields(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) {
|
private void addFields(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) {
|
||||||
Map<String, Field> fieldMap = new HashMap<String, Field>();
|
Map<String, Field> fieldMap = new HashMap<String, Field>();
|
||||||
int index;
|
int index;
|
||||||
String referencedBase = "referencedTerm";
|
|
||||||
String entryBase = "entryTerm";
|
|
||||||
String labelBase = "termLabel";
|
|
||||||
|
|
||||||
//Entry only needs to be added once
|
//Entry only needs to be added once
|
||||||
fieldMap.put(entryBase, generateField(editConfig));
|
fieldMap.put(entryBase, generateField(editConfig, xsdStringType));
|
||||||
|
|
||||||
//First one already included so add new ones here
|
//First one already included so add new ones here
|
||||||
for(index = 1; index <= numberTerms; index++) {
|
for(index = 1; index <= numberTerms; index++) {
|
||||||
int suffix = index;
|
int suffix = index;
|
||||||
String referencedTerm = referencedBase + suffix;
|
String referencedTerm = referencedBase + suffix;
|
||||||
String label = labelBase + suffix;
|
String label = labelBase + suffix;
|
||||||
//need to add termType
|
String type = typeBase + suffix;
|
||||||
//Generate Field for each
|
//Generate Field for each
|
||||||
fieldMap.put(referencedTerm, generateField(editConfig));
|
fieldMap.put(referencedTerm, generateField(editConfig, null));
|
||||||
fieldMap.put(label, generateField(editConfig));
|
fieldMap.put(label, generateField(editConfig, xsdStringType));
|
||||||
//termType would also go in here
|
fieldMap.put(type, generateField(editConfig, xsdStringType));
|
||||||
}
|
}
|
||||||
editConfig.setFields(fieldMap);
|
editConfig.setFields(fieldMap);
|
||||||
}
|
}
|
||||||
|
@ -210,7 +225,7 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
"rangeDatatypeUri" : "",
|
"rangeDatatypeUri" : "",
|
||||||
"rangeLang" : "",
|
"rangeLang" : "",
|
||||||
"assertions" : [ "${n3ForTerminology}" ]*/
|
"assertions" : [ "${n3ForTerminology}" ]*/
|
||||||
private Field generateField(EditConfiguration editConfig) {
|
private Field generateField(EditConfiguration editConfig, String dataType) {
|
||||||
List<String> n3Required = editConfig.getN3Required();
|
List<String> n3Required = editConfig.getN3Required();
|
||||||
Field field = new Field();
|
Field field = new Field();
|
||||||
field.setNewResource(false);
|
field.setNewResource(false);
|
||||||
|
@ -221,8 +236,13 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
field.setLiteralOptions(new ArrayList<List<String>>());
|
field.setLiteralOptions(new ArrayList<List<String>>());
|
||||||
field.setPredicateUri("");
|
field.setPredicateUri("");
|
||||||
field.setObjectClassUri("");
|
field.setObjectClassUri("");
|
||||||
field.setRangeDatatypeUri("");
|
if(dataType == null || dataType.isEmpty()) {
|
||||||
field.setRangeLang("");
|
field.setRangeLang("");
|
||||||
|
field.setRangeDatatypeUri("");
|
||||||
|
} else {
|
||||||
|
field.setRangeDatatypeUri(dataType);
|
||||||
|
}
|
||||||
|
|
||||||
field.setAssertions(n3Required);
|
field.setAssertions(n3Required);
|
||||||
return field;
|
return field;
|
||||||
}
|
}
|
||||||
|
@ -238,9 +258,6 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
List<String> literalsOnForm = new ArrayList<String>();
|
List<String> literalsOnForm = new ArrayList<String>();
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
String referencedBase = "referencedTerm";
|
|
||||||
String entryBase = "entryTerm";
|
|
||||||
String labelBase = "termLabel";
|
|
||||||
//entry term needs to be added only once
|
//entry term needs to be added only once
|
||||||
literalsOnForm.add(entryBase);
|
literalsOnForm.add(entryBase);
|
||||||
|
|
||||||
|
@ -249,8 +266,10 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
int suffix = index;
|
int suffix = index;
|
||||||
String referencedTerm = referencedBase + suffix;
|
String referencedTerm = referencedBase + suffix;
|
||||||
String label = labelBase + suffix;
|
String label = labelBase + suffix;
|
||||||
|
String type = typeBase + suffix;
|
||||||
urisOnForm.add(referencedTerm);
|
urisOnForm.add(referencedTerm);
|
||||||
literalsOnForm.add(label);
|
literalsOnForm.add(label);
|
||||||
|
literalsOnForm.add(type);
|
||||||
}
|
}
|
||||||
editConfig.setUrisOnform(urisOnForm);
|
editConfig.setUrisOnform(urisOnForm);
|
||||||
editConfig.setLiteralsOnForm(literalsOnForm);
|
editConfig.setLiteralsOnForm(literalsOnForm);
|
||||||
|
@ -268,21 +287,23 @@ public class ProcessTerminologyController extends VitroHttpServlet {
|
||||||
List<String> n3Required = new ArrayList<String>();
|
List<String> n3Required = new ArrayList<String>();
|
||||||
int index;
|
int index;
|
||||||
String nodeBase = "?terminologyContextNode";
|
String nodeBase = "?terminologyContextNode";
|
||||||
String referencedBase = "?referencedTerm";
|
String entryVar = "?" + entryBase;
|
||||||
//there's only one entry term in this case
|
String referencedVar = "?" + referencedBase;
|
||||||
String entryBase = "?entryTerm";
|
String labelVar = "?" + labelBase;
|
||||||
String labelBase = "?termLabel";
|
String typeVar = "?" + typeBase;
|
||||||
String prefixStr = "@prefix core: <http://vivoweb.org/ontology/core#> .";
|
String prefixStr = "@prefix core: <http://vivoweb.org/ontology/core#> .";
|
||||||
//First one already included so add new ones here
|
//First one already included so add new ones here
|
||||||
for(index = 1; index <= numberTerms; index++) {
|
for(index = 1; index <= numberTerms; index++) {
|
||||||
int suffix = index;
|
int suffix = index;
|
||||||
String node = nodeBase + suffix;
|
String node = nodeBase + suffix;
|
||||||
String referencedTerm = referencedBase + suffix;
|
String referencedTerm = referencedVar + suffix;
|
||||||
String label = labelBase + suffix;
|
String label = labelVar + suffix;
|
||||||
|
String type = typeVar + suffix;
|
||||||
String n3String = prefixStr;
|
String n3String = prefixStr;
|
||||||
n3String += "?subject ?predicate " + node + " . " +
|
n3String += "?subject ?predicate " + node + " . " +
|
||||||
node + " core:entryTerm " + entryBase + " . " +
|
node + " core:entryTerm " + entryVar + " . " +
|
||||||
node + " core:termLabel " + label + " . " +
|
node + " core:termLabel " + label + " . " +
|
||||||
|
node + " core:termType " + type + " . " +
|
||||||
node + " core:referencedTerm " + referencedTerm + " . ";
|
node + " core:referencedTerm " + referencedTerm + " . ";
|
||||||
n3Required.add(n3String);
|
n3Required.add(n3String);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue