<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%> <%@ page import="java.util.ArrayList"%> <%@ page import="java.util.Arrays"%> <%@ page import="com.hp.hpl.jena.rdf.model.Literal"%> <%@ page import="com.hp.hpl.jena.rdf.model.Model"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.RdfLiteralHash"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement" %> <%@page import="edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils"%> <%@page import="edu.cornell.mannlib.vitro.webapp.utils.StringUtils" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %> <% org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("edu.cornell.mannlib.vitro.jsp.edit.forms.defaultVitroNsPropForm.jsp"); log.debug("Starting defaultVitroNsPropForm.jsp"); VitroRequest vreq = new VitroRequest(request); WebappDaoFactory wdf = vreq.getWebappDaoFactory(); vreq.setAttribute("defaultNamespace", wdf.getDefaultNamespace()); String subjectUri = vreq.getParameter("subjectUri"); String predicateUri = vreq.getParameter("predicateUri"); DataPropertyStatement dps = (DataPropertyStatement)vreq.getAttribute("dataprop"); String datapropKeyStr = vreq.getParameter("datapropKey"); Individual subject = (Individual)vreq.getAttribute("subject"); if( subject == null ) { throw new Error("In defaultVitroNsPropForm.jsp, could not find subject " + subjectUri); } Model model = (Model)application.getAttribute("jenaOntModel"); // RY ***** Get the rangeDatatypeUri - need to get the existing value datatype. Or just hardcode? //String rangeDatatypeUri = vreq.getWebappDaoFactory().getDataPropertyDao().getRequiredDatatypeURI(subject, prop); //String rangeDatatypeUri = prop.getRangeDatatypeURI(); String rangeDatatypeUri = "http://www.w3.org/2001/XMLSchema#string"; String rangeDatatypeUriJson = MiscWebUtils.escape(rangeDatatypeUri); vreq.setAttribute("rangeDatatypeUriJson", rangeDatatypeUriJson); ArrayList validatorList = new ArrayList(); if (predicateUri.equals(VitroVocabulary.LABEL) || predicateUri.equals(VitroVocabulary.RDF_TYPE)) { validatorList.add("nonempty"); } if (!rangeDatatypeUriJson.isEmpty()) { validatorList.add("datatype:" + rangeDatatypeUriJson); } vreq.setAttribute("validators", StringUtils.quotedList(validatorList, ",")); %> <%-- Then enter a SPARQL query for the field, by convention concatenating the field id with "Existing" to convey that the expression is used to retrieve any existing value for the field in an existing individual. This must then be referenced in the sparqlForExistingLiterals section of the JSON block below and in the literalsOnForm --%> SELECT ?dataExisting WHERE { ?subject <${predicate}> ?dataExisting } <%-- Pair the "existing" query with the skeleton of what will be asserted for a new statement involving this field. The actual assertion inserted in the model will be created via string substitution into the ? variables. NOTE the pattern of punctuation (a period after the prefix URI and after the ?field) --%> ?subject <${predicate}> ?${propertyName} . <% %> { "formUrl" : "${formUrl}", "editKey" : "${editKey}", "datapropKey" : "<%= datapropKeyStr == null ? "" : datapropKeyStr %>", "urlPatternToReturnTo" : "/entity", "subject" : ["subject", "${subjectUriJson}" ], "predicate" : ["predicate", "${predicateUriJson}" ], "object" : ["${propertyName}", "", "DATAPROPHASH" ], "n3required" : [ "${dataAssertion}" ], "n3optional" : [ ], "newResources" : { }, "urisInScope" : { }, "literalsInScope": { }, "urisOnForm" : [ ], "literalsOnForm" : [ "${propertyName}" ], "filesOnForm" : [ ], "sparqlForLiterals" : { }, "sparqlForUris" : { }, "sparqlForExistingLiterals" : { "${propertyName}" : "${dataExisting}" }, "sparqlForExistingUris" : { }, "fields" : { "${propertyName}" : { "newResource" : "false", "validators" : [ ${validators} ], "optionsType" : "UNDEFINED", "literalOptions" : [ ], "predicateUri" : "", "objectClassUri" : "", "rangeDatatypeUri" : "${rangeDatatypeUriJson}", "rangeLang" : "", "assertions" : [ "${dataAssertion}" ] } } } <% if( log.isDebugEnabled()) log.debug(request.getAttribute("editjson")); EditConfiguration editConfig = EditConfiguration.getConfigFromSession(session,request); if (editConfig == null) { log.debug("No editConfig in session. Making new editConfig."); log.debug(vreq.getAttribute("editjson")); editConfig = new EditConfiguration((String)vreq.getAttribute("editjson")); EditConfiguration.putConfigInSession(editConfig, session); } if ( datapropKeyStr != null && datapropKeyStr.trim().length() > 0 ) { editConfig.prepareForDataPropUpdate(model,dps); } %>

${title}

" >