diff --git a/productMods/edit/forms/organizationHasPositionHistory.jsp b/productMods/edit/forms/organizationHasPositionHistory.jsp
index 5f1ac8a5..3fbd7461 100644
--- a/productMods/edit/forms/organizationHasPositionHistory.jsp
+++ b/productMods/edit/forms/organizationHasPositionHistory.jsp
@@ -9,6 +9,8 @@
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest"%>
<%@page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty"%>
<%@page import="edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %>
@@ -20,6 +22,26 @@
vreq.setAttribute("defaultNamespace", ""); //empty string triggers default new URI behavior
%>
+<%-- Define predicates used in n3 assertions and sparql queries --%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
http://xmlns.com/foaf/0.1/Person
<%-- Then enter a SPARQL query for each field, by convention concatenating the field id with "Existing"
@@ -39,21 +61,6 @@
?positionUri ?title.
-
- SELECT ?startYearExisting WHERE {
- ?positionUri ?startYearExisting }
-
-
- ?positionUri ?startYear .
-
-
-
- SELECT ?endYearExisting WHERE {
- ?positionUri ?endYearExisting }
-
-
- ?positionUri ?endYear .
-
<%-- Note there is really no difference in how things are set up for an object property except
below in the n3ForEdit section, in whether the ..Existing variable goes in SparqlForExistingLiterals
@@ -62,6 +69,7 @@
SELECT ?existingPersonUri WHERE {
?positionUri ?existingPersonUri }
+
?positionUri ?personUri .
?personUri ?positionUri .
@@ -75,6 +83,82 @@
?positionUri rdf:type core:Position .
+
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimeValue}> ?startField.value .
+ ?startNode <${dateTimePrecision}> ?startField.precision .
+
+
+
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimeValue}> ?endField.value .
+ ?endNode <${dateTimePrecision}> ?endField.precision .
+
+
+
+ SELECT ?existingIntervalNode WHERE {
+ ?positionUri <${positionToInterval}> ?existingIntervalNode .
+ ?existingIntervalNode <${type}> <${intervalType}> . }
+
+
+
+ SELECT ?existingStartNode WHERE {
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?existingStartNode .
+ ?existingStartNode <${type}> <${dateTimeValueType}> .}
+
+
+
+ SELECT ?existingDateStart WHERE {
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimeValue}> ?existingDateStart . }
+
+
+
+ SELECT ?existingStartPrecision WHERE {
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToStart}> ?startNode .
+ ?startNode <${type}> <${dateTimeValueType}> .
+ ?startNode <${dateTimePrecision}> ?existingStartPrecision . }
+
+
+
+ SELECT ?existingEndNode WHERE {
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?existingEndNode .
+ ?existingEndNode <${type}> <${dateTimeValueType}> .}
+
+
+
+ SELECT ?existingEndDate WHERE {
+ ?positionUri <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimeValue}> ?existingEndDate . }
+
+
+
+ SELECT ?existingEndPrecision WHERE {
+ ?positionUris <${positionToInterval}> ?intervalNode .
+ ?intervalNode <${type}> <${intervalType}> .
+ ?intervalNode <${intervalToEnd}> ?endNode .
+ ?endNode <${type}> <${dateTimeValueType}> .
+ ?endNode <${dateTimePrecision}> ?existingEndPrecision . }
+
+
{
"formUrl" : "${formUrl}",
@@ -85,9 +169,12 @@
"predicate" : ["predicate", "${predicateUriJson}" ],
"object" : ["positionUri", "${objectUriJson}", "URI" ],
- "n3required" : [ "${n3ForStmtToOrg}", "${titleAssertion}" , "${personUriAssertion}", "${startYearAssertion}" ],
- "n3optional" : [ "${endYearAssertion}" ],
- "newResources" : { "positionUri" : "${defaultNamespace}" },
+ "n3required" : [ "${n3ForStmtToOrg}", "${titleAssertion}" , "${personUriAssertion}"],
+ "n3optional" : [ "${n3ForStart}" , "${n3ForEnd}" ],
+ "newResources" : { "positionUri" : "${defaultNamespace}",
+ "intervalNode" : "${defaultNamespace}",
+ "startNode" : "${defaultNamespace}",
+ "endNode" : "${defaultNamespace}" },
"urisInScope" : { },
"literalsInScope": { },
"urisOnForm" : [ "personUri" ],
@@ -97,11 +184,16 @@
"sparqlForUris" : { },
"sparqlForExistingLiterals" : {
"title" : "${titleExisting}",
- "startYear" : "${startYearExisting}",
- "endYear" : "${endYearExisting}",
+ "startField.value" : "${existingStartDateQuery}",
+ "endField.value" : "${existingEndDateQuery}"
},
"sparqlForExistingUris" : {
- "personUri" : "${personUriExisting}"
+ "personUri" : "${personUriExisting}",
+ "intervalNode" : "${existingIntervalNodeQuery}",
+ "startNode" : "${existingStartNodeQuery}",
+ "endNode" : "${existingEndNodeQuery}",
+ "startField.precision": "${existingStartPrecisionQuery}",
+ "endField.precision" : "${existingEndPrecisionQuery}"
},
"fields" : {
"title" : {
@@ -126,27 +218,27 @@
"rangeLang" : "",
"assertions" : [ "${personUriAssertion}" ]
},
- "startYear" : {
+ "startField" : {
"newResource" : "false",
- "validators" : [ "nonempty", "datatype:http://www.w3.org/2001/XMLSchema#gYear"],
+ "validators" : [ ],
"optionsType" : "UNDEFINED",
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "http://www.w3.org/2001/XMLSchema#gYear",
+ "rangeDatatypeUri" : "",
"rangeLang" : "",
- "assertions" : ["${startYearAssertion}"]
+ "assertions" : ["${n3ForStart}"]
},
- "endYear" : {
+ "endField" : {
"newResource" : "false",
- "validators" : [ "datatype:http://www.w3.org/2001/XMLSchema#gYear" ],
+ "validators" : [],
"optionsType" : "UNDEFINED",
"literalOptions" : [ ],
"predicateUri" : "",
"objectClassUri" : "",
- "rangeDatatypeUri" : "http://www.w3.org/2001/XMLSchema#gYear",
+ "rangeDatatypeUri" : "",
"rangeLang" : "",
- "assertions" : ["${endYearAssertion}"]
+ "assertions" : ["${n3ForEnd}"]
}
}
}
@@ -157,8 +249,14 @@
if (editConfig == null) {
editConfig = new EditConfiguration(
(String) request
- .getAttribute("editjson"));
+ .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.YEAR.uri()));
+ Field endField = editConfig.getField("endField");
+ endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.YEAR.uri(),VitroVocabulary.Precision.YEAR.uri()));
}
Model model = (Model) application.getAttribute("jenaOntModel");
@@ -187,8 +285,8 @@
" >
-
-
+
+
diff --git a/productMods/edit/forms/personHasPositionHistory.jsp b/productMods/edit/forms/personHasPositionHistory.jsp
index 2bd82445..dde9c53b 100644
--- a/productMods/edit/forms/personHasPositionHistory.jsp
+++ b/productMods/edit/forms/personHasPositionHistory.jsp
@@ -17,6 +17,8 @@
<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.StartYearBeforeEndYear"%>
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.JavaScript" %>
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Css" %>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%>
+<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%>
<%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %>
@@ -37,8 +39,9 @@
%>
-<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%>
-<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%>
+
+
+
@@ -79,14 +82,6 @@
?position a ?positionType .
-
- ?position <${startYearPred}> ?startYear .
-
-
-
- ?position <${endYearPred}> ?endYear .
-
-
@prefix core: <${vivoCore}> .
@@ -374,9 +369,9 @@
//setup date time edit elements
Field startField = editConfig.getField("startField");
- startField.setEditElement(new DateTimeWithPrecision(startField, VitroVocabulary.Precision.YEAR));
+ startField.setEditElement(new DateTimeWithPrecision(startField, VitroVocabulary.Precision.YEAR.uri(),VitroVocabulary.Precision.YEAR.uri()));
Field endField = editConfig.getField("endField");
- endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.YEAR));
+ endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.YEAR.uri(),VitroVocabulary.Precision.YEAR.uri()));
}
editConfig.addValidator(new StartYearBeforeEndYear("startYear","endYear") );