diff --git a/productMods/config/listViewConfig-terminologyAnnotation.xml b/productMods/config/listViewConfig-terminologyAnnotation.xml
index f447c925..67a32514 100644
--- a/productMods/config/listViewConfig-terminologyAnnotation.xml
+++ b/productMods/config/listViewConfig-terminologyAnnotation.xml
@@ -9,11 +9,12 @@
PREFIX core: <http://vivoweb.org/ontology/core#>
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 .
?terminologyContextNode core:referencedTerm ?referencedTerm .
?terminologyContextNode core:entryTerm ?entryTerm .
?terminologyContextNode core:termLabel ?termLabel .
+ ?terminologyContextNode core:termType ?termType .
} ORDER BY ?termLabel
@@ -27,13 +28,14 @@
?terminologyContextNode core:referencedTerm ?referencedTerm .
?terminologyContextNode core:entryTerm ?entryTerm .
?terminologyContextNode core:termLabel ?termLabel .
+ ?terminologyContextNode core:termType ?termType .
} WHERE {
?subject ?property ?terminologyContextNode .
?terminologyContextNode core:referencedTerm ?referencedTerm .
?terminologyContextNode core:entryTerm ?entryTerm .
?terminologyContextNode core:termLabel ?termLabel .
-
+ ?terminologyContextNode core:termType ?termType .
}
diff --git a/productMods/edit/forms/js/addTerminology.js b/productMods/edit/forms/js/addTerminology.js
index e9a20255..7f09fbc7 100644
--- a/productMods/edit/forms/js/addTerminology.js
+++ b/productMods/edit/forms/js/addTerminology.js
@@ -189,7 +189,7 @@ var addTerminologyForm = {
"
" +
"" +
"" +
- label + "( " + type + ")" +
+ label + " (" + type + ")" +
"" + definition + "" +
"
" +
"";
diff --git a/productMods/edit/forms/terminologyAnnotation.jsp b/productMods/edit/forms/terminologyAnnotation.jsp
index 2b53885d..57146759 100644
--- a/productMods/edit/forms/terminologyAnnotation.jsp
+++ b/productMods/edit/forms/terminologyAnnotation.jsp
@@ -58,6 +58,7 @@ SPARQL queries for existing values. --%>
?terminologyContextNode core:referencedTerm ?referencedTerm .
?terminologyContextNode core:entryTerm ?entryTerm .
?terminologyContextNode core:termLabel ?termLabel .
+ ?terminologyContextNode core:termType ?termType .
@@ -82,7 +83,7 @@ SPARQL queries for existing values. --%>
"urisInScope" : { },
"literalsInScope": { },
"urisOnForm" : [ "referencedTerm" ],
- "literalsOnForm" : [ "entryTerm", "termLabel" ],
+ "literalsOnForm" : [ "entryTerm", "termLabel", "termType" ],
"filesOnForm" : [ ],
"sparqlForLiterals" : { },
"sparqlForUris" : { },
@@ -107,7 +108,7 @@ SPARQL queries for existing values. --%>
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
"rangeLang" : "",
"assertions" : [ "${n3ForTerminology}" ]
},
@@ -118,7 +119,18 @@ SPARQL queries for existing values. --%>
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
+ "rangeLang" : "",
+ "assertions" : [ "${n3ForTerminology}" ]
+ }
+ ,"termType" : {
+ "newResource" : "false",
+ "validators" : [ "nonempty" ],
+ "optionsType" : "UNDEFINED",
+ "literalOptions" : [ ],
+ "predicateUri" : "",
+ "objectClassUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
"rangeLang" : "",
"assertions" : [ "${n3ForTerminology}" ]
}
@@ -201,14 +213,16 @@ SPARQL queries for existing values. --%>
<%
String termLabelUri = vivoCore + "termLabel";
+ String termTypeUri = vivoCore + "termType";
for ( Individual termNode : terminologyAnnotationNodes ) {
request.setAttribute("termNodeUri", termNode.getURI());
//Get label and type only as mirroring authorship where labels but no links for individuals incoldued
DataPropertyStatement termLabelStatement = termNode.getDataPropertyStatement(termLabelUri);
String termLabel = termLabelStatement.getData();
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);
%>
<%-- 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. --%>
- ${termLabel}
+ ${termLabel} (${termType})
Remove
diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-terminologyAnnotation.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-terminologyAnnotation.ftl
index 65002b9b..7e3c35b2 100644
--- a/productMods/templates/freemarker/body/partials/individual/propStatement-terminologyAnnotation.ftl
+++ b/productMods/templates/freemarker/body/partials/individual/propStatement-terminologyAnnotation.ftl
@@ -14,5 +14,5 @@
<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the
next statement -->
<#macro showTerm statement>
- ${statement.termLabel}
+ ${statement.termLabel} (${statement.termType})
#macro>
\ No newline at end of file
diff --git a/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java b/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java
index a59985e7..bd0a545f 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java
@@ -25,12 +25,19 @@ import freemarker.ext.beans.BeansWrapper;
import freemarker.template.DefaultObjectWrapper;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field;
import javax.servlet.RequestDispatcher;
+import com.hp.hpl.jena.vocabulary.XSD;
public class ProcessTerminologyController extends VitroHttpServlet {
private static final long serialVersionUID = 1L;
private static final Log log = LogFactory.getLog(ProcessTerminologyController.class);
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
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
@@ -101,19 +108,19 @@ public class ProcessTerminologyController extends VitroHttpServlet {
String[] termsArray = termParam.split(",");
String[] termLabels = labelParam.split(",");
String[] termTypes = typeParam.split(",");
- String entryTerm = vreq.getParameter("entryTerm");
+
int numberParameters = termsArray.length;
int index;
- String referencedBase = "referencedTerm";
- String labelBase = "termLabel";
- String termBase = "termType";
+
//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);
- //Add entry
+ //Process values and generate url matching field name to value
for(index = 1; index <= numberParameters; index++) {
String referencedInputName = referencedBase + index;
String termLabelInputName = labelBase + index;
- String termTypeInputName =termBase + index;
+ String termTypeInputName =typeBase + index;
//array is set to start at 0, not 1
String referencedTerm = termsArray[index - 1];
String termLabel = termLabels[index - 1];
@@ -141,7 +148,7 @@ public class ProcessTerminologyController extends VitroHttpServlet {
}
/*
- * "referencedTerm" : {
+ * "referencedTerm" : {
"newResource" : "false",
"validators" : [ "nonempty" ],
"optionsType" : "UNDEFINED", //UNSURE WHAT TO KEEP HERE
@@ -159,7 +166,7 @@ public class ProcessTerminologyController extends VitroHttpServlet {
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
"rangeLang" : "",
"assertions" : [ "${n3ForTerminology}" ]
},
@@ -170,7 +177,18 @@ public class ProcessTerminologyController extends VitroHttpServlet {
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
+ "rangeLang" : "",
+ "assertions" : [ "${n3ForTerminology}" ]
+ }
+ ,"termType" : {
+ "newResource" : "false",
+ "validators" : [ "nonempty" ],
+ "optionsType" : "UNDEFINED",
+ "literalOptions" : [ ],
+ "predicateUri" : "",
+ "objectClassUri" : "",
+ "rangeDatatypeUri" : "${stringDatatypeUriJson}",
"rangeLang" : "",
"assertions" : [ "${n3ForTerminology}" ]
}
@@ -179,23 +197,20 @@ public class ProcessTerminologyController extends VitroHttpServlet {
private void addFields(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) {
Map fieldMap = new HashMap();
int index;
- String referencedBase = "referencedTerm";
- String entryBase = "entryTerm";
- String labelBase = "termLabel";
//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
for(index = 1; index <= numberTerms; index++) {
int suffix = index;
String referencedTerm = referencedBase + suffix;
String label = labelBase + suffix;
- //need to add termType
+ String type = typeBase + suffix;
//Generate Field for each
- fieldMap.put(referencedTerm, generateField(editConfig));
- fieldMap.put(label, generateField(editConfig));
- //termType would also go in here
+ fieldMap.put(referencedTerm, generateField(editConfig, null));
+ fieldMap.put(label, generateField(editConfig, xsdStringType));
+ fieldMap.put(type, generateField(editConfig, xsdStringType));
}
editConfig.setFields(fieldMap);
}
@@ -210,7 +225,7 @@ public class ProcessTerminologyController extends VitroHttpServlet {
"rangeDatatypeUri" : "",
"rangeLang" : "",
"assertions" : [ "${n3ForTerminology}" ]*/
- private Field generateField(EditConfiguration editConfig) {
+ private Field generateField(EditConfiguration editConfig, String dataType) {
List n3Required = editConfig.getN3Required();
Field field = new Field();
field.setNewResource(false);
@@ -221,8 +236,13 @@ public class ProcessTerminologyController extends VitroHttpServlet {
field.setLiteralOptions(new ArrayList>());
field.setPredicateUri("");
field.setObjectClassUri("");
- field.setRangeDatatypeUri("");
- field.setRangeLang("");
+ if(dataType == null || dataType.isEmpty()) {
+ field.setRangeLang("");
+ field.setRangeDatatypeUri("");
+ } else {
+ field.setRangeDatatypeUri(dataType);
+ }
+
field.setAssertions(n3Required);
return field;
}
@@ -238,9 +258,6 @@ public class ProcessTerminologyController extends VitroHttpServlet {
List literalsOnForm = new ArrayList();
int index;
- String referencedBase = "referencedTerm";
- String entryBase = "entryTerm";
- String labelBase = "termLabel";
//entry term needs to be added only once
literalsOnForm.add(entryBase);
@@ -249,8 +266,10 @@ public class ProcessTerminologyController extends VitroHttpServlet {
int suffix = index;
String referencedTerm = referencedBase + suffix;
String label = labelBase + suffix;
+ String type = typeBase + suffix;
urisOnForm.add(referencedTerm);
literalsOnForm.add(label);
+ literalsOnForm.add(type);
}
editConfig.setUrisOnform(urisOnForm);
editConfig.setLiteralsOnForm(literalsOnForm);
@@ -268,21 +287,23 @@ public class ProcessTerminologyController extends VitroHttpServlet {
List n3Required = new ArrayList();
int index;
String nodeBase = "?terminologyContextNode";
- String referencedBase = "?referencedTerm";
- //there's only one entry term in this case
- String entryBase = "?entryTerm";
- String labelBase = "?termLabel";
+ String entryVar = "?" + entryBase;
+ String referencedVar = "?" + referencedBase;
+ String labelVar = "?" + labelBase;
+ String typeVar = "?" + typeBase;
String prefixStr = "@prefix core: .";
//First one already included so add new ones here
for(index = 1; index <= numberTerms; index++) {
int suffix = index;
String node = nodeBase + suffix;
- String referencedTerm = referencedBase + suffix;
- String label = labelBase + suffix;
+ String referencedTerm = referencedVar + suffix;
+ String label = labelVar + suffix;
+ String type = typeVar + suffix;
String n3String = prefixStr;
n3String += "?subject ?predicate " + node + " . " +
- node + " core:entryTerm " + entryBase + " . " +
+ node + " core:entryTerm " + entryVar + " . " +
node + " core:termLabel " + label + " . " +
+ node + " core:termType " + type + " . " +
node + " core:referencedTerm " + referencedTerm + " . ";
n3Required.add(n3String);
}