diff --git a/productMods/edit/forms/addGrantRoleToPerson.jsp b/productMods/edit/forms/addGrantRoleToPerson.jsp index 2f182051..6e36d87d 100644 --- a/productMods/edit/forms/addGrantRoleToPerson.jsp +++ b/productMods/edit/forms/addGrantRoleToPerson.jsp @@ -48,7 +48,10 @@ This is intended to create a set of statements like: String predicateUri = (String)request.getAttribute("predicateUri"); ObjectProperty op = wdf.getObjectPropertyDao().getObjectPropertyByURI( predicateUri ); if( op != null && op.getURIInverse() != null ){ - %> <%=op.getURIInverse()%> <% + %> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.DateTimeIntervalValidation"%><%=op.getURIInverse()%> <% }else{ %> <% } @@ -82,9 +85,22 @@ This is intended to create a set of statements like: <%@page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty"%> + + + + + + + + + + + + + <% // set role type based on predicate String subjectName = ((Individual) request.getAttribute("subject")).getName(); if ( ((String)request.getAttribute("predicateUri")).endsWith("hasPrincipalInvestigatorRole") ) { %> @@ -124,16 +140,6 @@ if ( ((String)request.getAttribute("predicateUri")).endsWith("hasPrincipalInvest - - - ?role <${startYearUri}> ?startYear . - - - - - ?role <${endYearUri}> ?endYear . - - @prefix core: <${vivoCore}> . @prefix rdf: <${rdf}> . @@ -152,6 +158,24 @@ if ( ((String)request.getAttribute("predicateUri")).endsWith("hasPrincipalInvest ?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 rdfs: <${rdfs}> . ?grant rdfs:label ?grantLabel . @@ -165,22 +189,72 @@ if ( ((String)request.getAttribute("predicateUri")).endsWith("hasPrincipalInvest ?existingGrant rdfs:label ?existingGrantLabel . } - - PREFIX core: <${vivoCore}> - SELECT ?existingStartYear WHERE { ?role core:startYear ?existingStartYear .} - - - -PREFIX core: <${vivoCore}> - SELECT ?existingStartYear WHERE { ?role core:endYear ?existingStartYear .} - - PREFIX core: <${vivoCore}> SELECT ?existingGrant WHERE { ?role core:roleIn ?existingGrant . } ${vivoOnt}#Grant + + + 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}", @@ -191,23 +265,36 @@ PREFIX core: <${vivoCore}> "predicate" : ["rolePredicate", "${predicateUriJson}" ], "object" : ["role", "${objectUriJson}", "URI" ], - "n3required" : [ "${n3ForGrantRole}", "${startYearAssertion}" ], + "n3required" : [ "${n3ForGrantRole}" ], - "n3optional" : [ "${n3ForGrantLabel}", "${n3ForInverse}", "${endYearAssertion}" ], + "n3optional" : [ "${n3ForGrantLabel}", "${n3ForInverse}", "${n3ForStart}", "${n3ForEnd}" ], "newResources" : { "role" : "${defaultNamespace}", - "grant" : "${defaultNamespace}" }, - + "grant" : "${defaultNamespace}", + "intervalNode" : "${defaultNamespace}", + "startNode" : "${defaultNamespace}", + "endNode" : "${defaultNamespace}" }, "urisInScope" : { "roleType" : "${roleType}", "inverseRolePredicate" : "${inversePredicate}" }, "literalsInScope": { }, "urisOnForm" : [ "grant" ], - "literalsOnForm" : [ "grantLabel", "startYear", "endYear", "existingGrantLabel" ], + "literalsOnForm" : [ "grantLabel", "existingGrantLabel" ], "filesOnForm" : [ ], "sparqlForLiterals" : { }, "sparqlForUris" : { }, - "sparqlForExistingLiterals" : { "grantLabel":"${grantLabelQuery}" , "startYear":"${startYearQuery}", "endYear":"${endYearQuery}" }, - "sparqlForExistingUris" : { "grant":"${grantQuery}" }, + "sparqlForExistingLiterals" : { + "grantLabel":"${grantLabelQuery}" , + "startField.value" : "${existingStartDateQuery}", + "endField.value" : "${existingEndDateQuery}" + }, + "sparqlForExistingUris" : { + "grant":"${grantQuery}", + "intervalNode" : "${existingIntervalNodeQuery}", + "startNode" : "${existingStartNodeQuery}", + "endNode" : "${existingEndNodeQuery}", + "startField.precision": "${existingStartPrecisionQuery}", + "endField.precision" : "${existingEndPrecisionQuery}" + }, "fields" : { "grant" : { "newResource" : "false", @@ -242,27 +329,27 @@ PREFIX core: <${vivoCore}> "rangeLang" : "", "assertions" : [ ] }, - "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}" ] } } } @@ -275,9 +362,19 @@ PREFIX core: <${vivoCore}> if (editConfig == null) { editConfig = new EditConfiguration((String) request.getAttribute("editjson")); EditConfiguration.putConfigInSession(editConfig,session); - } - - editConfig.addValidator(new StartYearBeforeEndYear("startYear","endYear") ); + //setup date time edit elements + Field startField = editConfig.getField("startField"); + startField.setEditElement( + new DateTimeWithPrecision(startField, + VitroVocabulary.Precision.YEAR.uri(), + VitroVocabulary.Precision.NONE.uri())); + Field endField = editConfig.getField("endField"); + endField.setEditElement( + new DateTimeWithPrecision(endField, + VitroVocabulary.Precision.YEAR.uri(), + VitroVocabulary.Precision.NONE.uri())); + editConfig.addValidator(new DateTimeIntervalValidation("startField","endField") ); + } Model model = (Model) application.getAttribute("jenaOntModel"); String objectUri = (String) request.getAttribute("objectUri"); @@ -339,8 +436,8 @@ PREFIX core: <${vivoCore}>

Years of Participation in Grant

- - + +