diff --git a/productMods/edit/forms/addRoleToPersonTwoStage.jsp b/productMods/edit/forms/addRoleToPersonTwoStage.jsp
index 91b0a01b..8eb84d06 100644
--- a/productMods/edit/forms/addRoleToPersonTwoStage.jsp
+++ b/productMods/edit/forms/addRoleToPersonTwoStage.jsp
@@ -47,7 +47,9 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %>
-<%@page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%>
<%!
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.addRoleToPersonTwoStage.jsp");
@@ -144,9 +146,21 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
+
<%--blank triggers default URI generation behavior --%>
+
+
+
+
+
+
+
+
+
+
+
<%-- label and type required if we are doing an add or a repair, but not an edit --%>
<%= (mode == 1 || mode == 3) ?"\"nonempty\"," : "" %>
<%= (mode == 1 || mode == 3) ?"\"nonempty\"" : "" %>
@@ -207,6 +221,24 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
?role ?inverseRolePredicate ?person.
+
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimeValue}> ?startField.value .
+ ?startNode <${dateTimePrecision}> ?startField.precision .
+
+
+
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimeValue}> ?endField.value .
+ ?endNode <${dateTimePrecision}> ?endField.precision .
+
+
PREFIX core: <${vivoCore}>
PREFIX rdfs: <${rdfs}>
@@ -240,6 +272,64 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
}
+
+ SELECT ?existingIntervalNode WHERE {
+ ?role <${roleToInterval}> ?existingIntervalNode .
+ ?existingIntervalNode <${type}> <${intervalType}> . }
+
+
+
+ SELECT ?existingStartNode WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?existingStartNode .
+ ?existingStartNode <${type}> <${dateTimeValueType}> .}
+
+
+
+ SELECT ?existingDateStart WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimeValue}> ?existingDateStart . }
+
+
+
+ SELECT ?existingStartPrecision WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimePrecision}> ?existingStartPrecision . }
+
+
+
+ SELECT ?existingEndNode WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?existingEndNode .
+ ?existingEndNode <${type}> <${dateTimeValueType}> .}
+
+
+
+ SELECT ?existingEndDate WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimeValue}> ?existingEndDate . }
+
+
+
+ SELECT ?existingEndPrecision WHERE {
+ ?role <${roleToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimePrecision}> ?existingEndPrecision . }
+
+
{
"formUrl" : "${formUrl}",
@@ -250,11 +340,14 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
"predicate" : ["rolePredicate", "${predicateUriJson}" ],
"object" : ["role", "${objectUriJson}", "URI" ],
- "n3required" : [ "${n3ForNewRole}", "${startYearAssertion}", "${roleLabelAssertion}" ],
- "n3optional" : [ "${n3ForActivityLabel}", "${n3ForActivityType}", "${n3ForInverse}", "${endYearAssertion}" ],
+ "n3required" : [ "${n3ForNewRole}", "${n3ForStart}", "${roleLabelAssertion}" ],
+ "n3optional" : [ "${n3ForActivityLabel}", "${n3ForActivityType}", "${n3ForInverse}", "${n3ForEnd}" ],
"newResources" : { "role" : "${defaultNamespace}",
- "roleActivity" : "${defaultNamespace}" },
+ "roleActivity" : "${defaultNamespace}",
+ "intervalNode" : "${defaultNamespace}",
+ "startNode" : "${defaultNamespace}",
+ "endNode" : "${defaultNamespace}" },
"urisInScope" : { "inverseRolePredicate" : "${inversePredicate}" },
"literalsInScope": { },
@@ -263,8 +356,21 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
"filesOnForm" : [ ],
"sparqlForLiterals" : { },
"sparqlForUris" : { },
- "sparqlForExistingLiterals" : { "activityLabel":"${activityLabelQuery}", "roleLabel":"${roleLabelQuery}", "startYear":"${startYearQuery}", "endYear":"${endYearQuery}" },
- "sparqlForExistingUris" : { "roleActivity":"${activityQuery}" , "roleActivityType":"${activityTypeQuery}" },
+ "sparqlForExistingLiterals" : {
+ "activityLabel":"${activityLabelQuery}",
+ "roleLabel":"${roleLabelQuery}",
+ "startField.value" : "${existingStartDateQuery}",
+ "endField.value" : "${existingEndDateQuery}"
+ },
+ "sparqlForExistingUris" : {
+ "roleActivity":"${activityQuery}" ,
+ "roleActivityType":"${activityTypeQuery}" ,
+ "intervalNode" : "${existingIntervalNodeQuery}",
+ "startNode" : "${existingStartNodeQuery}",
+ "endNode" : "${existingEndNodeQuery}",
+ "startField.precision": "${existingStartPrecisionQuery}",
+ "endField.precision" : "${existingEndPrecisionQuery}"
+ },
"fields" : {
"activityLabel" : {
"newResource" : "false",
@@ -310,27 +416,27 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
"rangeLang" : "",
"assertions" : ["${roleLabelAssertion}" ]
},
- "startYear" : {
+ "startField" : {
"newResource" : "false",
- "validators" : [ "nonempty", "datatype:${gYearDatatypeUriJson}" ],
+ "validators" : [ ],
"optionsType" : "UNDEFINED",
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "${gYearDatatypeUriJson}",
+ "rangeDatatypeUri" : "",
"rangeLang" : "",
- "assertions" : ["${startYearAssertion}"]
+ "assertions" : [ "${n3ForStart}" ]
},
- "endYear" : {
+ "endField" : {
"newResource" : "false",
- "validators" : [ "datatype:${gYearDatatypeUriJson}" ],
+ "validators" : [ ],
"optionsType" : "UNDEFINED",
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "${gYearDatatypeUriJson}",
+ "rangeDatatypeUri" : "",
"rangeLang" : "",
- "assertions" : ["${endYearAssertion}"]
+ "assertions" : ["${n3ForEnd}" ]
}
}
}
@@ -341,9 +447,21 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
if (editConfig == null) {
editConfig = new EditConfiguration((String) request.getAttribute("editjson"));
EditConfiguration.putConfigInSession(editConfig,session);
+
+ //setup date time edit elements
+ Field startField = editConfig.getField("startField");
+ startField.setEditElement(
+ new DateTimeWithPrecision(startField,
+ VitroVocabulary.Precision.YEAR.uri(),
+ VitroVocabulary.Precision.MONTH.uri()));
+ Field endField = editConfig.getField("endField");
+ endField.setEditElement(
+ new DateTimeWithPrecision(endField,
+ VitroVocabulary.Precision.YEAR.uri(),
+ VitroVocabulary.Precision.YEAR.uri()));
}
- editConfig.addValidator(new StartYearBeforeEndYear("startYear","endYear") );
+ editConfig.addValidator(new StartYearBeforeEndYear("startField.value","endYear.value") );
Model model = (Model) application.getAttribute("jenaOntModel");
String objectUri = (String) request.getAttribute("objectUri");
@@ -423,12 +541,12 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
-
+
Years of Participation in ###
-
-
+
+