diff --git a/productMods/WEB-INF/ontologies/user/vivo-core-1.0-annotations.rdf b/productMods/WEB-INF/ontologies/user/vivo-core-1.0-annotations.rdf
index aa5bbe5c..1b024496 100644
--- a/productMods/WEB-INF/ontologies/user/vivo-core-1.0-annotations.rdf
+++ b/productMods/WEB-INF/ontologies/user/vivo-core-1.0-annotations.rdf
@@ -890,7 +890,7 @@
true
- serviceActivityShortView.jsp
+ activityShortView.jsp
-1
-1
@@ -2091,6 +2091,7 @@
true
+ activityShortView.jsp
-1
-1
@@ -2343,6 +2344,7 @@
+ activityShortView.jsp
-1
-1
@@ -2527,6 +2529,7 @@
mailingAddressFor
+ activityShortView.jsp
-1
-1
diff --git a/productMods/edit/forms/personHasServiceActivity.jsp b/productMods/edit/forms/personHasServiceActivity.jsp
deleted file mode 100644
index 757d43a4..00000000
--- a/productMods/edit/forms/personHasServiceActivity.jsp
+++ /dev/null
@@ -1,268 +0,0 @@
-<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
-
-<%@ 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.dao.WebappDaoFactory"%>
-<%@ page
- import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest"%>
-
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
-<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %>
-
-<%
- VitroRequest vreq = new VitroRequest(request);
- WebappDaoFactory wdf = vreq.getWebappDaoFactory();
- vreq.setAttribute("defaultNamespace", ""); //empty string triggers default new URI behavior
-
- String flagURI = null;
- if (vreq.getAppBean().isFlag1Active()) {
- flagURI = VitroVocabulary.vitroURI+"Flag1Value"+vreq.getPortal().getPortalId()+"Thing";
- } else {
- flagURI = wdf.getVClassDao().getTopConcept().getURI(); // fall back to owl:Thing if not portal filtering
- }
- vreq.setAttribute("flagURI",flagURI);
-%>
-
-<%-- RY *** SET VARIABLES for uris & namespaces --%>
-
-<%-- Then enter a SPARQL query for each 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.
- Each of these must then be referenced in the sparqlForExistingLiterals section of the JSON block below
- and in the literalsOnForm --%>
-
- SELECT ?titleExisting WHERE {
- ?activityUri ?titleExisting }
-
-
-<%-- 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) --%>
-
- ?activityUri ?title .
- ?activityUri ?title.
-
-
-
- SELECT ?descriptionExisting WHERE {
- ?activityUri ?descriptionExisting }
-
-
- ?activityUri ?description .
-
-
-
- SELECT ?existingOrgName WHERE {
- ?activityUri ?existingOrgName }
-
-
- ?activityUri ?organizationName .
-
-
-
- SELECT ?startYearMonthExisting WHERE {
- ?activityUri ?startYearMonthExisting }
-
-
- ?activityUri ?startYearMonth .
-
-
-
- SELECT ?endYearMonthExisting WHERE {
- ?activityUri ?endYearMonthExisting }
-
-
- ?activityUri ?endYearMonth .
-
-
-<%-- 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
- or in the SparqlForExistingUris, as well as perhaps in how the options are prepared --%>
-
- SELECT ?existingOrgUri WHERE {
- ?activityUri ?existingOrgUri }
-
-
- ?activityUri ?organizationUri .
- ?organizationUri ?activityUri .
-
-
-
- ?activityUri ?serviceSubClass .
-
-
-
- @prefix rdf: .
- @prefix core: .
-
- ?person core:professionalServiceActivity ?activityUri .
- ?activityUri core:professionalServiceActivityBy ?person .
- ?activityUri rdf:type core:ServiceActivity .
- ?activityUri rdf:type <${flagURI}> .
-
-
-http://vivoweb.org/ontology/core#ServiceActivity
-http://xmlns.com/foaf/0.1/Organization
-
-
- {
- "formUrl" : "${formUrl}",
- "editKey" : "${editKey}",
- "urlPatternToReturnTo" : "/entity",
-
- "subject" : ["person", "${subjectUriJson}" ],
- "predicate" : ["predicate", "${predicateUriJson}" ],
- "object" : ["activityUri", "${objectUriJson}", "URI" ],
-
- "n3required" : [ "${n3ForStmtToPerson}", "${titleAssertion}", "${startYearMonthAssertion}" ],
- "n3optional" : [ "${descriptionAssertion}", "${organizationNameAssertion}","${organizationUriAssertion}",
- "${endYearMonthAssertion}", "${serviceSubClassAssertion}"],
- "newResources" : { "activityUri" : "${defaultNamespace}" },
- "urisInScope" : { },
- "literalsInScope": { },
- "urisOnForm" : [ "organizationUri" , "serviceSubClass" ],
- "literalsOnForm" : [ "title", "description", "organizationName",
- "startYearMonth", "endYearMonth" ],
- "filesOnForm" : [ ],
- "sparqlForLiterals" : { },
- "sparqlForUris" : { },
- "sparqlForExistingLiterals" : {
- "title" : "${titleExisting}",
- "description" : "${descriptionExisting}",
- "organizationName" : "${organizationNameExisting}",
- "startYearMonth" : "${startYearMonthExisting}",
- "endYearMonth" : "${endYearMonthExisting}"
- },
- "sparqlForExistingUris" : {
- "organizationUri" : "${organizationUriExisting}"
- },
- "fields" : {
- "title" : {
- "newResource" : "false",
- "validators" : [ "nonempty" ],
- "optionsType" : "UNDEFINED",
- "literalOptions" : [ ],
- "predicateUri" : "",
- "objectClassUri" : "",
- "rangeDatatypeUri" : "",
- "rangeLang" : "",
- "assertions" : [ "${titleAssertion}" ]
- },
- "description" : {
- "newResource" : "false",
- "validators" : [ ],
- "optionsType" : "UNDEFINED",
- "literalOptions" : [ ],
- "predicateUri" : "",
- "objectClassUri" : "",
- "rangeDatatypeUri" : "",
- "rangeLang" : "",
- "assertions" : [ "${descriptionAssertion}" ]
- },
- "organizationUri" : {
- "newResource" : "false",
- "validators" : [ ],
- "optionsType" : "INDIVIDUALS_VIA_VCLASS",
- "literalOptions" : [ "--" ],
- "predicateUri" : "",
- "objectClassUri" : "${organizationClass}",
- "rangeDatatypeUri" : "",
- "rangeLang" : "",
- "assertions" : [ "${organizationUriAssertion}" ]
- },
- "serviceSubClass" : {
- "newResource" : "false",
- "validators" : [ ],
- "optionsType" : "CHILD_VCLASSES",
- "literalOptions" : [ "--" ],
- "predicateUri" : "",
- "objectClassUri" : "${activityClass}",
- "rangeDatatypeUri" : "",
- "rangeLang" : "",
- "assertions" : [ "${serviceSubClassAssertion}" ]
- },
- "organizationName" : {
- "newResource" : "false",
- "validators" : [ ],
- "optionsType" : "UNDEFINED",
- "literalOptions" : [ ],
- "predicateUri" : "",
- "objectClassUri" : "",
- "rangeDatatypeUri" : "http://www.w3.org/2001/XMLSchema#string",
- "rangeLang" : "",
- "assertions" : [ "${organizationNameAssertion}" ]
- },
- "startYearMonth" : {
- "newResource" : "false",
- "validators" : [ "nonempty", "datatype:http://www.w3.org/2001/XMLSchema#gYearMonth" ],
- "optionsType" : "UNDEFINED",
- "literalOptions" : [ ],
- "predicateUri" : "",
- "objectClassUri" : "",
- "rangeDatatypeUri" : "http://www.w3.org/2001/XMLSchema#gYearMonth",
- "rangeLang" : "",
- "assertions" : ["${startYearMonthAssertion}"]
- },
- "endYearMonth" : {
- "newResource" : "false",
- "validators" : [ "datatype:http://www.w3.org/2001/XMLSchema#gYearMonth" ],
- "optionsType" : "UNDEFINED",
- "literalOptions" : [ ],
- "predicateUri" : "",
- "objectClassUri" : "",
- "rangeDatatypeUri" : "http://www.w3.org/2001/XMLSchema#gYearMonth",
- "rangeLang" : "",
- "assertions" : ["${endYearMonthAssertion}"]
- }
- }
-}
-
-<%
-
- EditConfiguration editConfig = EditConfiguration.getConfigFromSession(session,request);
- if (editConfig == null) {
- editConfig = new EditConfiguration(
- (String) request
- .getAttribute("editjson"));
- EditConfiguration.putConfigInSession(editConfig,session);
- }
-
- Model model = (Model) application.getAttribute("jenaOntModel");
- String objectUri = (String) request.getAttribute("objectUri");
- if (objectUri != null) {
- editConfig.prepareForObjPropUpdate(model);
- } else {
- editConfig.prepareForNonUpdate(model);
- }
-
- /* prepare the and text for the submit button */
- Individual subject = (Individual) request.getAttribute("subject");
- String submitLabel = "";
- if (objectUri != null) {
- request.setAttribute("title","Edit professional service activity entry for "+ subject.getName());
- submitLabel = "Save changes";
- } else {
- request.setAttribute("title","Create a new professional service activity entry for " + subject.getName());
- submitLabel = "Create new professional service activity entry";
- }
-%>
-
-
-
-${title}
-" >
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/productMods/templates/entity/activityShortView.jsp b/productMods/templates/entity/activityShortView.jsp
new file mode 100644
index 00000000..cd4331aa
--- /dev/null
+++ b/productMods/templates/entity/activityShortView.jsp
@@ -0,0 +1,66 @@
+<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
+
+<%-- Custom short view for ResearchActivity, TeachingActivity, OutreachActivity, and ServiceActivity
+
+ SUBJECT - entity
+ PREDICATE - predicateUri
+ OBJECT - individual
+
+ Predicates: on Person page: Person professionalServiceActivity ServiceActivity
+
+--%>
+
+<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary"%>
+
+<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/StringProcessorTag" prefix="p" %>
+
+
+
+
+
+
+
+
+
+
+
+
+ <%-- individual is the OBJECT of the property referenced - in this case, the Activity object --%>
+
+
+ <%-- RY may need another branch in here; predicateIsActivity vs predicate is something else...
+ depends if this would display on something other than a person page. --%>
+
+
+ <%-- Get the Activity label --%>
+
+
+ <%-- Get the role of the person in the activity --%>
+
+
+ <%-- Get the start date of the activity --%>
+
+
+ <%-- Create an html link element to the activity --%>
+
+ ${activityLabel}
+
+ <%-- Final output --%>
+ ${activityLink} ${role}, ${startDate}
+
+
+ <%-- no predicate --%>
+
+
+
+
+
+ <%-- no object --%>
+
+
+
diff --git a/productMods/templates/entity/serviceActivityShortView.jsp b/productMods/templates/entity/serviceActivityShortView.jsp
deleted file mode 100644
index 538f3ba1..00000000
--- a/productMods/templates/entity/serviceActivityShortView.jsp
+++ /dev/null
@@ -1,107 +0,0 @@
-<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/StringProcessorTag" prefix="p" %>
-
-<%-- Custom short view for ServiceActivity
-
- SUBJECT - entity
- PREDICATE - predicateUri
- OBJECT - individual
-
- Predicates: professionalServiceActivity on Person page: Person professionalServiceActivity ServiceActivity
- organizationRelatedActivity on Organization page: Organization organizationRelatedActivity ServiceActivity
---%>
-
-
- <%-- individual is the OBJECT of the property referenced - in this case, a ServiceActivity object --%>
-
-
-
-
- <%-- Get the ServiceActivity title --%>
-
-
- <%-- Get the time span of the service activity --%>
-
-
-
- <%-- RY Don't know whether we should display just the year, or month and year.
- Latter looks like too much info, but why collect it if we aren't going to display it?
- Needs reformatting, otherwise we get e.g., "2008-10 - 2009-12"
- --%>
-
-
-
-
- <%-- --%>
-
-
-
-
-
-
-
- <%-- CASE 1: SUBJECT is Person, OBJECT is ServiceActivity --%>
-
- <%-- The head object of the short view is the Organization object's name or data property organization name. Get it from the service activity. --%>
-
- <%-- This ServiceActivity object is linked to an Organization object --%>
-
-
-
-
-
-
- <%-- The ServiceActivity object has an organization name data property --%>
-
-
-
- <%-- otherwise case defined below --%>
-
-
-
- <%-- CASE 2: SUBJECT is Organization, OBJECT is ServiceActivity --%>
-
-
-
-
-
-
- <%-- else case handled below --%>
-
-
- <%-- CASE 3: Other predicate --%>
-
-
-
-
-
- <%-- No objName defined in either Case 1 or Case 2 --%>
-
-
- <%-- don't output title twice --%>
-
-
- <%-- Create an html link element to the objUri --%>
-
-
-
-
-
-
- <%-- Final output --%>
- ${openLink}${objName}${closeLink}${title}${timeSpan}
-
-
- <%-- no predicate --%>
-
-
-
-
-
- <%-- no object --%>
-
-
-