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") );