Compare commits

..

No commits in common. "texts" and "queryBuilder" have entirely different histories.

144 changed files with 835 additions and 7053 deletions

View file

@ -1,649 +0,0 @@
/* $This file is distributed under the terms of the license in LICENSE$ */
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.DISPLAY;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.JspToGeneratorMapping;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jena.ontology.OntModel;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.Literal;
import edu.cornell.mannlib.vitro.webapp.application.ApplicationUtils;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils;
import edu.cornell.mannlib.vitro.webapp.dao.vclassgroup.ProhibitedFromSearch;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsViaObjectPropetyOptions;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation;
import edu.cornell.mannlib.vitro.webapp.i18n.I18n;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchEngine;
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchEngineException;
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchQuery;
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchResponse;
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchResultDocumentList;
import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames;
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils;
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
/**
* Generates the edit configuration for a default property form.
* This handles the default object property auto complete.
*
* If a default property form is request and the number of indivdiuals
* found in the range is too large, the the auto complete setup and
* template will be used instead.
*/
public class AddRubricToELENPHArticleGenerator implements EditConfigurationGenerator {
private Log log = LogFactory.getLog(AddRubricToELENPHArticleGenerator.class);
private String subjectUri = null;
private String predicateUri = null;
private String objectUri = null;
private String objectPropertyTemplate = "defaultPropertyForm.ftl";
private String acObjectPropertyTemplate = "autoCompleteObjectPropForm.ftl";
private ArrayList<String> excerptIDs= new ArrayList<String>();
protected boolean doAutoComplete = false;
protected boolean tooManyRangeIndividuals = false;
protected long maxNonACRangeIndividualCount = 300;
protected String customErrorMessages = null;
@Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq,
HttpSession session) throws Exception {
if(!EditConfigurationUtils.isObjectProperty(EditConfigurationUtils.getPredicateUri(vreq), vreq)) {
throw new Exception("DefaultObjectPropertyFormGenerator does not handle data properties.");
}
//Custom error can also be represented as an exception above, but in this case
//we would like the page to enable the user to go back to the profile page
customErrorMessages = getCustomErrorMessages(vreq);
if(customErrorMessages != null) {
return this.getCustomErrorEditConfiguration(vreq, session);
}
if( tooManyRangeOptions( vreq, session ) ){
tooManyRangeIndividuals = true;
doAutoComplete = true;
}
//Check if create new and return specific edit configuration from that generator.
if(DefaultAddMissingIndividualFormGenerator.isCreateNewIndividual(vreq, session)) {
EditConfigurationGenerator generator = JspToGeneratorMapping.createFor("defaultAddMissingIndividualForm.jsp", DefaultAddMissingIndividualFormGenerator.class);
return generator.getEditConfiguration(vreq, session);
}
//TODO: Add a generator for delete: based on command being delete - propDelete.jsp
//Generate a edit configuration for the default object property form and return it.
//if(DefaultDeleteGenerator.isDelete( vreq,session)){
// return (new DefaultDeleteGenerator()).getEditConfiguration(vreq,session);
return getDefaultObjectEditConfiguration(vreq, session);
}
private String getCustomErrorMessages(VitroRequest vreq) {
String errorMessages = null;
String rangeUri = vreq.getParameter("rangeUri");
VClass rangeVClass = null;
if(rangeUri != null && !rangeUri.isEmpty()) {
WebappDaoFactory ctxDaoFact = vreq.getLanguageNeutralWebappDaoFactory();
rangeVClass = ctxDaoFact.getVClassDao().getVClassByURI(rangeUri);
if(rangeVClass == null) {
errorMessages = I18n.text(vreq,"the_range_class_does_not_exist");
}
}
return errorMessages;
}
protected List<VClass> getRangeTypes(VitroRequest vreq) {
// This first part needs a WebappDaoFactory with no filtering/RDFService
// funny business because it needs to be able to retrieve anonymous union
// classes by their "pseudo-bnode URIs".
// Someday we'll need to figure out a different way of doing this.
//WebappDaoFactory ctxDaoFact = ModelAccess.on(
// vreq.getSession().getServletContext()).getWebappDaoFactory();
WebappDaoFactory ctxDaoFact = vreq.getLanguageNeutralWebappDaoFactory();
List<VClass> types = new ArrayList<VClass>();
Individual subject = EditConfigurationUtils.getSubjectIndividual(vreq);
String predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
String rangeUri = EditConfigurationUtils.getRangeUri(vreq);
if (rangeUri != null && !rangeUri.isEmpty()) {
VClass rangeVClass = ctxDaoFact.getVClassDao().getVClassByURI(rangeUri);
if(rangeVClass != null) {
if (!rangeVClass.isUnion()) {
types.add(rangeVClass);
} else {
types.addAll(rangeVClass.getUnionComponents());
}
return types;
} else {
log.error("Range VClass does not exist for " + rangeUri);
}
}
WebappDaoFactory wDaoFact = vreq.getWebappDaoFactory();
//Get all vclasses applicable to subject
if(subject != null) {
List<VClass> vClasses = subject.getVClasses();
HashMap<String, VClass> typesHash = new HashMap<String, VClass>();
for(VClass vclass: vClasses) {
List<VClass> rangeVclasses = wDaoFact.getVClassDao().getVClassesForProperty(vclass.getURI(),predicateUri);
if(rangeVclasses != null) {
for(VClass range: rangeVclasses) {
//a hash will keep a unique list of types and so prevent duplicates
typesHash.put(range.getURI(), range);
}
}
}
types.addAll(typesHash.values());
} else {
log.error("Subject individual was null for");
}
return types;
}
private boolean tooManyRangeOptions(VitroRequest vreq, HttpSession session ) throws SearchEngineException {
List<VClass> rangeTypes = getRangeTypes(vreq);
SearchEngine searchEngine = ApplicationUtils.instance().getSearchEngine();
List<String> types = new ArrayList<String>();
for (VClass vclass : rangeTypes) {
if (vclass.getURI() != null) {
types.add(vclass.getURI());
}
}
//empty list means the range is not set to anything, force Thing
if(types.size() == 0 ){
types.add(VitroVocabulary.OWL_THING);
}
long count = 0;
for( String type:types){
//search query for type count.
SearchQuery query = searchEngine.createQuery();
if( VitroVocabulary.OWL_THING.equals( type )){
query.setQuery( "*:*" );
}else{
query.setQuery( VitroSearchTermNames.RDFTYPE + ":" + type);
}
query.setRows(0);
SearchResponse rsp = searchEngine.query(query);
SearchResultDocumentList docs = rsp.getResults();
long found = docs.getNumFound();
count = count + found;
if( count > maxNonACRangeIndividualCount )
break;
}
return count > maxNonACRangeIndividualCount ;
}
private EditConfigurationVTwo getDefaultObjectEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception {
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
//process subject, predicate, object parameters
this.initProcessParameters(vreq, session, editConfiguration);
//Assumes this is a simple case of subject predicate var
editConfiguration.setN3Required(this.generateN3Required(vreq));
//n3 optional
editConfiguration.setN3Optional(this.generateN3Optional());
//Todo: what do new resources depend on here?
//In original form, these variables start off empty
editConfiguration.setNewResources(new HashMap<String, String>());
//In scope
this.setUrisAndLiteralsInScope(editConfiguration);
//on Form
this.setUrisAndLiteralsOnForm(editConfiguration, vreq);
editConfiguration.setFilesOnForm(new ArrayList<String>());
//Sparql queries
this.setSparqlQueries(editConfiguration);
//set fields
setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq), getRangeTypes(vreq));
// No need to put in session here b/c put in session within edit request dispatch controller instead
//placing in session depends on having edit key which is handled in edit request dispatch controller
// editConfiguration.putConfigInSession(editConfiguration, session);
prepareForUpdate(vreq, session, editConfiguration);
//After the main processing is done, check if select from existing process
processProhibitedFromSearch(vreq, session, editConfiguration);
//Form title and submit label moved to template
setTemplate(editConfiguration, vreq);
editConfiguration.addValidator(new AntiXssValidation());
//Set edit key
setEditKey(editConfiguration, vreq);
//Adding additional data, specifically edit mode
if( doAutoComplete ){
addFormSpecificDataForAC(editConfiguration, vreq, session);
}else{
addFormSpecificData(editConfiguration, vreq);
}
return editConfiguration;
}
//We only need enough for the error message to show up
private EditConfigurationVTwo getCustomErrorEditConfiguration(VitroRequest vreq, HttpSession session) {
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
//process subject, predicate, object parameters
this.initProcessParameters(vreq, session, editConfiguration);
this.setUrisAndLiteralsInScope(editConfiguration);
//Sparql queries
this.setSparqlQueries(editConfiguration);
prepareForUpdate(vreq, session, editConfiguration);
editConfiguration.setTemplate("customErrorMessages.ftl");
//Set edit key
setEditKey(editConfiguration, vreq);
//if custom error messages is not null, then add to form specific data
if(customErrorMessages != null) {
//at this point, it shouldn't be null
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
formSpecificData.put("customErrorMessages", customErrorMessages);
editConfiguration.setFormSpecificData(formSpecificData);
}
return editConfiguration;
}
private void setEditKey(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
String editKey = EditConfigurationUtils.getEditKey(vreq);
editConfiguration.setEditKey(editKey);
}
private void setTemplate(EditConfigurationVTwo editConfiguration,
VitroRequest vreq) {
if( doAutoComplete )
editConfiguration.setTemplate(acObjectPropertyTemplate);
else
editConfiguration.setTemplate(objectPropertyTemplate);
}
//Initialize setup: process parameters
private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
editConfiguration.setFormUrl(formUrl);
editConfiguration.setUrlPatternToReturnTo("/individual");
editConfiguration.setVarNameForSubject("subject");
editConfiguration.setSubjectUri(subjectUri);
editConfiguration.setEntityToReturnTo(subjectUri);
editConfiguration.setVarNameForPredicate("predicate");
editConfiguration.setPredicateUri(predicateUri);
//this needs to be set for the editing to be triggered properly, otherwise the 'prepare' method
//pretends this is a data property editing statement and throws an error
//"object" : [ "objectVar" , "${objectUriJson}" , "URI"],
if(EditConfigurationUtils.isObjectProperty(predicateUri, vreq)) {
log.debug("This is an predicate property: " + predicateUri);
log.debug("This is an subject property: " + subjectUri);
this.initObjectParameters(vreq);
log.debug("This is an object property: " + objectUri);
this.processObjectPropForm(vreq, editConfiguration);
} else {
log.debug("This is a data property: " + predicateUri);
}
}
private void initObjectParameters(VitroRequest vreq) {
//in case of object property
objectUri = EditConfigurationUtils.getObjectUri(vreq);
}
private void processObjectPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
editConfiguration.setVarNameForObject("objectVar");
editConfiguration.setObject(objectUri);
//this needs to be set for the editing to be triggered properly, otherwise the 'prepare' method
//pretends this is a data property editing statement and throws an error
//TODO: Check if null in case no object uri exists but this is still an object property
}
//Get N3 required
//Handles both object and data property
private List<String> generateN3Required(VitroRequest vreq) {
List<String> n3ForEdit = new ArrayList<String>();
getTextExcerpts(vreq);
if (excerptIDs.isEmpty()) {
String editString = "?subject ?predicate ?objectVar .";
n3ForEdit.add(editString);
} else {
for (String excerptID : excerptIDs) {
String editString = "<"+excerptID+">" + " ?predicate ?objectVar .";
log.debug(editString);
n3ForEdit.add(editString);
}
}
return n3ForEdit;
}
private List<String> generateN3Optional() {
List<String> n3Inverse = new ArrayList<String>();
n3Inverse.add("?objectVar ?inverseProp ?subject .");
return n3Inverse;
}
private void getTextExcerpts(VitroRequest vreq) {
ResultSet excerptResults = QueryUtils.getLanguageNeutralQueryResults(getExcerptsQueryString(), vreq);
while (excerptResults.hasNext()) {
QuerySolution solution = excerptResults.nextSolution();
String excerptID = solution.get("excerptID").asResource().toString();
log.debug(excerptID);
excerptIDs.add(excerptID);
}
}
private String getExcerptsQueryString() {
return "PREFIX ts_: <https://litvinovg.pro/text_structures#> "
+"SELECT DISTINCT ?excerptID "
+"WHERE { "
+"<" + subjectUri + "> ts_:hasTOC ?toc . "
+"?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerptID . "
+"} ";
}
//Set queries
private String retrieveQueryForInverse () {
String queryForInverse = "PREFIX owl: <http://www.w3.org/2002/07/owl#>"
+ " SELECT ?inverse_property "
+ " WHERE { ?inverse_property owl:inverseOf ?predicate } ";
return queryForInverse;
}
private void setUrisAndLiteralsInScope(EditConfigurationVTwo editConfiguration) {
HashMap<String, List<String>> urisInScope = new HashMap<String, List<String>>();
//note that at this point the subject, predicate, and object var parameters have already been processed
urisInScope.put(editConfiguration.getVarNameForSubject(),
Arrays.asList(new String[]{editConfiguration.getSubjectUri()}));
urisInScope.put(editConfiguration.getVarNameForPredicate(),
Arrays.asList(new String[]{editConfiguration.getPredicateUri()}));
//this shoudl happen in edit configuration prepare for object prop update
//urisInScope.put(editConfiguration.getVarNameForObject(),
// Arrays.asList(new String[]{editConfiguration.getObject()}));
//inverse property uris should be included in sparql for additional uris in edit configuration
editConfiguration.setUrisInScope(urisInScope);
//Uris in scope include subject, predicate, and object var
editConfiguration.setLiteralsInScope(new HashMap<String, List<Literal>>());
}
//n3 should look as follows
//?subject ?predicate ?objectVar
private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
List<String> urisOnForm = new ArrayList<String>();
List<String> literalsOnForm = new ArrayList<String>();
//uris on form should be empty if data property
urisOnForm.add("objectVar");
editConfiguration.setUrisOnform(urisOnForm);
editConfiguration.setLiteralsOnForm(literalsOnForm);
}
//This is for various items
private void setSparqlQueries(EditConfigurationVTwo editConfiguration) {
//Sparql queries defining retrieval of literals etc.
editConfiguration.setSparqlForAdditionalLiteralsInScope(new HashMap<String, String>());
Map<String, String> urisInScope = new HashMap<String, String>();
urisInScope.put("inverseProp", this.retrieveQueryForInverse());
editConfiguration.setSparqlForAdditionalUrisInScope(urisInScope);
editConfiguration.setSparqlForExistingLiterals(generateSparqlForExistingLiterals());
editConfiguration.setSparqlForExistingUris(generateSparqlForExistingUris());
}
//Get page uri for object
private HashMap<String, String> generateSparqlForExistingUris() {
HashMap<String, String> map = new HashMap<String, String>();
return map;
}
private HashMap<String, String> generateSparqlForExistingLiterals() {
HashMap<String, String> map = new HashMap<String, String>();
return map;
}
protected void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) throws Exception {
setFields(editConfiguration, vreq, predicateUri, null);
}
protected void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri, List<VClass> rangeTypes) throws Exception {
FieldVTwo field = new FieldVTwo();
field.setName("objectVar");
List<String> validators = new ArrayList<String>();
validators.add("nonempty");
field.setValidators(validators);
if( ! doAutoComplete ){
field.setOptions( new IndividualsViaObjectPropetyOptions(
subjectUri,
predicateUri,
rangeTypes,
objectUri,
vreq ));
}else{
field.setOptions(null);
}
Map<String, FieldVTwo> fields = new HashMap<String, FieldVTwo>();
fields.put(field.getName(), field);
editConfiguration.setFields(fields);
}
private void prepareForUpdate(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
//Here, retrieve model from
OntModel model = ModelAccess.on(session.getServletContext()).getOntModel();
//if object property
if(EditConfigurationUtils.isObjectProperty(EditConfigurationUtils.getPredicateUri(vreq), vreq)){
Individual objectIndividual = EditConfigurationUtils.getObjectIndividual(vreq);
if(objectIndividual != null) {
//update existing object
editConfiguration.prepareForObjPropUpdate(model);
} else {
//new object to be created
editConfiguration.prepareForNonUpdate( model );
}
} else {
throw new Error("DefaultObjectPropertyForm does not handle data properties.");
}
}
private boolean isSelectFromExisting(VitroRequest vreq) {
String predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
if(EditConfigurationUtils.isDataProperty(predicateUri, vreq)) {
return false;
}
ObjectProperty objProp = EditConfigurationUtils.getObjectPropertyForPredicate(vreq, EditConfigurationUtils.getPredicateUri(vreq));
return objProp.getSelectFromExisting();
}
//Additional processing, eg. select from existing
//This is really process prohibited from search
private void processProhibitedFromSearch(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfig) {
if(isSelectFromExisting(vreq)) {
// set ProhibitedFromSearch object so picklist doesn't show
// individuals from classes that should be hidden from list views
OntModel displayOntModel = ModelAccess.on(session.getServletContext()).getOntModel(DISPLAY);
ProhibitedFromSearch pfs = new ProhibitedFromSearch(
DisplayVocabulary.SEARCH_INDEX_URI, displayOntModel);
if( editConfig != null )
editConfig.setProhibitedFromSearch(pfs);
}
}
//Form specific data
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
//range options need to be stored for object property
//Store field names
List<String> objectSelect = new ArrayList<String>();
objectSelect.add(editConfiguration.getVarNameForObject());
//TODO: Check if this is the proper way to do this?
formSpecificData.put("objectSelect", objectSelect);
if(customErrorMessages != null && !customErrorMessages.isEmpty()) {
formSpecificData.put("customErrorMessages", customErrorMessages);
}
editConfiguration.setFormSpecificData(formSpecificData);
}
public void addFormSpecificDataForAC(EditConfigurationVTwo editConfiguration, VitroRequest vreq, HttpSession session) throws SearchEngineException {
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
//Get the edit mode
formSpecificData.put("editMode", getEditMode(vreq).toString().toLowerCase());
//We also need the type of the object itself
List<VClass> types = getRangeTypes(vreq);
//if types array contains only owl:Thing, the search will not return any results
//In this case, set an empty array
if(types.size() == 1 && types.get(0).getURI().equals(VitroVocabulary.OWL_THING) ){
types = new ArrayList<VClass>();
}
StringBuilder typesBuff = new StringBuilder();
for (VClass type : types) {
if (type.getURI() != null) {
typesBuff.append(type.getURI()).append(",");
}
}
formSpecificData.put("objectTypes", typesBuff.toString());
log.debug("autocomplete object types : " + formSpecificData.get("objectTypes"));
//Get label for individual if it exists
if(EditConfigurationUtils.getObjectIndividual(vreq) != null) {
String objectLabel = EditConfigurationUtils.getObjectIndividual(vreq).getName();
formSpecificData.put("objectLabel", objectLabel);
}
//TODO: find out if there are any individuals in the classes of objectTypes
formSpecificData.put("rangeIndividualsExist", rangeIndividualsExist(types) );
formSpecificData.put("sparqlForAcFilter", getSparqlForAcFilter(vreq));
if(customErrorMessages != null && !customErrorMessages.isEmpty()) {
formSpecificData.put("customErrorMessages", customErrorMessages);
}
editConfiguration.setTemplate(acObjectPropertyTemplate);
editConfiguration.setFormSpecificData(formSpecificData);
}
private Object rangeIndividualsExist(List<VClass> types) throws SearchEngineException {
SearchEngine searchEngine = ApplicationUtils.instance().getSearchEngine();
boolean rangeIndividualsFound = false;
for( VClass type:types){
//search for type count.
SearchQuery query = searchEngine.createQuery();
query.setQuery( VitroSearchTermNames.RDFTYPE + ":" + type.getURI());
query.setRows(0);
SearchResponse rsp = searchEngine.query(query);
SearchResultDocumentList docs = rsp.getResults();
if( docs.getNumFound() > 0 ){
rangeIndividualsFound = true;
break;
}
}
return rangeIndividualsFound;
}
public String getSubjectUri() {
return subjectUri;
}
public String getPredicateUri() {
return predicateUri;
}
public String getObjectUri() {
return objectUri;
}
/** get the auto complete edit mode */
public EditMode getEditMode(VitroRequest vreq) {
//In this case, the original jsp didn't rely on FrontEndEditingUtils
//but instead relied on whether or not the object Uri existed
String objectUri = EditConfigurationUtils.getObjectUri(vreq);
EditMode editMode = FrontEndEditingUtils.EditMode.ADD;
if(objectUri != null && !objectUri.isEmpty()) {
editMode = FrontEndEditingUtils.EditMode.EDIT;
}
return editMode;
}
public String getSparqlForAcFilter(VitroRequest vreq) {
String subject = EditConfigurationUtils.getSubjectUri(vreq);
String predicate = EditConfigurationUtils.getPredicateUri(vreq);
//Get all objects for existing predicate, filters out results from addition and edit
String query = "SELECT ?objectVar WHERE { " +
"<" + subject + "> <" + predicate + "> ?objectVar .} ";
return query;
}
}

View file

@ -1,306 +0,0 @@
/* $This file is distributed under the terms of the license in LICENSE$ */
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
import javax.servlet.http.HttpSession;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.vocabulary.RDFS;
import org.apache.jena.vocabulary.XSD;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.RequestIdentifiers;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.common.HasAssociatedIndividual;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.admin.ShowAuthController.AssociatedIndividual;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation;
/**
* Generates the edit configuration for a default property form.
* ModelChangePreprocessor creates the rdfs:label statement.
*/
public class CompilationGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator {
private String associatedProfile;
private int excerptsCounter;
@Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
EditConfigurationVTwo config = new EditConfigurationVTwo();
associatedProfile = getAssociatedProfile(vreq);
excerptsCounter = parseCounter(vreq);
config.setTemplate( "compilationForm.ftl" );
config.setN3Required( generateN3Required(vreq));
//Optional because user may have selected either person or individual of another kind
//Person uses first name and last name whereas individual of other class would use label
//middle name is also optional
//config.setN3Optional(generateN3Optional());
config.addNewResource("newCompilation", vreq.getWebappDaoFactory().getDefaultNamespace());
config.addNewResource("newCompilationTOC", vreq.getWebappDaoFactory().getDefaultNamespace());
config.addField(new FieldVTwo().
setName("rawQueryString").
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
config.addField(new FieldVTwo().
setName("queryBuilderRules").
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
for (int itemN = 1; itemN <= excerptsCounter; itemN++) {
String tocItem = "tocItem" + itemN;
config.addNewResource(tocItem, vreq.getWebappDaoFactory().getDefaultNamespace());
String tocLevel = "tocLevel" + itemN;
config.addNewResource(tocLevel, vreq.getWebappDaoFactory().getDefaultNamespace());
String tocItemName = tocItem + "Name";
config.addField(new FieldVTwo().
setName(tocItemName).
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
String tocLevelName = tocLevel + "Name";
config.addField(new FieldVTwo().
setName(tocLevelName).
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
String excerpt = "excerpt" + itemN;
config.addField(new FieldVTwo().
setName(excerpt).
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
}
config.setUrisOnform(getUrisOnForm());
config.setLiteralsOnForm( getLiteralsOnForm());
setUrisAndLiteralsInScope(config);
//No SPARQL queries for existing since this is only used to create new, never for edit
config.addField(new FieldVTwo().
setName("newCompilationLabel").
setRangeDatatypeUri(XSD.xstring.getURI()).
setValidators(getCompilationNameValidators(vreq)));
addFormSpecificData(config, vreq);
config.addValidator(new AntiXssValidation());
//This combines the first and last name into the rdfs:label
// currently being done via javascript in the template. May use this again
// when/if updated to ISF ontology. tlw72
// config.addModelChangePreprocessor(new FoafNameToRdfsLabelPreprocessor());
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
config.setFormUrl(formUrl);
//Note, the spaces are important - they were added by ProcessRdfFormController earlier
//as a means of ensuring the substitution worked correctly - as the regex expects spaces
config.setEntityToReturnTo(" ?newCompilation ");
prepare(vreq, config);
return config;
}
private List<String> getUrisOnForm() {
List<String> uris = list();
for (int itemN = 1; itemN <= excerptsCounter; itemN++) {
String excerpt = "excerpt" + itemN;
uris.add(excerpt);
}
return uris;
}
private List<String> getLiteralsOnForm() {
List<String> literals = list( "newCompilationLabel");
for (int itemN = 1; itemN <= excerptsCounter; itemN++) {
String tocItemName = "tocItem" + itemN + "Name";
String tocLevelName = "tocLevel" + itemN + "Name";
literals.add(tocItemName);
literals.add(tocLevelName);
literals.add("rawQueryString");
literals.add("queryBuilderRules");
}
return literals;
}
private String getAssociatedProfile(VitroRequest vreq) {
String associatedProfile;
IdentifierBundle ids = RequestIdentifiers.getIdBundleForRequest(vreq);
Collection<String> individualURIs = HasAssociatedIndividual.getIndividualUris(ids);
Iterator<String> uriIterator = individualURIs.iterator();
if (uriIterator.hasNext()) {
associatedProfile = uriIterator.next();
} else {
associatedProfile = "";
}
return associatedProfile;
}
private List<String> generateN3Required(VitroRequest vreq) {
StringBuilder n3Req = new StringBuilder();
n3Req.append("@prefix ts: <https://litvinovg.pro/text_structures#> .\n");
n3Req.append("?newCompilation <" + VitroVocabulary.RDF_TYPE + "> <" + getTypeOfNew(vreq) + "> .\n");
n3Req.append("?newCompilation <https://litvinovg.pro/text_structures#modificationTime> " + getModificationTime() + " .\n");
n3Req.append("?newCompilation ts:rawQueryString ?rawQueryString .\n");
n3Req.append("?newCompilation ts:queryBuilderRules ?queryBuilderRules .\n");
n3Req.append("?newCompilation <" + RDFS.label.getURI() + "> ?newCompilationLabel .\n");
n3Req.append("?newCompilation ts:hasTOC ?newCompilationTOC .\n");
n3Req.append("?newCompilationTOC <" + VitroVocabulary.RDF_TYPE + "> ts:TOC .\n");
n3Req.append("?newCompilationTOC <" + RDFS.label.getURI() + "> ?newCompilationLabel .\n");
if (!associatedProfile.isEmpty()) {
n3Req.append("<" + associatedProfile + "> ts:compilatorOf ?newCompilation .\n");
}
//n3Req.append();
for (int itemN = 1; itemN <= excerptsCounter; itemN++) {
String tocItemVar = "?tocItem" + itemN ;
String tocItemNameVar = tocItemVar + "Name" ;
String tocLevelVar = "?tocLevel" + itemN ;
String tocLevelVarName = tocLevelVar + "Name" ;
String excerptVar = "?excerpt" + itemN ;
n3Req.append("?newCompilationTOC ts:hasTOCItem " + tocItemVar + " .\n");
n3Req.append(tocItemVar + " <" + VitroVocabulary.RDF_TYPE + "> ts:TOCItem .\n");
n3Req.append(tocItemVar + " <" + RDFS.label.getURI() + "> " + tocItemNameVar + " .\n");
n3Req.append(tocItemVar + " ts:itemNumber " + itemN + " .\n");
n3Req.append(tocItemVar + " ts:pointsTo " + tocLevelVar + " .\n");
n3Req.append(tocLevelVar + " <" + VitroVocabulary.RDF_TYPE + "> ts:TOCLevel .\n");
n3Req.append(tocLevelVar + " <" + RDFS.label.getURI() + "> " + tocLevelVarName + " .\n");
n3Req.append(tocLevelVar + " ts:hasText " + excerptVar + ".\n");
}
return list(n3Req.toString());
}
private List<String> generateN3Optional() {
List<String> n3OptList = list();
StringBuilder n3Opt = new StringBuilder();
n3Opt.append("@prefix ts: <https://litvinovg.pro/text_structures#> .\n");
n3Opt.append("?newCompilation ts:rawQueryString ?rawQueryString .\n");
n3Opt.append("?newCompilation ts:queryBuilderRules ?queryBuilderRules .\n");
n3OptList.add(n3Opt.toString());
return n3OptList;
}
private String getModificationTime() {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
sd.setTimeZone(TimeZone.getTimeZone("GMT"));
Date currentTime = Calendar.getInstance().getTime();
String todayAsString = "\"" + sd.format(currentTime) + "\"^^<http://www.w3.org/2001/XMLSchema#dateTime>";
return todayAsString;
}
private static Integer parseCounter(VitroRequest vreq) {
String text = vreq.getParameter("excerptsCount");
if (text == null ) {
return 0;
}
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
return 0;
}
}
private List<String> getCompilationNameValidators(VitroRequest vreq) {
List<String> validators = new ArrayList<String>();
if (isCompilationType(vreq)) {
validators.add("nonempty");
}
return validators;
}
//Get parameter from HTTP request for type of new individual
private String getTypeOfNew(VitroRequest vreq) {
String typeUri = vreq.getParameter("typeOfNew");
if( typeUri == null || typeUri.trim().isEmpty() )
return getCompilationClassURI();
else
return typeUri;
}
//Form specific data
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
formSpecificData.put("typeName", getTypeName(vreq));
//Put in whether or not person type
if(isCompilationType(vreq)) {
//Doing this b/c unsure how freemarker will handle boolean value from JAVA
formSpecificData.put("isCompilationType", "true");
} else {
formSpecificData.put("isCompilationType", "false");
}
formSpecificData.put("excerptsCounter", excerptsCounter);
editConfiguration.setFormSpecificData(formSpecificData);
}
private String getTypeName(VitroRequest vreq) {
String typeOfNew = getTypeOfNew(vreq);
VClass type = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(typeOfNew);
return type.getName();
}
public String getCompilationClassURI() {
return "https://litvinovg.pro/text_structures#compilation";
}
public boolean isCompilationType(VitroRequest vreq) {
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
Boolean isCompilationType = Boolean.FALSE;
String foafPersonType = getCompilationClassURI();
String typeOfNew = getTypeOfNew(vreq);
List<String> superTypes = wdf.getVClassDao().getAllSuperClassURIs(typeOfNew);
//add the actual type as well so we can add that for the list to be checked
superTypes.add(typeOfNew);
if( superTypes != null ){
for( String typeUri : superTypes){
if( foafPersonType.equals(typeUri)) {
isCompilationType = Boolean.TRUE;
break;
}
}
}
return isCompilationType;
}
private void setUrisAndLiteralsInScope(EditConfigurationVTwo editConfiguration) {
HashMap<String, List<String>> urisInScope = new HashMap<String, List<String>>();
//note that at this point the subject, predicate, and object var parameters have already been processed
urisInScope.put(editConfiguration.getVarNameForSubject(),
Arrays.asList(new String[]{editConfiguration.getSubjectUri()}));
urisInScope.put(editConfiguration.getVarNameForPredicate(),
Arrays.asList(new String[]{editConfiguration.getPredicateUri()}));
editConfiguration.setUrisInScope(urisInScope);
//Uris in scope include subject, predicate, and object var
editConfiguration.setLiteralsInScope(new HashMap<String, List<Literal>>());
}
private String N3_PREFIX = "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n";
}

View file

@ -1,77 +1,24 @@
@prefix : <http://vitro.mannlib.cornell.edu/ns/vitro/ApplicationSetup#> .
@prefix searchIndex: <java:edu.cornell.mannlib.vitro.webapp.searchindex#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:vivodocumentModifier_excerptsInComplexPublications
:vivodocumentModifier_excerptsInArticles
a <java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.SelectQueryDocumentModifier> ,
<java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.DocumentModifier> ;
rdfs:label "Populate complex publications with excerpts" ;
rdfs:label "Elenph article excerpts" ;
:hasTargetField "ALLTEXT" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?value
SELECT DISTINCT ?elenphExcerpt ?property ?value
WHERE {
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
VALUES ?property { ts:works ts:bibliography ts:htmlExcerpt ts:keywords }
?excerpt ?property ?value .
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ?property ?value .
}
""" .
:vivoUriFinder_excerptsInComplexPublications
a searchIndex:indexing.IndexingUriFinder ,
searchIndex:indexing.SelectQueryUriFinder ;
rdfs:label "When excerpts change" ;
:hasSelectQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
SELECT ?uri
WHERE {
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?subject .
}
""" .
:vivoUriFinder_onRubricsAssign
a searchIndex:indexing.IndexingUriFinder ,
searchIndex:indexing.SelectQueryUriFinder ;
rdfs:label "When rubric was assigned" ;
:hasSelectQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
SELECT ?uri
WHERE {
?subject a ts:textExcerpt .
VALUES ?uri { ?subject }
}
""" .
:vivodocumentModifier_PopulateTextWithHTMLContentsOfExcerpts
a <java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.SelectQueryDocumentModifier> ,
<java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.DocumentModifier> ;
rdfs:label "Html text to text field" ;
:hasTargetField "text" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?htmlExcerpt
WHERE {
{
?uri rdf:type ts:textExcerpt .
?uri ts:htmlExcerpt ?htmlExcerpt .
}
UNION
{
?uri rdf:type ts:complexPublication .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
?excerpt ts:htmlExcerpt ?htmlExcerpt .
}
}
""" .
:vivodocumentModifier_rubrics
a <java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.SelectQueryDocumentModifier> ,
<java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.DocumentModifier> ;
@ -79,22 +26,22 @@
:hasTargetField "rubrics" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX pr: <https://iph.ras.ru/relationships#>
SELECT DISTINCT ?rubric
WHERE {
{
?uri rdf:type ts:textExcerpt .
?uri rdf:type ts_:elenphExcerpt .
?uri pr:belongsTo ?assignedRubric .
?assignedRubric (pr:hasParent)* ?rubric .
}
UNION
{
?uri rdf:type ts:complexPublication .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
?excerpt pr:belongsTo ?assignedRubric .
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?artExcerpt .
?artExcerpt pr:belongsTo ?assignedRubric .
?assignedRubric (pr:hasParent)* ?rubric .
}
}
@ -122,20 +69,20 @@
:hasTargetField "keywords" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?keywords
WHERE {
{
?uri rdf:type ts:elenphArticle .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?elenphExcerpt .
?elenphExcerpt ts:keywords ?keywords .
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:keywords ?keywords .
}
UNION
{
?uri rdf:type ts:elenphExcerpt .
?uri ts:keywords ?keywords .
?uri rdf:type ts_:elenphExcerpt .
?uri ts_:keywords ?keywords .
}
}
""" .
@ -147,20 +94,20 @@
:hasTargetField "bibliography" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography
WHERE {
{
?uri rdf:type ts:elenphArticle .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?elenphExcerpt .
?elenphExcerpt ts:bibliography ?bibliography .
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:bibliography ?bibliography .
}
UNION
{
?uri rdf:type ts:elenphExcerpt .
?uri ts:bibliography ?bibliography .
?uri rdf:type ts_:elenphExcerpt .
?uri ts_:bibliography ?bibliography .
}
}
""" .

View file

@ -1,144 +0,0 @@
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ts_: <https://litvinovg.pro/text_structures#> .
@prefix display: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationExcerptsContentDataGetter .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationExcerptPathsDataGetter .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationWorksDataGetter .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationBibliographyDataGetter .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationAuthorsDataGetter .
<https://litvinovg.pro/text_structures#compilation> display:hasDataGetter display:getCompilationRubricsDataGetter .
display:getCompilationExcerptsContentDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "excerpts";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT ?elenphExcerpt ?htmlLabel ?htmlContent (COUNT (distinct ?excerptWorks) as ?worksCounter) (COUNT (distinct ?excerptBibliography) as ?bibliographyCounter)
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:htmlExcerpt ?htmlContent .
?elenphExcerpt rdfs:label ?htmlLabel .
OPTIONAL{ ?elenphExcerpt ts_:works ?excerptWorks . }
OPTIONAL{ ?elenphExcerpt ts_:bibliography ?excerptBibliography . }
} GROUP BY ?elenphExcerpt ?htmlLabel ?htmlContent ORDER BY ?elenphExcerpt
""" .
display:getCompilationExcerptPathsDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "paths";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) (COUNT(?outline) AS ?level) ?tocElement ?elenphExcerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc ts_:hasTOCItem/(ts_:pointsTo/ts_:hasTOCItem)* ?tmpTOCItem .
?tmpTOCItem rdf:type ts_:TOCItem .
?tmpTOCItem ts_:pointsTo/(ts_:hasTOCItem/ts_:pointsTo)* ?tocElement .
?tmpTOCItem ts_:itemNumber ?outline .
OPTIONAL {
?tocElement ts_:hasText ?elenphExcerpt .
}
{
SELECT ?tocElement
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+ ?tocElement .
?tocElement rdf:type ts_:TOCLevel .
}
}
} GROUP BY ?tocElement ?elenphExcerpt ORDER BY ?path
""" .
display:getCompilationBibliographyDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "bibliography";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:bibliography ?bibliography .
} ORDER BY ?bibliography
""" .
display:getCompilationWorksDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "works";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?works ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:works ?works .
} ORDER BY ?works
""" .
display:getCompilationAuthorsDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "authors";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?authorInitials ?authorFamily ?authorGivenName ?orgName ?orgPostalCode ?orgAddress
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:hasAuthor ?participant .
?participant ts_:participantFamily ?authorFamily .
?participant ts_:participantInitials ?authorInitials .
?participant ts_:participantGivenName ?authorGivenName .
OPTIONAL { ?participant ts_:affiliatedWith ?organization .
OPTIONAL { ?organization ts_:officialOrganizationName ?orgName } .
OPTIONAL { ?organization ts_:organizationPostalCode ?orgPostalCode } .
OPTIONAL { ?organization ts_:organizationAddress ?orgAddress } .
}
} ORDER BY ?authorFamily
""" .
display:getCompilationRubricsDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "rubrics";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX pr: <https://iph.ras.ru/relationships#>
SELECT DISTINCT ?rubricID ?rubricName
WHERE {
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?artExcerpt .
?artExcerpt pr:belongsTo ?rubricID .
?rubricID rdfs:label ?rubricName .
} ORDER BY ?rubricID
""" .

View file

@ -35,8 +35,7 @@ display:customSearchFiltersDataGetter
?searchFilter search:id ?id .
?searchFilter search:filterFiled ?searchField .
?searchField search:indexField ?field .
BIND (replace ( ?name, "«", "" ) AS ?sortName)
} ORDER BY ?field ?sortName
} ORDER BY ?field ?name
""" .

View file

@ -1,48 +0,0 @@
@prefix display: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
<https://litvinovg.pro/text_structures#compilation> display:hasDeleteQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
DESCRIBE ?individualURI ?tocElement ?tocItem ?toc
WHERE {
OPTIONAL {
?individualURI ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)* ?tocElement .
OPTIONAL {
?tocElement ts:hasTOCItem ?tocItem .
}
}
}
""" .
<https://litvinovg.pro/text_structures#elenphArticle> display:hasDeleteQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DESCRIBE ?individualURI ?tocElement ?tocItem ?toc ?excerpt ?author ?organization
WHERE {
?individualURI rdf:type ts:elenphArticle .
OPTIONAL {
?individualURI ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)* ?tocElement .
OPTIONAL {
?tocElement ts:hasTOCItem ?tocItem .
}
OPTIONAL {
?tocElement ts:hasText ?excerpt .
OPTIONAL {
?excerpt ts:hasAuthor ?author .
OPTIONAL {
?author ts:affiliatedWith ?organization .
}
}
}
}
}
""" .
<https://litvinovg.pro/text_structures#elenphExcerpt> display:hasDeleteQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
DESCRIBE ?individualURI ?tocElement
WHERE
{
?tocElement ts:hasText ?individualURI .
FILTER NOT EXISTS {?tocElement ts:hasTOCItem ?tocItem }
}
""" .

View file

@ -26,15 +26,12 @@ display:getArticleExcerptsContentDataGetter
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT ?elenphExcerpt ?htmlLabel ?htmlContent (COUNT (distinct ?excerptWorks) as ?worksCounter) (COUNT (distinct ?excerptBibliography) as ?bibliographyCounter)
SELECT ?elenphExcerpt ?property ?value
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:htmlExcerpt ?htmlContent .
?elenphExcerpt rdfs:label ?htmlLabel .
OPTIONAL{ ?elenphExcerpt ts_:works ?excerptWorks . }
OPTIONAL{ ?elenphExcerpt ts_:bibliography ?excerptBibliography . }
} GROUP BY ?elenphExcerpt ?htmlLabel ?htmlContent ORDER BY ?elenphExcerpt
?elenphExcerpt ?property ?value .
} ORDER BY ?elenphExcerpt
""" .
display:getArticleExcerptPathsDataGetter
@ -42,11 +39,11 @@ display:getArticleExcerptPathsDataGetter
display:saveToVar "paths";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) (COUNT(?outline) AS ?level) ?tocElement ?elenphExcerpt
WHERE {
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) ?tocElement ?elenphExcerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc ts_:hasTOCItem/(ts_:pointsTo/ts_:hasTOCItem)* ?tmpTOCItem .
?tmpTOCItem rdf:type ts_:TOCItem .
@ -56,11 +53,12 @@ display:getArticleExcerptPathsDataGetter
?tocElement ts_:hasText ?elenphExcerpt .
}
{
SELECT ?elenphArticle ?tocElement
SELECT ?elenphArticle ?tocElement
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+ ?tocElement .
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+ ?tocElement .
?tocElement rdf:type ts_:TOCLevel .
?individualURI rdf:type ts_:elenphArticle .
}
}
} GROUP BY ?tocElement ?elenphExcerpt ORDER BY ?path
@ -74,11 +72,11 @@ display:getArticleBibliographyDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography ?excerpt
SELECT DISTINCT ?bibliography
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:bibliography ?bibliography .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:bibliography ?bibliography .
} ORDER BY ?bibliography
""" .
@ -90,11 +88,11 @@ display:getArticleWorksDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?works ?excerpt
SELECT DISTINCT ?works
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:works ?works .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:works ?works .
} ORDER BY ?works
""" .
@ -106,21 +104,12 @@ display:getArticleAuthorsDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?authorInitials ?authorFamily ?authorGivenName ?orgName ?orgPostalCode ?orgAddress
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:hasAuthor ?participant .
?participant ts_:participantFamily ?authorFamily .
?participant ts_:participantInitials ?authorInitials .
?participant ts_:participantGivenName ?authorGivenName .
OPTIONAL { ?participant ts_:affiliatedWith ?organization .
OPTIONAL { ?organization ts_:officialOrganizationName ?orgName } .
OPTIONAL { ?organization ts_:organizationPostalCode ?orgPostalCode } .
OPTIONAL { ?organization ts_:organizationAddress ?orgAddress } .
}
} ORDER BY ?authorFamily
SELECT DISTINCT ?author
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:author ?author .
} ORDER BY ?author
""" .
display:getArticleRubricsDataGetter

View file

@ -8,7 +8,6 @@
<https://litvinovg.pro/text_structures#elenphExcerpt> display:hasDataGetter display:getExcerptAssignedArticlesDataGetter .
<https://litvinovg.pro/text_structures#elenphExcerpt> display:hasDataGetter display:getExcerptAuthorsDataGetter .
display:getExcerptAssignedArticlesDataGetter
@ -28,25 +27,3 @@ display:getExcerptAssignedArticlesDataGetter
} ORDER BY ?articleName
""" .
display:getExcerptAuthorsDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "authors";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?authorInitials ?authorFamily ?authorGivenName ?orgName ?orgPostalCode ?orgAddress
WHERE {
?individualURI ts_:hasAuthor ?participant .
?participant ts_:participantFamily ?authorFamily .
?participant ts_:participantInitials ?authorInitials .
?participant ts_:participantGivenName ?authorGivenName .
OPTIONAL { ?participant ts_:affiliatedWith ?organization .
OPTIONAL { ?organization ts_:officialOrganizationName ?orgName } .
OPTIONAL { ?organization ts_:organizationPostalCode ?orgPostalCode } .
OPTIONAL { ?organization ts_:organizationAddress ?orgAddress } .
}
} ORDER BY ?authorFamily
""" .

View file

@ -1,11 +0,0 @@
@prefix vitroDisplay: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/search_ontology#filter> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/search_ontology#statement> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/search_ontology#searchField> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/search_ontology#sort> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/text_structures#TOC> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/text_structures#TOCLevel> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/text_structures#TOCItem> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/text_structures#publicationParticipant> .
vitroDisplay:SearchIndex vitroDisplay:excludeClass <https://litvinovg.pro/text_structures#organization> .

View file

@ -72,7 +72,6 @@
<rdfs:domain rdf:resource="https://iph.ras.ru/relationships#rubric"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://iph.ras.ru/relationships#belongsTo">
<vitro:customEntryFormAnnot>edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddRubricToELENPHArticleGenerator</vitro:customEntryFormAnnot>
<rdfs:range rdf:resource="https://iph.ras.ru/relationships#rubric"/>
<rdfs:label xml:lang="en-US">belongs to</rdfs:label>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
@ -80,7 +79,7 @@
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publication"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:about="https://iph.ras.ru/relationships#rubricOrder">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?><rdf:RDF
xmlns:ns="http://www.w3.org/2003/06/sw-vocab-status/ns#"
xmlns:search="https://litvinovg.pro/search_ontology#"
xmlns:scires="http://vivoweb.org/ontology/scientific-research#"
xmlns:ocresst="http://purl.org/net/OCRe/statistics.owl#"
xmlns:ocresd="http://purl.org/net/OCRe/study_design.owl#"
@ -30,63 +29,40 @@
xmlns:vcard="http://www.w3.org/2006/vcard/ns#"
xmlns:bibo="http://purl.org/ontology/bibo/"
xmlns:fabio="http://purl.org/spar/fabio/"
xmlns:search="https://dideside.com/searchOntology#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<owl:Ontology rdf:about="https://litvinovg.pro/text_structures">
<rdfs:label xml:lang="ru-RU">Text structures Ontology</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Text structures Ontology</rdfs:label>
<vitro:ontologyPrefixAnnot>ts</vitro:ontologyPrefixAnnot>
<rdfs:label xml:lang="ru-RU">Text structures Ontology</rdfs:label>
</owl:Ontology>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOC">
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">Table of contents</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Table of contents</rdfs:label>
<rdfs:subClassOf>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOCLevel"/>
</rdfs:subClassOf>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayRankAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayLimitAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#complexPublication">
<rdfs:label xml:lang="en-US">Complex Publication</rdfs:label>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#book">
<rdfs:subClassOf>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#publication"/>
</rdfs:subClassOf>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<rdfs:label xml:lang="en-US">Book</rdfs:label>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOC">
<rdfs:label xml:lang="en-US">Table of contents</rdfs:label>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOCLevel"/>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#publication">
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayLimitAnnot>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">Publication</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Publication</rdfs:label>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayRankAnnot>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#publicationParticipant">
<rdfs:label xml:lang="en-US">Publication Participant</rdfs:label>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
@ -95,87 +71,6 @@
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOCItem">
<rdfs:label xml:lang="en-US">TOC Item</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>TOC Item</rdfs:label>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#organization">
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">Organization</rdfs:label>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#elenphArticle">
<rdfs:subClassOf>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#encArticle"/>
</rdfs:subClassOf>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#elenphArticle"/>
<vitro:customDisplayViewAnnot>elenphAritcle.ftl</vitro:customDisplayViewAnnot>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Electronic philosophical encyclopedia article</rdfs:label>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:inClassGroup rdf:resource="http://vivo.mydomain.edu/individual/vitroClassGroupElenpharticles"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#compilation">
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#complexPublication"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:customDisplayViewAnnot>compilation.ftl</vitro:customDisplayViewAnnot>
<rdfs:label xml:lang="en-US">Compilation</rdfs:label>
<vitro:customEntryFormAnnot>edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.CompilationGenerator</vitro:customEntryFormAnnot>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#textExcerpt">
<vitro:inClassGroup rdf:resource="http://research.iph.ras.ru/vivo/individual/vitroClassGroupTableofcontents"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#publication"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Text excerpt</rdfs:label>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#book">
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">Book</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Book</rdfs:label>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayLimitAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayRankAnnot>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#complexPublication"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#journalArticle">
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayLimitAnnot>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#complexPublication"/>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayRankAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Journal Article</rdfs:label>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#encArticle">
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Encyclopedia article</rdfs:label>
@ -186,7 +81,13 @@
>-1</vitro:displayRankAnnot>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>-1</vitro:displayLimitAnnot>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#complexPublication"/>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#publication"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOCItem">
<rdfs:label xml:lang="en-US">TOC Item</rdfs:label>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#elenphExcerpt">
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
@ -195,53 +96,56 @@
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:customDisplayViewAnnot>elenphExcerpt.ftl</vitro:customDisplayViewAnnot>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
<rdfs:subClassOf>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#textExcerpt"/>
</rdfs:subClassOf>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Elenph Excerpt</rdfs:label>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#elenphArticle">
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#encArticle"/>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#elenphArticle"/>
<vitro:customDisplayViewAnnot>elenphAritcle.ftl</vitro:customDisplayViewAnnot>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Electronic philosophical encyclopedia article</rdfs:label>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:inClassGroup rdf:resource="http://vivo.mydomain.edu/individual/vitroClassGroupElenpharticles"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#textExcerpt">
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Text excerpt</rdfs:label>
<vitro:inClassGroup rdf:resource="http://research.iph.ras.ru/vivo/individual/vitroClassGroupTableofcontents"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#journal">
<rdfs:label xml:lang="en-US">Journal</rdfs:label>
<vitro:displayLimitAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayLimitAnnot>
<vitro:displayRankAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>-1</vitro:displayRankAnnot>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subClassOf rdf:resource="https://litvinovg.pro/text_structures#publication"/>
</owl:Class>
<owl:Class rdf:about="https://litvinovg.pro/text_structures#TOCLevel">
<vitro:inClassGroup rdf:resource="http://research.iph.ras.ru/vivo/individual/vitroClassGroupTableofcontents"/>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#TOCLevel"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">TOC Level</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>TOC Level</rdfs:label>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<obo:IAO_0000115>Table of contents element</obo:IAO_0000115>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<obo:IAO_0000115>Table of contents element</obo:IAO_0000115>
<rdfs:label xml:lang="en-US">TOC Level</rdfs:label>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<owl:equivalentClass rdf:resource="https://litvinovg.pro/text_structures#TOCLevel"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:Class>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#hasAuthor">
<rdfs:label xml:lang="en-US">has author</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#affiliatedWith">
<rdfs:label xml:lang="en-US">affiliated with</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#organization"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#compilatorOf">
<rdfs:label xml:lang="en-US">compilatorOf</rdfs:label>
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#compilation"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#hasTOCItem">
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#TOCLevel"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
@ -256,13 +160,22 @@
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#TOCItem"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#hasTOC">
<rdfs:label xml:lang="en-US">has TOC</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publication"/>
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#TOC"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="https://litvinovg.pro/text_structures#hasText">
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#textExcerpt"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#TOCLevel"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">has text</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>has text</rdfs:label>
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
@ -287,31 +200,29 @@
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#queryBuilderRules">
<rdfs:label xml:lang="en-US">Query Builder Rules</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#compilation"/>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#author">
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>author</rdfs:label>
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#author"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#rawQueryString">
<rdfs:label xml:lang="en-US">Raw Query String</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#compilation"/>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#works">
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#participantInitials">
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#works"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<rdfs:label xml:lang="en-US">Publication Participant Initials</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Works</rdfs:label>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#doi">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
@ -326,14 +237,6 @@
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#participantGivenName">
<rdfs:label xml:lang="en-US">Publication Participant Given Name</rdfs:label>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#firstPublication">
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphArticle"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#firstPublication"/>
@ -346,15 +249,6 @@
>First publication</rdfs:label>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#modificationTime">
<rdfs:label xml:lang="en-US">Modification time</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publication"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#keywords">
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Keywords</rdfs:label>
@ -380,46 +274,6 @@
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>html Excerpt</rdfs:label>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#participantFamily">
<rdfs:label xml:lang="en-US">Publication Participant Family</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#issue">
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphArticle"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Issue</rdfs:label>
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#issue"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#participantEmail">
<rdfs:label xml:lang="en-US">Publication Participant email</rdfs:label>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#publicationParticipant"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#works">
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#works"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Works</rdfs:label>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#yearAndMonth">
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Year and month</rdfs:label>
@ -433,6 +287,18 @@
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#yearAndMonth"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#affiliation">
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#affiliation"/>
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Affiliation</rdfs:label>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#bibliography">
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphExcerpt"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
@ -458,31 +324,18 @@
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#year"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:about="https://litvinovg.pro/text_structures#organizationAddress">
<rdfs:label xml:lang="en-US">Organization Address</rdfs:label>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#organization"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
<owl:FunctionalProperty rdf:about="https://litvinovg.pro/text_structures#organizationPostalCode">
<rdfs:label xml:lang="en-US">Organization Postal Code</rdfs:label>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<owl:DatatypeProperty rdf:about="https://litvinovg.pro/text_structures#issue">
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#elenphArticle"/>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>Issue</rdfs:label>
<vitro:inPropertyGroupAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/default#n6578"/>
<rdfs:subPropertyOf rdf:resource="https://litvinovg.pro/text_structures#issue"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#organization"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
<owl:FunctionalProperty rdf:about="https://litvinovg.pro/text_structures#officialOrganizationName">
<rdfs:label xml:lang="en-US">Official Organization Name</rdfs:label>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#organization"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:about="https://litvinovg.pro/text_structures#">
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"/>
@ -509,17 +362,4 @@
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#TOCItem"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</owl:FunctionalProperty>
<owl:FunctionalProperty rdf:about="https://litvinovg.pro/text_structures#hasTOC">
<rdfs:range rdf:resource="https://litvinovg.pro/text_structures#TOC"/>
<rdfs:domain rdf:resource="https://litvinovg.pro/text_structures#complexPublication"/>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:selectFromExistingAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</vitro:selectFromExistingAnnot>
<vitro:hiddenFromPublishBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<rdfs:label xml:lang="en-US">has TOC</rdfs:label>
<rdfs:label rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>has TOC</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/>
</owl:FunctionalProperty>
</rdf:RDF>

View file

@ -1,27 +0,0 @@
@prefix ts_: <https://litvinovg.pro/text_structures#> .
@prefix display: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
@prefix mydomain: <http://vivo.mydomain.edu/individual/> .
ts_:elenphExcerpt display:hasCustomView mydomain:elenphExcerptShortView .
mydomain:elenphExcerptShortView
a display:customViewForIndividual ;
display:appliesToContext "SEARCH" ;
display:hasTemplate "elenphExcerptShortView.ftl" ;
display:hasDataGetter mydomain:elenphExcerptShortViewDataGetter .
mydomain:elenphExcerptShortViewDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "excerptInfo";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX vivo: <http://vivoweb.org/ontology/core#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT ?property ?value
WHERE {
?individualUri ?property ?value .
?individualUri rdf:type ts_:elenphExcerpt .
}
""" .

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,18 +0,0 @@
{
let content = document.getElementById("wrapper-content");
let toc = document.getElementById("TOC");
createTOC(content, toc);
function createTOC(content, toc){
if (toc === null){
alert("no TOC element found");
return;
}
if (content === null){
alert("no content element found");
return;
}
}
}

View file

@ -22,3 +22,4 @@ Disallow: /vis/ # VIVO addition
Disallow: /visualizationAjax/ # VIVO addition
Disallow: /visualizationData/ # VIVO addition
Disallow: /qrcode # VIVO addition
Disallow: /individual # VIVO addition

View file

@ -1,49 +0,0 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for browsing individuals in class groups for menupages -->
<#import "lib-string.ftl" as str>
<noscript>
<p style="padding: 20px 20px 20px 20px;background-color:#f8ffb7">${i18n().browse_page_javascript_one} <a href="${urls.base}/browse" title="${i18n().index_page}">${i18n().index_page}</a> ${i18n().browse_page_javascript_two}</p>
</noscript>
<section id="noJavascriptContainer" class="hidden">
<section id="browse-by" role="region">
<nav role="navigation">
<ul id="browse-classes">
<#list vClassGroup?sort_by("displayRank") as vClass>
<#------------------------------------------------------------
Need to replace vClassCamel with full URL that allows function
to degrade gracefully in absence of JavaScript. Something
similar to what Brian had setup with widget-browse.ftl
------------------------------------------------------------->
<#assign vClassCamel = str.camelCase(vClass.name) />
<#-- Only display vClasses with individuals -->
<#if (vClass.entityCount > 0)>
<li id="${vClassCamel}"><a href="#${vClassCamel}" title="${i18n().browse_all_in_class}" data-uri="${vClass.URI}">${vClass.name} <span class="count-classes">(${vClass.entityCount})</span></a></li>
</#if>
</#list>
</ul>
<nav id="alpha-browse-container" role="navigation">
<h3 class="selected-class"></h3>
<#assign alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё" "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я" ] />
<ul id="alpha-browse-individuals">
<li><a href="#" class="selected" data-alpha="all" title="${i18n().select_all}">${i18n().all}</a></li>
<#list alphabet as letter>
<li><a href="#" data-alpha="${letter?lower_case}" title="${i18n().browse_all_starts_with(letter)}">${letter}</a></li>
</#list>
</ul>
</nav>
</nav>
<section id="individuals-in-class" role="region">
<ul role="list">
<#-- Will be populated dynamically via AJAX request -->
</ul>
</section>
</section>
</section>
<script type="text/javascript">
$('section#noJavascriptContainer').removeClass('hidden');
</script>

View file

@ -4,10 +4,8 @@
<#import "lib-vivo-properties.ftl" as p>
<div class="searchResult">
<a href="${individual.profileUrl}" title="${i18n().individual_name}">${individual.name}</a>
<@p.displayTitle individual />
<p class="snippet">${individual.snippet}</p>
</div>

View file

@ -1,16 +0,0 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for displaying search error message -->
<#if title??>
<div class="errorPageTitle">
<h2>${title?html}</h2>
</div>
</#if>
<div id="nomatchingTitle">
<p>
${message?html}
</p>
</div>
<#include "searchSelector.ftl">
<#include "search-help.ftl" >

View file

@ -1,49 +0,0 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#if origination?has_content && origination == "helpLink">
<div id="searchTipsTitleH2">
<h2>Search Tips</h2>
</div>
<span id="searchHelp">
<a href="#" onClick="history.back();return false;" title="back to results">Back to results</a>
</span>
<#else>
<div id="searchTipsTitleH3">
<h3>Search Tips</h3>
</div>
</#if>
<ul class="searchTips">
<li>Keep it simple! Use short, single terms unless your searches are returning too many results.</li>
<li>Use quotes to search for an entire phrase -- e.g., "<i>protein folding</i>".</li>
<li>Except for boolean operators, searches are <strong>not</strong> case-sensitive, so "Geneva" and "geneva" are equivalent</li>
<li>If you are unsure of the correct spelling, put ~ at the end of your search term -- e.g., <i>cabage~</i> finds <i>cabbage</i>, <i>steven~</i> finds <i>Stephen</i> and <i>Stefan</i> (as well as other similar names).</li>
</ul>
<div id="advancedTipsWrapper">
<h4><a id="advTipsLink" href="#">Advanced Tips</a></h4>
</div>
<ul id="advanced" class="searchTips" style="visibility:hidden">
<li>When you enter more than one term, search will return results containing all of them unless you add the Boolean "OR" -- e.g., <i>chicken</i> OR <i>egg</i>.</li>
<li>NOT" can help limit searches -- e.g., <i>climate</i> NOT <i>change</i>.</li>
<li>Phrase searches may be combined with Boolean operators -- e.g. "<i>climate change</i>" OR "<i>global warming</i>".</li>
<li>Close word variations will also be found -- e.g., <i>sequence</i> matches <i>sequences</i> and <i>sequencing</i>.</li>
<li>Use the wildcard * character to match an even wider variation -- e.g., <i>nano*</i> will match both <i>nanotechnology</i> and <i>nanofabrication</i>.</li>
<li>Search uses shortened versions of words -- e.g., a search for <i>cogniti*</i> finds nothing, while <i>cognit*</i> finds both <i>cognitive</i> and <i>cognition</i>.</li>
</ul>
<a id="closeLink" href="#" style="visibility:hidden;font-size:.825em;padding-left:8px">Close</a>
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/search.css" />')}
<script type="text/javascript">
$(document).ready(function(){
$('a#advTipsLink').click(function() {
$('ul#advanced').css("visibility","visible");
$('a#closeLink').css("visibility","visible");
$('a#closeLink').click(function() {
$('ul#advanced').css("visibility","hidden");
$('a#closeLink').css("visibility","hidden");
return false;
});
return false;
});
});
</script>

View file

@ -1,252 +0,0 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for displaying paged search results -->
<h2 class="searchResultsHeader">
<#include "searchSelector.ftl">
<#escape x as x?html>
<div id='searchQueryResults'> ${i18n().search_results_for} '${querytext}'</div>
<div id='limitedToClassGroup'> <#if classGroupName?has_content>${i18n().limited_to_type} '${classGroupName}'</#if> </div>
<div id='limitedToType'> <#if typeName?has_content>${i18n().limited_to_type} '${typeName}'</#if> </div>
</#escape>
<script type="text/javascript">
var url = window.location.toString();
if (url.indexOf("?") == -1){
var queryText = 'querytext=${querytext}';
} else {
var urlArray = url.split("?");
var queryText = urlArray[1];
}
var urlsBase = '${urls.base}';
</script>
<img id="downloadIcon" src="images/download-icon.png" alt="${i18n().download_results}" title="${i18n().download_results}" />
<#-- <span id="downloadResults" style="float:left"></span> -->
</h2>
<span id="searchHelp"><a href="${urls.base}/searchHelp" title="${i18n().search_help}">${i18n().not_expected_results}</a></span>
<div class="contentsBrowseGroup">
<#-- Refinement links -->
<#if classGroupLinks?has_content && classGroupLinks?size gt 1>
<div class="searchTOC">
<h4>${i18n().display_only}</h4>
<ul>
<#list classGroupLinks as link>
<li><a href="${link.url}" title="${i18n().class_group_link}">${link.text}</a><span>(${link.count})</span></li>
</#list>
</ul>
</div>
</#if>
<#if classLinks?has_content && classLinks?size gt 1 >
<div class="searchTOC">
<#if classGroupName?has_content>
<h4>${i18n().limit} ${classGroupName} ${i18n().to}</h4>
<#else>
<h4>${i18n().limit_to}</h4>
</#if>
<ul>
<#list classLinks as link>
<li><a href="${link.url}" title="${i18n().class_link}">${link.text}</a><span>(${link.count})</span></li>
</#list>
</ul>
</div>
</#if>
<div class="virtualArticleSwitch">
<label class="switch">${i18n().show_virtual_article}
<input id="virtualArticleCheck" type="checkbox" checked="false" onclick="showVirtualArticles();">
</label>
<#if user.loggedIn>
<button onclick="createNewCompilation()">${i18n().create_compilation_button}</button>
</#if>
</div>
<#-- Search results -->
<ul class="searchhits">
<#list individuals as individual>
<li>
<@shortView uri=individual.uri viewContext="search" />
</li>
</#list>
</ul>
<#-- Paging controls -->
<#if (pagingLinks?size > 0)>
<div class="searchpages">
${i18n().pages}:
<#if prevPage??><a class="prev" href="${prevPage}" title="${i18n().previous}">${i18n().previous}</a></#if>
<#list pagingLinks as link>
<#if link.url??>
<a href="${link.url}" title="${i18n().page_link}">${link.text}</a>
<#else>
<span>${link.text}</span> <#-- no link if current page -->
</#if>
</#list>
<#if nextPage??><a class="next" href="${nextPage}" title="${i18n().next_capitalized}">${i18n().next_capitalized}</a></#if>
</div>
</#if>
<br />
<#-- VIVO OpenSocial Extension by UCSF -->
<#if openSocial??>
<#if openSocial.visible>
<h3>OpenSocial</h3>
<script type="text/javascript" language="javascript">
// find the 'Search' gadget(s).
var searchGadgets = my.findGadgetsAttachingTo("gadgets-search");
var keyword = '${querytext}';
// add params to these gadgets
if (keyword) {
for (var i = 0; i < searchGadgets.length; i++) {
var searchGadget = searchGadgets[i];
searchGadget.additionalParams = searchGadget.additionalParams || {};
searchGadget.additionalParams["keyword"] = keyword;
}
}
else { // remove these gadgets
my.removeGadgets(searchGadgets);
}
</script>
<div id="gadgets-search" class="gadgets-gadget-parent" style="display:inline-block"></div>
</#if>
</#if>
</div> <!-- end contentsBrowseGroup -->
<script>
document.addEventListener('DOMContentLoaded', createVirtualCompilation(), false);
$('input[type=checkbox]').removeAttr('checked');
function showVirtualArticles(){
var checkBox = document.getElementById("virtualArticleCheck");
if (checkBox.checked == true){
$('.searchResult').hide();
$('.virtualArticlePart').show();
} else {
$('.searchResult').show();
$('.virtualArticlePart').hide();
}
}
function createNewCompilation() {
var excerpts = $('.compilationDraftExcerpt').toArray();
if (excerpts.length == 0){
alert("${i18n().create_compilation_no_excerpts}");
return;
}
var compilationName = window.prompt("${i18n().create_compilation_enter_name_notification}");
if (!compilationName){
alert("${i18n().create_compilation_no_name_entered_error}");
return;
}
var iframe = document.createElement("iframe");
var excerptsCounter = $('.compilationDraftExcerpt').length;
iframe.setAttribute("src", "${urls.base}/editRequestDispatch?typeOfNew=https%3A%2F%2Flitvinovg.pro%2Ftext_structures%23compilation&editForm=edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.CompilationGenerator&excerptsCount=" + excerptsCounter);
iframe.style.width = "1px";
iframe.style.height = "1px";
iframe.id="newCompilationIframe";
//iframe.style.display="none";
document.body.appendChild(iframe);
$('#newCompilationIframe').on('load', function(){
fillOutForm(compilationName);
});
}
function fillOutForm(compilationName){
var iframeDoc = document.getElementById('newCompilationIframe').contentWindow.document;
var rules = $('#builder').queryBuilder('getRules', { get_flags: true });
var query = format_query_string(rules, "", false);
iframeDoc.getElementById('queryBuilderRules').value = JSON.stringify(rules);
iframeDoc.getElementById('rawQueryString').value = query;
iframeDoc.getElementById('newCompilationLabel').value = compilationName;
var excerpts = $('.compilationDraftExcerpt').toArray();
for (i = 0;i < excerpts.length;i++){
var excerptUri = excerpts[i].getAttribute('partUri');
var excerptName = excerpts[i].getAttribute('partName');
var number = i + 1;
iframeDoc.getElementById("tocLevel" + number + "Name").value = excerptName + " (" + compilationName + ")";
iframeDoc.getElementById("tocItem" + number + "Name").value = excerptName + " (" + compilationName + ")";
iframeDoc.getElementById("excerpt" + number).value = excerptUri;
}
$('#newCompilationIframe').off('load');
iframeDoc.getElementById('submit').click();
$('#newCompilationIframe').on('load', function(){
redirectToNewCompilation();
});
}
function redirectToNewCompilation(){
var newURL = document.getElementById('newCompilationIframe').contentWindow.location.href;
window.open(newURL,"_self");
}
function createVirtualCompilation(){
let workSet = new Set();
let biblioSet = new Set();
var workDivs = $('.virtualArticleWork');
var biblioDivs = $('.virtualArticleBibliography');
biblioDivs.each(function() {
biblioSet.add($(this).html());
});
workDivs.each(function() {
workSet.add($(this).html());
});
var workArr = Array.from(workSet);
workArr.sort();
var biblioArr = Array.from(biblioSet);
biblioArr.sort();
if (workArr.length > 0 ) {
$('<div class="virtualWorks virtualArticlePart"><button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${i18n().sources_excerpt_button_text}</button><div class="virtualWorks"></div></div>').insertAfter($('.virtualArticlePart').last());
for (let value of workArr){
$('.virtualWorks').last().append( '<div class="work"><p>' + value + '</p></div>' );
}
}
if (biblioArr.length > 0 ) {
$('<div class="virtualBibliography virtualArticlePart"><button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${i18n().literature_excerpt_button_text}</button><div class="virtualBibliography"></div></div>').insertAfter($('.virtualArticlePart').last());
for (let value of biblioArr){
$('.virtualBibliography').last().append( '<div class="bibliography"><p>' + value + '</p></div>' );
}
}
$('.virtualWorks').hide();
$('.virtualBibliography').hide();
$('.virtualArticlePart').hide();
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
createRemoveButtons();
}
</script>
${stylesheets.add('<link rel="stylesheet" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />',
'<link rel="stylesheet" href="${urls.base}/css/search.css" />',
'<link rel="stylesheet" type="text/css" href="${urls.base}/css/jquery_plugins/qtip/jquery.qtip.min.css" />')}
${headScripts.add('<script src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip.min.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>'
)}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/searchDownload.js"></script>')}

View file

@ -7,13 +7,8 @@
<#include "individual-setup.ftl">
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/toc.js"></script>')}
<#import "individual-qrCodeGenerator.ftl" as qr>
<#import "lib-vivo-properties.ftl" as vp>
<#include "text-lib.ftl">
<#--Number of labels present-->
<#if !labelCount??>
<#assign labelCount = 0 >
@ -34,8 +29,6 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleHeaderWrapper">
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
@ -43,9 +36,6 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="float:left;border-right:1px solid #A6B1B0;"</#if>>
<#-- Label -->
<@p.label individual editable labelCount localesCount/>
<#if editable>
<@p.deleteIndividualLink individual />
</#if>
</h1>
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
<#assign title = propertyGroups.pullProperty("http://purl.obolibrary.org/obo/ARG_2000028","http://www.w3.org/2006/vcard/ns#Title")!>
@ -70,32 +60,19 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<@p.mostSpecificTypesPerson individual editable/>
</#if>
</#if>
</div>
<div class="articleToolsContainer">
<div class="metadataSwitch">
<@expandMetadataSwitch />
</div>
<div class="toolsWrapper">
<div class="articleButtons">
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess></#if>>
<#include "individual-iconControls-iph.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
<@userSettingsModal />
<button id="print"><img onclick="javascript:printPageContent();" src="${urls.base}/themes/iph/images/print.svg"></button>
</div>
<@expandSwitch />
</div>
</div>
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess>style="top:5px"</#if>>
<#include "individual-iconControls.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
</header>
<!-- Positions -->
<#include "individual-positions.ftl">
<!-- Overview -->
<#if !editable>
<p></p>
</#if>
<#include "individual-overview.ftl">
@ -115,48 +92,127 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
</#if>
<#assign rawQuery = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#rawQueryString")!>
<#assign queryBuilderRules = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#queryBuilderRules")!>
<#if rawQuery?has_content && queryBuilderRules?has_content>
<#list queryBuilderRules.statements as statement>
<#assign queryBuilderRulesString = statement.value!>
</#list>
<#list rawQuery.statements as statement>
<#assign rawQueryString = statement.value!>
</#list>
<#if queryBuilderRulesString?? && rawQueryString??>
<form action="${urls.base}/customsearch" method="post">
<input type="hidden" id="queryBuilderRules" name="queryBuilderRules" value='${queryBuilderRulesString}' />
<input type="hidden" id="querytext" name="querytext" value='${rawQueryString}' />
<input type="submit" id="submit" value="${i18n().metadata_query}"/>
</form>
</#if>
</#if>
<div class="metaDataName collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_label}</div>
</div>
<div class="autoMetadataExpand" style="display:none;">
<#assign firstPub = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#firstPublication")!>
<#if firstPub.statements?has_content && firstPub.type == "data">
<div class="firstPub" style="list-style:none;">
<div class="label">${i18n().metadata_firstPublication}
<#--
<#assign issue = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#issue")!>
<#if issue.statements?has_content && issue.type == "data">
<div class="issue" style="list-style:none;">
<div class="label">Выпуск</div>
<@p.dataPropertyList issue editable />
</div>
<@p.dataPropertyList firstPub editable />
</div>
</#if>
<@authors_metadata />
<#assign year = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#year")!>
<#if year.statements?has_content && year.type == "data">
<div class="year" style="list-style:none;">
<div class="label">Год</div>
<@p.dataPropertyList year editable />
</div>
</#if>
-->
<#if rubrics?? && rubrics?has_content>
<div class="label">Относится к рубрикам:</div>
<#list rubrics as rubric>
<li role="listitem" style="list-style:none;">
<a href="${urls.base}/individual?uri=${rubric.rubricID?url}"">${rubric.rubricName}</a>
</li>
</#list>
<br/>
</#if>
<@documentRubrics />
<div class="articleParts" style="display:block;">
<#list paths as order>
<div class = "articleExcerpt">
<#-- ${order.path} -->
<#list excerpts as excerptProperties>
<#if order.elenphExcerpt?has_content && excerptProperties.elenphExcerpt == order.elenphExcerpt>
<#if excerptProperties.property == "https://litvinovg.pro/text_structures#htmlExcerpt">
<#assign excerptText = excerptProperties.value >
</#if>
<#if excerptProperties.property == "http://www.w3.org/2000/01/rdf-schema#label">
<#assign excerptTextName = excerptProperties.value >
</#if>
</#if>
</#list>
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="htmlExcerpt" style="list-style:none; display:none;">
${excerptText}
</div>
</#if>
</div> <#-- articleExcerpt -->
</#list>
</div>
<#-- <@dump var="works" /> -->
<#if works??>
<#assign no_works = true>
<#list works as work>
<#if no_works>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Работы</button>
<div class="works" style="display:none;">
<#assign no_works = false>
</#if>
<div class="work" style="list-style:none;">
<p> ${work.works} </p>
</div>
</#list>
<#if !no_works>
</div> <#-- works class-->
</#if>
</#if>
<@arrangeDocumentParts />
<#if bibliography??>
<#assign no_bibliography = true>
<#list bibliography as one_bibliography>
<#if no_bibliography>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%; text-align: left;">Литература</button>
<div class="bibliography" style="display:none;">
<#assign no_bibliography = false>
</#if>
<div class="bibliography_entry" style="list-style:none;">
<p> ${one_bibliography.bibliography} </p>
</div>
<@authors_underline />
</#list>
<#if !no_bibliography>
</div> <#-- bibliography class-->
</#if>
</#if>
<#if authors??>
<#assign no_authors = true>
<#list authors as author>
<#if no_authors>
<div class="authors" style="display:block;float:right; margin:15px;">
<#assign no_authors = false>
<#else>
", "
</#if>
${author.author}
</#list>
</div> <#-- authors class-->
</#if>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
<#-- <@dumpAll /> -->
<#assign selectedTemplate = "individual--foaf-person-2column.ftl" >
@ -183,7 +239,6 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
</a>
</span>
</#if>
<#if !editable>
<script>
var title = $('div#titleContainer').width();

View file

@ -1,23 +1,12 @@
<#include "individual-setup.ftl">
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/toc.js"></script>')}
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Individual profile page template for foaf:Person individuals -->
<!--[if IE 7]>
<link rel="stylesheet" href="${urls.base}/css/individual/ie7-standard-view.css" />
<![endif]-->
<#-- <#include "individual-setup.ftl"> -->
<#import "individual-qrCodeGenerator.ftl" as qr>
<#import "lib-vivo-properties.ftl" as vp>
<#include "text-lib.ftl">
<#--Number of labels present-->
<#if !labelCount??>
<#assign labelCount = 0 >
@ -38,8 +27,6 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleHeaderWrapper">
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
@ -71,31 +58,20 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<@p.mostSpecificTypesPerson individual editable/>
</#if>
</#if>
</div>
<div class="articleToolsContainer">
<div class="metadataSwitch">
<@expandMetadataSwitch />
</div>
<div class="toolsWrapper">
<div class="articleButtons">
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess></#if>>
<#include "individual-iconControls-iph.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
<@userSettingsModal />
<button id="print"><img onclick="javascript:printPageContent();" src="${urls.base}/themes/iph/images/print.svg"></button>
</div>
</div>
</div>
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess>style="top:5px"</#if>>
<#include "individual-iconControls.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
</header>
<!-- Positions -->
<#include "individual-positions.ftl">
<!-- Overview -->
<#if !editable>
</#if>
<p></p>
</#if>
<#include "individual-overview.ftl">
<!-- Research Areas -->
@ -114,77 +90,54 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
</#if>
<div class="metaDataName collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_label}</div>
</div>
<div class="autoMetadataExpand" style="display:none;">
<#if !editable>
<@authors_metadata />
<#else>
<#assign pubAuthors = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#hasAuthor")!>
<#if pubAuthors?has_content>
<div class="
<#if pubAuthors.statements?has_content >
collapsible collapsed
<#else>
nonePubAuthors
</#if>
">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_authors} <@p.addLink pubAuthors editable /> <@p.verboseDisplay pubAuthors /></div>
</div>
<div class="expandedAuthors autoMetadataExpand" style="display:none;">
<#if pubAuthors.statements?has_content >
<div class="pubAuthors" style="list-style:none;">
<@p.objectProperty pubAuthors editable />
</div>
</#if>
</div>
</#if>
</#if>
<#if articles?has_content>
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_in_articles}</div>
</div>
<div class="expandedArticles autoMetadataExpand" style="display:none;">
<#list articles as article>
<#if article?has_content >
<div class="articleList" style="list-style:none;">
<a href="${urls.base}/individual?uri=${article.articleUri?url}">${article.articleName}</a>
</div>
</#if>
</#list>
<div class="label">В составе статей: </div>
<div>
<#list articles as article>
<#if article?has_content >
<div style="list-style:none;border:none;width: 100%;text-align:left;" class="article">
<a href="${urls.base}/individual?uri=${article.articleUri?url}"">${article.articleName}</a>
</div>
</#if>
</#list>
</div>
</#if>
<#assign author = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#author")!>
<#if author?has_content >
<div class="label">Авторы: <@p.addLink author editable /> <@p.verboseDisplay author /> </div>
<#if author.statements?has_content && author.type == "data">
<div class="author" style="list-style:none;">
<@p.dataPropertyList author editable />
</#if>
</#if>
<#assign affiliation = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#affiliation")!>
<#if affiliation.statements?has_content && affiliation.type == "data">
<div class="affiliation" style="list-style:none;">
<div class="label">Аффилиация</div>
<@p.dataPropertyList affiliation editable />
</div>
</#if>
<#assign rubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if rubrics?has_content>
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_relates_to_rubrics} <@p.addLink rubrics editable /> <@p.verboseDisplay rubrics /></div>
</div>
<div class="expandedRubrics autoMetadataExpand" style="display:none;">
<div class="label">Относится к: <@p.addLink rubrics editable /> <@p.verboseDisplay rubrics /> </div>
<#if rubrics.statements?has_content >
<div class="rubricsList" style="list-style:none;">
<div class="rubrics" style="list-style:none;">
<@p.objectProperty rubrics editable />
</div>
</div>
</#if>
</div>
</#if>
<#assign keywords = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#keywords")!>
<#if keywords?has_content >
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_keywords} <@p.addLink keywords editable /> <@p.verboseDisplay keywords /></div>
</div>
<div class="expandedKeywords autoMetadataExpand" style="display:none;">
<div class="wrapperExpandedKeywords">
<#if keywords.statements?has_content && keywords.type == "data">
<@p.dataPropertyList keywords editable />
</#if>
</div>
</div>
<div class="label">Ключевые слова: <@p.addLink keywords editable /> <@p.verboseDisplay keywords /> </div>
<#if keywords.statements?has_content && keywords.type == "data">
<div class="keywords" style="list-style:none;">
<@p.dataPropertyList keywords editable />
</div>
</#if>
</#if>
</div>
<#assign htmlExcerpt = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#htmlExcerpt")!>
<#if htmlExcerpt?has_content >
<#if htmlExcerpt.statements?has_content && htmlExcerpt.type == "data">
@ -193,22 +146,24 @@ ${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/to
<#-- object property -->
</div>
<#else>
<div class="label">${i18n().metadata_html_text} <@p.addLink htmlExcerpt editable /> <@p.verboseDisplay htmlExcerpt /> </div>
<div class="label">Текст отрывка: <@p.addLink htmlExcerpt editable /> <@p.verboseDisplay htmlExcerpt /> </div>
</#if>
</#if>
<#assign works = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#works")!>
<#if works.statements?has_content || editable >
<#if works.statements?has_content && works.type == "data">
<br/>
<div class="works" style="list-style:none;">
<h2 class="label">${i18n().sources_excerpt_button_text} <@p.addLink works editable /> <@p.verboseDisplay works /></h2>
<h2 class="label">Работы:</h2>
<@p.dataPropertyList works editable />
</div>
</#if>
<#assign biblio= propertyGroups.pullProperty("https://litvinovg.pro/text_structures#bibliography")!>
<#if biblio.statements?has_content || editable >
<#if biblio.statements?has_content && biblio.type == "data">
<br/>
<div class="biblio" style="list-style:none;">
<h2 class="label">${i18n().literature_excerpt_button_text} <@p.addLink biblio editable /> <@p.verboseDisplay biblio /></h2>
<h2 class="label">Литература:</h2>
<@p.dataPropertyList biblio editable />
</div>
</#if>

View file

@ -0,0 +1,42 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#--
This version of individual--foaf-person.ftl is a "router" template. The original VIVO
version of this template now resides in the /themes/wilma/templates directory.
This version of the template is used when the profile page types feature is enabled.
This template serves to "rout" the user to the correct template based (1) the
profile page type of the foaf person being displayed or (2) the targeted view that
the user wants to see. For example, when a user is routed to a quick view template,
the user has the option of displaying the full view. If the user chooses that option,
the targetedView variable gets set.
This template could also be used to load just the "individual--foaf-person-2column.ftl"
without enabling profile page types. "individual--foaf-person-2column.ftl" is a slightly
different design than the "individual--foaf-person.ftl" template in the themes/wilma
directory.
-->
<#include "individual-setup.ftl">
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
<#assign selectedTemplate = "elenphExcerpt-internal.ftl" >
<#if profilePageTypesEnabled >
<#assign profilePageType = profileType >
<#-- targetedView takes precedence over the profilePageType. -->
<#if targetedView?has_content>
<#if targetedView != "standardView">
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
</#if>
<#elseif profilePageType == "quickView" >
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
</#if>
</#if>
<#include selectedTemplate >

View file

@ -4,6 +4,7 @@
<#import "lib-vivo-properties.ftl" as p>
<#-- <@dumpAll /> -->
<div class="virtualArticlePart" style="display:none;">
<#list excerptInfo as excerptProperties>
<#if excerptProperties.property == "https://litvinovg.pro/text_structures#htmlExcerpt">
<#assign excerptText = excerptProperties.value >
@ -16,8 +17,7 @@
</#if>
</#list>
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<div class="virtualArticlePart compilationDraftExcerpt" partUri="${individual.uri}" partName="${excerptTextName}" style="display:none;">
<button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="htmlExcerpt" style="list-style:none; display:none;">
${excerptText}
<#if excerptAuthor?? && excerptAuthor?has_content>
@ -38,10 +38,10 @@
</div>
</div>
</#if>
</div>
<div class="searchResult">
<div class="excerptSearchResult">
<a href="${individual.profileUrl}" title="${i18n().individual_name}">${individual.name}</a>
<@p.displayTitle individual />
<p class="snippet">${individual.snippet}</p>

View file

@ -5,17 +5,17 @@
<#if !issueName??>
<#assign issueName = article.issue>
<#assign divOpened = true >
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible active">${issueName}</button>
<div class="issue" style="list-style:none; padding: 18px;">
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${issueName}</button>
<div clas="issue" style="list-style:none; display:none; padding: 18px;">
<p><a href="/vivo/individual?uri=${article.uri?url}">${article.name}</a></p>
<#elseif issueName == article.issue>
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
<p><a href="/vivo/individual?uri=${article.uri?url}">${article.name}</a></p>
<#else>
<#assign issueName = article.issue>
</div>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible active">${issueName}</button>
<div class="issue" style="list-style:none; padding: 18px;">
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${issueName}</button>
<div clas="issue" style="list-style:none; display:none;padding: 18px;">
<p><a href="/vivo/individual?uri=${article.uri?url}">${article.name}</a></p>
</#if>
</#list>
<#if divOpened>
@ -38,8 +38,4 @@ for (i = 0; i < coll.length; i++) {
}
});
}
var issueContents = document.getElementsByClassName("issue");
for (i = 0; i < issueContents.length; i++) {
issueContents[i].style.display = "none";
}
</script>

View file

@ -1,20 +1,16 @@
<#import "lib-vivo-properties.ftl" as vp>
<#include "individual-setup.ftl">
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
<section id="individual-intro" class="vcard person" role="region">
<span itemscope itemtype="http://schema.org/Person">
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
<#else>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="width:100%;border-right:1px solid #A6B1B0;"</#if>>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="float:left;width:100%;border-right:1px solid #A6B1B0;"</#if>>
<@p.label individual editable labelCount localesCount/>
</h1>
</#if>
@ -22,7 +18,6 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
</div>
</header>
</section>
</span>
@ -30,7 +25,7 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#assign parent = propertyGroups.pullProperty("https://iph.ras.ru/relationships#hasParent")!>
<#if parent?has_content>
<div class="label">${i18n().rubricator_parent_rubric}<#if !parent.statements?has_content> <@p.addLink parent editable /></#if> <@p.verboseDisplay parent /></div>
<div class="label">Родительская рубрика<#if !parent.statements?has_content> <@p.addLink parent editable /></#if> <@p.verboseDisplay parent /></div>
<#if parent.statements?has_content >
<div style="list-style:none;" class="parentRubric">
<@p.objectProperty parent editable />
@ -41,7 +36,7 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#assign order = propertyGroups.pullProperty("https://iph.ras.ru/relationships#rubricOrder")!>
<#if order?has_content>
<div class="label">${i18n().rubricator_rubric_order}<#if !order.statements?has_content> <@p.addLink order editable /></#if> <@p.verboseDisplay order /></div>
<div class="label">Порядок рубрики<#if !order.statements?has_content> <@p.addLink order editable /></#if> <@p.verboseDisplay order /></div>
<#if order.statements?has_content >
<div style="list-style:none;" class="rubricOrder">
<@p.dataPropertyList order editable />
@ -51,11 +46,11 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#if>
<#if childRubrics?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_subrubrics}</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Подрубрики</button>
<div style="display:none;">
<#list childRubrics as childRubric>
<#if childRubric?has_content >
<div class="childRubric">
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childRubric">
<a href="${urls.base}/individual?uri=${childRubric.rubricID?url}"">${childRubric.rubricName}</a>
</div>
</#if>
@ -64,11 +59,11 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#if>
<#if childArticles?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_articles_in_subrubrics}</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Статьи в подрубриках</button>
<div style="display:none;">
<#list childArticles as childArticle>
<#if childArticle?has_content >
<div class="childArticle">
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childArticle">
<a href="${urls.base}/individual?uri=${childArticle.childArticleID?url}"">${childArticle.childArticleName}</a>
</div>
</#if>
@ -77,11 +72,11 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#if>
<#if childExcerpts?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_excerpts_in_subrubrics}</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Отрывки в подрубриках</button>
<div style="display:none;">
<#list childExcerpts as childExcerpt>
<#if childExcerpt?has_content >
<div class="childExcerpt">
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childExcerpt">
<a href="${urls.base}/individual?uri=${childExcerpt.childExcerptID?url}"">${childExcerpt.childExcerptName}</a>
</div>
</#if>
@ -90,7 +85,7 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#if>
<#if articles?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_articles_in_rubric}</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Статьи в данной рубрике</button>
<div class="articles" style="display:none;">
<#list articles as article>
<#if article?has_content >
@ -103,7 +98,7 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#if>
<#if excerpts?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_excerpts_in_rubric}</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Отрывки в данной рубрике</button>
<div style="display:none;" class="excerpts">
<#list excerpts as excerpt>
<#if excerpt?has_content >
@ -114,3 +109,23 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#list>
</div>
</#if>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>

View file

@ -1,15 +1,8 @@
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
<#list rubrics as rubric>
<#if !rubric.parentUri??>
<#assign childs = rubric.childs?number>
<button type="button" style="border:none;padding: 15px;text-align:left; width:100%;" class="collapsible">
<@openButton childs=childs/><a style="padding-left:15px;">${rubric.name}</a>
<div id="rubricFollow">
<a href="individual?uri=${rubric.uri?url}">${i18n().metadata_to_rubric}</a>
</div>
</button>
<@openButton childs=childs/><a style="padding-left:15px;" href="individual?uri=${rubric.uri?url}">${rubric.name}</a></button>
<div class="rubricContents" style="display:none;">
<#if (childs &gt; 0) >
<@nestedRubrics allrubrics=rubrics parentUri=rubric.uri deep=10 level=1 />
@ -20,6 +13,24 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
</#list>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
$(this).children('.collapsibleSign').text('+');
} else {
content.style.display = "block";
$(this).children('.collapsibleSign').text('');
}
});
}
</script>
<#macro openButton childs>
<#if childs &gt; 0>
<div class="collapsibleSign" style="display:inline-block;width:10px;">+</div>
@ -34,11 +45,7 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#if innerRubric.parentUri?? && innerRubric.parentUri == parentUri>
<#assign childs = innerRubric.childs?number>
<#assign count = count + 1 >
<button type="button" style="border:none;padding: 15px 0px 15px ${15+15*level}px;width: 100%; text-align:left;" class="collapsible"><@openButton childs=childs /><a style="padding-left:15px;">${innerRubric.name}</a>
<div id="rubricFollow">
<a href="individual?uri=${innerRubric.uri?url}">${i18n().metadata_to_rubric}</a>
</div>
</button>
<button type="button" style="border:none;padding: 15px 0px 15px ${15+15*level}px;width: 100%; text-align:left;" class="collapsible"><@openButton childs=childs /><a style="padding-left:15px;" href="individual?uri=${innerRubric.uri?url}">${innerRubric.name}</a></button>
<div class="rubricContents" style="display:none;">
<#if (deep &gt; 1) && (childs &gt; 0)>
<@nestedRubrics allrubrics=rubrics parentUri=innerRubric.uri deep=deep-1 level=level+1 />

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@ icons: {
}
.rule-value-container > select{
max-width: 380px;
max-width: 800px;
}
.query-builder, .query-builder * {
@ -16,7 +16,6 @@ icons: {
.query-builder {
font-family: sans-serif;
width: 100%;
}
.query-builder .hide {
@ -25,7 +24,6 @@ icons: {
.query-builder .pull-right {
float: right !important;
/*box-shadow: 0px 4px 2px #aeaeae;*/
}
.query-builder .btn {
@ -33,7 +31,7 @@ icons: {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0px;
font-size: 16px;
font-size: 14px;
font-weight: 400;
line-height: 1.42857;
text-align: center;
@ -43,11 +41,12 @@ icons: {
cursor: pointer;
user-select: none;
background-image: none;
/*border: 1px solid transparent;*/
/*border-radius: 4px;*/
border: 1px solid transparent;
border-radius: 4px;
}
.query-builder .btn.focus, .query-builder .btn:focus, .query-builder .btn:hover {
.query-builder .btn.focus, .query-builder .btn:focus, .query-builder .btn:hover
{
color: #333;
text-decoration: none;
}
@ -55,62 +54,48 @@ icons: {
.query-builder .btn.active, .query-builder .btn:active {
background-image: none;
outline: 0px none;
/* box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.125) inset; */
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.125) inset;
}
.query-builder .btn-success {
color: #000000;
background-color: #ffffff;
border: 0px;
font-family: Roboto;
/*box-shadow: 0px 4px 2px #aeaeae;*/
}
.btn-group.pull-right.group-actions {
box-shadow: 0px 4px 2px #aeaeae;
/*margin-right: 10px;*/
color: #FFF;
background-color: #5CB85C;
border-color: #4CAE4C;
}
.query-builder .btn-primary {
color: #000000;
background-color: #ffffff;
border: 1px dashed #000000 !important;
color: #FFF;
background-color: #337AB7;
border-color: #2E6DA4;
}
.query-builder .btn-danger {
color: #000000;
background-color: #ffffff;
border: 0px;
box-shadow: 0px;
}
button.btn.btn-xs.btn-danger {
/*box-shadow: 0px 0px 0px #000000;*/
border-left: 1px solid #ead6a2 !important;
font-family: Roboto;
color: #FFF;
background-color: #D9534F;
border-color: #D43F3A;
}
.query-builder .btn-success.active, .query-builder .btn-success.focus,
.query-builder .btn-success:active, .query-builder .btn-success:focus,
.query-builder .btn-success:hover {
color: #000000;
background-color: #EAD6A2;
border: 0px;
/*border-color: #398439;*/
color: #FFF;
background-color: #449D44;
border-color: #398439;
}
.query-builder .btn-primary.active, .query-builder .btn-primary.focus,
.query-builder .btn-primary:active, .query-builder .btn-primary:focus,
.query-builder .btn-primary:hover {
color: #000000;
background-color: #EAD6A2;
border-color: #000000;
color: #FFF;
background-color: #286090;
border-color: #204D74;
}
.query-builder .btn-danger.active, .query-builder .btn-danger.focus,
.query-builder .btn-danger:active, .query-builder .btn-danger:focus,
.query-builder .btn-danger:hover {
color: #000000;
background-color: #ffffff;
color: #FFF;
background-color: #C9302C;
border-color: #AC2925;
}
@ -123,12 +108,10 @@ button.btn.btn-xs.btn-danger {
.query-builder .btn-group>.btn {
position: relative;
float: left;
border-left: 1px solid #ead6a2;
}
.query-builder .btn-group>.btn:first-child {
margin-left: 0px;
border-left: none;
}
.query-builder .btn-group>.btn:first-child:not(:last-child) {
@ -148,8 +131,8 @@ button.btn.btn-xs.btn-danger {
}
.query-builder .btn-xs, .query-builder .btn-group-xs>.btn {
padding: 5px 8px;
font-size: 1rem;
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
/*border-radius: 3px;*/
border-radius: 3px;
}

View file

@ -6,61 +6,26 @@
.query-builder .rules-group-container, .query-builder .rule-container,
.query-builder .rule-placeholder {
position: relative;
/*margin: 10px 10px 0 10px;*/
/*border-radius: 5px;*/
margin: 4px 0;
border-radius: 5px;
padding: 5px;
/*border-top: 1px dashed #000000;
border-left: 1px dashed #000000;
border-right: 1px dashed #000000;*/
border: 1px solid #EEE;
background: rgba(255, 255, 255, 0.9);
}
.rule-container {
box-shadow: 0px 4px 4px #aeaeae;
margin-bottom: 10px;
margin-top: 10px;
}
.query-builder .rule-container .rule-filter-container, .query-builder .rule-container .rule-operator-container,
.query-builder .rule-container .rule-value-container, .query-builder .error-container,
.query-builder .drag-handle {
display: inline-block;
margin: 0 5px 0 0;
/*vertical-align: middle;*/
vertical-align: middle;
}
.query-builder .rules-group-container {
padding: 12px 20px 10px 20px;
/*border-right: 1px solid #8B4513;
border-left: 1px solid #8B4513;
border-top: 1px solid #8B4513;
border-bottom: 1px solid #8B4513;*/
background-color: #efe9d9;
outline: 1px dashed #000000;
outline-offset: 0px;
margin-bottom: 10px;
font-family: Roboto;
}
#builder_group_0 {
background-color: #F1F1F1;
margin-bottom: 0;
outline: 1px solid #F1F1F1;
outline-offset: -1px;
border-left: 1px solid #8B4513;
border-right: 1px solid #8B4513;
}
#builder_rule_1 {
margin-bottom: 10px;
}
#builder_group_1 {
margin-top: 10px;
/*border: 1px dashed #000000;*/
padding: 10px;
padding-bottom: 6px;
border: 1px solid #DCC896;
background: rgba(250, 240, 210, 0.5);
}
.query-builder .rules-group-header {
@ -87,13 +52,12 @@
.query-builder .rules-list {
list-style: none;
padding: 0 0 0 10px;
padding: 0 0 0 15px;
margin: 0;
box-shadow: 0px 0px #aeaeae;
}
.query-builder .rule-value-container {
/*border-left: 1px solid #DDD;*/
border-left: 1px solid #DDD;
padding-left: 5px;
}
@ -108,7 +72,7 @@
.query-builder .rule-value-container select, .query-builder .rule-value-container input[type='text'],
.query-builder .rule-value-container input[type='number'] {
padding: 5px;
padding: 1px;
}
.query-builder .error-container {
@ -133,18 +97,18 @@
left: -10px;
width: 10px;
height: calc(50% + 4px);
border-color: #000000;
border-style: dashed;
border-color: #CCC;
border-style: solid;
}
.query-builder .rules-list>*::before {
top: -4px;
border-width: 0 0 1px 1px;
border-width: 0 0 2px 2px;
}
.query-builder .rules-list>*::after {
top: 50%;
border-width: 0 0 0 1px;
border-width: 0 0 0 2px;
}
.query-builder .rules-list>*:first-child::before {
@ -153,7 +117,7 @@
}
.query-builder .rules-list>*:last-child::before {
/*border-radius: 0 0 0 4px;*/
border-radius: 0 0 0 4px;
}
.query-builder .rules-list>*:last-child::after {

View file

@ -1,173 +0,0 @@
/*!
* jQuery QueryBuilder 2.5.2
* Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
* Licensed under MIT (https://opensource.org/licenses/MIT)
*/
.query-builder .rules-group-container, .query-builder .rule-container, .query-builder .rule-placeholder {
position: relative;
margin: 4px 0;
border-radius: 5px;
padding: 5px;
border: 1px solid #EEE;
background: rgba(255, 255, 255, 0.9);
}
.query-builder .rule-container .rule-filter-container,
.query-builder .rule-container .rule-operator-container,
.query-builder .rule-container .rule-value-container, .query-builder .error-container, .query-builder .drag-handle {
display: inline-block;
margin: 0 5px 0 0;
vertical-align: middle;
}
.query-builder .rules-group-container {
padding: 10px;
padding-bottom: 6px;
border: 1px solid #DCC896;
background: rgba(250, 240, 210, 0.5);
}
.query-builder .rules-group-header {
margin-bottom: 10px;
}
.query-builder .rules-group-header .group-conditions .btn.readonly:not(.active),
.query-builder .rules-group-header .group-conditions input[name$='_cond'] {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
white-space: nowrap;
}
.query-builder .rules-group-header .group-conditions .btn.readonly {
border-radius: 3px;
}
.query-builder .rules-list {
list-style: none;
padding: 0 0 0 15px;
margin: 0;
}
.query-builder .rule-value-container {
border-left: 1px solid #DDD;
padding-left: 5px;
}
.query-builder .rule-value-container label {
margin-bottom: 0;
font-weight: normal;
}
.query-builder .rule-value-container label.block {
display: block;
}
.query-builder .rule-value-container select,
.query-builder .rule-value-container input[type='text'],
.query-builder .rule-value-container input[type='number'] {
padding: 1px;
}
.query-builder .error-container {
display: none;
cursor: help;
color: #F00;
}
.query-builder .has-error {
background-color: #FDD;
border-color: #F99;
}
.query-builder .has-error .error-container {
display: inline-block !important;
}
.query-builder .rules-list > *::before, .query-builder .rules-list > *::after {
content: '';
position: absolute;
left: -10px;
width: 10px;
height: calc(50% + 4px);
border-color: #CCC;
border-style: solid;
}
.query-builder .rules-list > *::before {
top: -4px;
border-width: 0 0 2px 2px;
}
.query-builder .rules-list > *::after {
top: 50%;
border-width: 0 0 0 2px;
}
.query-builder .rules-list > *:first-child::before {
top: -12px;
height: calc(50% + 14px);
}
.query-builder .rules-list > *:last-child::before {
border-radius: 0 0 0 4px;
}
.query-builder .rules-list > *:last-child::after {
display: none;
}
.query-builder.bt-checkbox-glyphicons .checkbox input[type='checkbox']:checked + label::after {
font-family: 'Glyphicons Halflings';
content: '\e013';
}
.query-builder.bt-checkbox-glyphicons .checkbox label::after {
padding-left: 4px;
padding-top: 2px;
font-size: 9px;
}
.query-builder .error-container + .tooltip .tooltip-inner {
color: #F99 !important;
}
.query-builder p.filter-description {
margin: 5px 0 0 0;
background: #D9EDF7;
border: 1px solid #BCE8F1;
color: #31708F;
border-radius: 5px;
padding: 2.5px 5px;
font-size: .8em;
}
.query-builder .rules-group-header [data-invert] {
margin-left: 5px;
}
.query-builder .drag-handle {
cursor: move;
vertical-align: middle;
margin-left: 5px;
}
.query-builder .dragging {
position: fixed;
opacity: .5;
z-index: 100;
}
.query-builder .dragging::before, .query-builder .dragging::after {
display: none;
}
.query-builder .rule-placeholder {
border: 1px dashed #BBB;
opacity: .7;
}

View file

@ -1,6 +0,0 @@
/*!
* jQuery QueryBuilder 2.5.2
* Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
* Licensed under MIT (https://opensource.org/licenses/MIT)
*/
.query-builder .rule-container,.query-builder .rule-placeholder,.query-builder .rules-group-container{position:relative;margin:4px 0;border-radius:5px;padding:5px;border:1px solid #eee;background:rgba(255,255,255,.9)}.query-builder .drag-handle,.query-builder .error-container,.query-builder .rule-container .rule-filter-container,.query-builder .rule-container .rule-operator-container,.query-builder .rule-container .rule-value-container{display:inline-block;margin:0 5px 0 0;vertical-align:middle}.query-builder .rules-group-container{padding:10px;padding-bottom:6px;border:1px solid #dcc896;background:rgba(250,240,210,.5)}.query-builder .rules-group-header{margin-bottom:10px}.query-builder .rules-group-header .group-conditions .btn.readonly:not(.active),.query-builder .rules-group-header .group-conditions input[name$='_cond']{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.query-builder .rules-group-header .group-conditions .btn.readonly{border-radius:3px}.query-builder .rules-list{list-style:none;padding:0 0 0 15px;margin:0}.query-builder .rule-value-container{border-left:1px solid #ddd;padding-left:5px}.query-builder .rule-value-container label{margin-bottom:0;font-weight:400}.query-builder .rule-value-container label.block{display:block}.query-builder .rule-value-container input[type=number],.query-builder .rule-value-container input[type=text],.query-builder .rule-value-container select{padding:1px}.query-builder .error-container{display:none;cursor:help;color:red}.query-builder .has-error{background-color:#fdd;border-color:#f99}.query-builder .has-error .error-container{display:inline-block!important}.query-builder .rules-list>::after,.query-builder .rules-list>::before{content:'';position:absolute;left:-10px;width:10px;height:calc(50% + 4px);border-color:#ccc;border-style:solid}.query-builder .rules-list>::before{top:-4px;border-width:0 0 2px 2px}.query-builder .rules-list>::after{top:50%;border-width:0 0 0 2px}.query-builder .rules-list>:first-child::before{top:-12px;height:calc(50% + 14px)}.query-builder .rules-list>:last-child::before{border-radius:0 0 0 4px}.query-builder .rules-list>:last-child::after{display:none}.query-builder.bt-checkbox-glyphicons .checkbox input[type=checkbox]:checked+label::after{font-family:'Glyphicons Halflings';content:'\e013'}.query-builder.bt-checkbox-glyphicons .checkbox label::after{padding-left:4px;padding-top:2px;font-size:9px}.query-builder .error-container+.tooltip .tooltip-inner{color:#f99!important}.query-builder p.filter-description{margin:5px 0 0 0;background:#d9edf7;border:1px solid #bce8f1;color:#31708f;border-radius:5px;padding:2.5px 5px;font-size:.8em}.query-builder .rules-group-header [data-invert]{margin-left:5px}.query-builder .drag-handle{cursor:move;vertical-align:middle;margin-left:5px}.query-builder .dragging{position:fixed;opacity:.5;z-index:100}.query-builder .dragging::after,.query-builder .dragging::before{display:none}.query-builder .rule-placeholder{border:1px dashed #bbb;opacity:.7}

View file

@ -56,7 +56,7 @@ td {
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
color: #000000;
color: #595b5b;
font-weight: normal;
}
body {

View file

@ -1,32 +1,32 @@
menu_contactus = Контакты
menu_welcomestart = Добро пожаловать
menu_copyright = права
menu_support = Поддержка
menu_logout = Выйти
menu_contactus = Contact Us
menu_welcomestart = Welcome
menu_copyright = copyright
menu_support = Support
menu_logout = Log out
menu_loginfull = Log in to manage this site
menu_login = Войти
menu_version = Версия
menu_about = О нас
menu_termuse = Правила использования
menu_powered = Сделано с помощью
menu_login = Log in
menu_version = Version
menu_about = About
menu_termuse = Terms of Use
menu_powered = Powered by
intro_title = Добро пожаловать в VIVO
intro_title = Welcome to VIVO
intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines.
intro_para2 = Browse or search information on people, departments, courses, grants, and publications.
intro_searchvivo = Поиск VIVO
intro_filtersearch = Ограничить поиск
intro_searchvivo = Search VIVO
intro_filtersearch = Filter search
identity_title = VIVO | соединяй делись познавай
identity_title = VIVO | connect share discover
identity_index = Index
identity_edit = Редактировать страницу
identity_admin = Админка
identity_myprofile = Мой профиль
identity_myaccount = Моя учётная запись
identity_user = пользователь
identity_edit = Edit Page
identity_admin = Site Admin
identity_myprofile = My profile
identity_myaccount = My account
identity_user = user
collection_capitalized = Коллекция
place_of_grant = Место получения гранта
email_address = email адрес
collection_capitalized = Collection
place_of_grant = Place of grant
email_address = Email Address
#
# menupage templates ( /templates/freemarker/body/menupage )
@ -41,126 +41,69 @@ grants_two = This technique could be used to define pages without menu items, th
grants_text_three = This would create a page that would use about.ftl as the body. The page would be \
accessed via /about and would override all servlet mappings in web.xml.
address_street_one = первая строка адреса
address_street_two = вторая строка адреса
address_street_three = третья строка адреса
address_label = подпись адреса
address_street_one = address street one
address_street_two = address street two
address_street_three = address street three
address_label = address label
loading_website_image = Загрузка изображения сайта
loading_website_image = Loading website image
researchers_in = исследователь в
view = вид
grant_type = тип гранта
researchers_in = researchers in
view = view
grant_type = grant Type
grant_entry_for = grant entry for
regions = регионы
grant_date = дата получения гранта
map_states_string = штатов.
map_state_string = штат.
regions = regions
grant_date = grant Date
map_states_string = states.
map_state_string = state.
unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals.
unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals.
currently_no_papers_for = Currently there are no {0} papers for
change_selection = Изменить выделенное
change_selection = change selection
view_all_departments = view all academic departments
first_name = Имя
last_name = Фамилия
first_grant = Первый грант
last_grant = Последний грант
first_name = First name
last_name = Last name
first_grant = First Grant
last_grant = Last Grant
currently_no_researchers = There are currently no researchers with a defined geographic focus.
reviewer_role = Роль рецензента
vivo_profile = профиль VIVO
loading_data = данные загружаются
reviewer_role = Reviewer Role
vivo_profile = VIVO profile
loading_data = loading data
select_award = Selected Award
grants_in_vivo = гранты в VIVO
service_provider_role = Роль предоставителя услуг
view_all_faculty = просмотреть весь факультет
no_grants_for = В данный момент грантов нет грантов для
grants_in_vivo = grants in VIVO
service_provider_role = Service Provider Role
view_all_faculty = view all faculty
no_grants_for = Currently there are no grants for
statewide_locations = state-wide locations.
faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization.
indiv_foafperson_for = к
indiv_foafperson_return = вернуться к
no_departments_found = Университетских департаментов не найдено.
leadership_role = Управляющая роль
countries = страны
first_publication = Первая публикация
last_publication = Последняя публикация
research_area = сотрудников департамента спецализирующихся на данной области исследования
password = пароль
limit_search = ограничить поиск
placeholder_image = Изображение-заполнитель
view_all_members_of_org = Просмотреть всех участников данной организации.
display_more = больше
create_entry = Создать запись
attendee_capitalized = Посетитель
no_faculty_found = Членов факультета найдено не было.
create_capitalized = Создать
to = к
enter_new_role_value = Введеите новое значение в поле Роль.
countries_and_regions = страны и регионы.
province_or_region = Провинция или регион
full_name = Полное имя
researchers = исследователи
years_participation_in = Годы участия в
return_to_grant = Вернуться к гранту
profile_capitalized = Профиль
organizer_role = Роль организатора
faculty_memberships = Членство в факультете
edit_mailing_address = Изменить email адрес
add_capitalized = Добавить
#Design labels
scroll_to_top_label = Наверх
toc_label = Содержание
collapse_something = Свернуть
expand_something = Раскрыть
user_settings_label = Выберите настройки:
user_settings_always_open_full_doc = Всегда раскрывать документ при открытии
user_settings_always_open_metadata = Всегда раскрывать метаданные при открытии
expand_doc_switch = Раскрыть документ
collapse_doc_switch = Свернуть документ
expand_metadata_switch = Раскрыть метаданные
collapse_metadata_switch = Свернуть метаданные
literature_excerpt_button_text = Литература
literature_all_button_text = Сводная литература
sources_excerpt_button_text = Источники
sources_all_button_text = Сводные источники
extended_search_label = Расширенный поиск
metadata_label = Метаданные
metadata_query = Поисковый запрос
metadata_relates_to_rubrics = Относится к рубрикам:
metadata_relates_to_issue = Входит в выпуск
metadata_year = Год
metadata_to_rubric = перейти в рубрику
metadata_firstPublication = Первая публикация
metadata_authors = Авторы:
metadata_keywords = Ключевые слова:
metadata_html_text = Текст:
metadata_org_address = Адрес организации:
metadata_in_articles = В составе статей:
#Philosophical classifier
rubricator_parent_rubric = Родительская рубрика:
rubricator_rubric_order = Порядок рубрики
rubricator_subrubrics = Подрубрики
rubricator_articles_in_subrubrics = Статьи в подрубриках
rubricator_excerpts_in_subrubrics = Отрывки в подрубриках
rubricator_articles_in_rubric = Статьи в данной рубрике
rubricator_excerpts_in_rubric = Отрывки в данной рубрике
#Extended search form
extended_search_example = Пример заполнения
extended_search_results_on_page = Результатов на страницу
extended_search_clean = Очистить
extended_search_execute_search = Поиск
open_standard_search_form = Стандартная форма поиска
#Virtual articles creation
show_virtual_article = Показать виртуальную статью
create_compilation_button = Сохранить
create_compilation_no_excerpts = Отрывков не найдено
create_compilation_enter_name_notification = Введите название подобрки
create_compilation_no_name_entered_error = Для создания подоборки необходимо ввести её название
indiv_foafperson_for = for
indiv_foafperson_return = return to
no_departments_found = No academic departments found.
leadership_role = Leadership Role
countries = countries
first_publication = First publication
last_publication = Last publication
research_area = individuals in the department with this research area
password = password
limit_search = limit search
placeholder_image = placeholder image
view_all_members_of_org = View all the members of this organization.
display_more = more
create_entry = Create Entry
attendee_capitalized = Attendee
no_faculty_found = No faculty members found.
create_capitalized = Create
to = to
enter_new_role_value = Please enter a new value in the Role field.
countries_and_regions = countries and regions.
province_or_region = Province or Region
full_name = Full name
researchers = researchers
years_participation_in = Years of Participation in
return_to_grant = Return to grant
profile_capitalized = Profile
organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add

View file

@ -1,115 +0,0 @@
menu_contactus = Contact Us
menu_welcomestart = Welcome
menu_copyright = copyright
menu_support = Support
menu_logout = Log out
menu_loginfull = Log in to manage this site
menu_login = Log in
menu_version = Version
menu_about = About
menu_termuse = Terms of Use
menu_powered = Powered by
intro_title = Welcome to VIVO
intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines.
intro_para2 = Browse or search information on people, departments, courses, grants, and publications.
intro_searchvivo = Search VIVO
intro_filtersearch = Filter search
identity_title = VIVO | connect share discover
identity_index = Index
identity_edit = Edit Page
identity_admin = Site Admin
identity_myprofile = My profile
identity_myaccount = My account
identity_user = user
collection_capitalized = Collection
place_of_grant = Place of grant
email_address = Email Address
#
# menupage templates ( /templates/freemarker/body/menupage )
#
grants_text_one = This body is from the the template file \
vivo/productMods/templates/freemarker/body/menupage/grants.ftl. \
In the display model, the grants page has a display:requiresBodyTemplate \
property that defines that the grants page overrides the default template. \
The default template for these pages is at /vitro/webapp/web/templates/freemarker/body/menupage/menupage.ftl
grants_two = This technique could be used to define pages without menu items, that get \
their content from a freemarker template. An example would be the about page.
grants_text_three = This would create a page that would use about.ftl as the body. The page would be \
accessed via /about and would override all servlet mappings in web.xml.
address_street_one = address street one
address_street_two = address street two
address_street_three = address street three
address_label = address label
loading_website_image = Loading website image
researchers_in = researchers in
view = view
grant_type = grant Type
grant_entry_for = grant entry for
regions = regions
grant_date = grant Date
map_states_string = states.
map_state_string = state.
unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals.
unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals.
currently_no_papers_for = Currently there are no {0} papers for
change_selection = change selection
view_all_departments = view all academic departments
first_name = First name
last_name = Last name
first_grant = First Grant
last_grant = Last Grant
currently_no_researchers = There are currently no researchers with a defined geographic focus.
reviewer_role = Reviewer Role
vivo_profile = VIVO profile
loading_data = loading data
select_award = Selected Award
grants_in_vivo = grants in VIVO
service_provider_role = Service Provider Role
view_all_faculty = view all faculty
no_grants_for = Currently there are no grants for
statewide_locations = state-wide locations.
faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization.
indiv_foafperson_for = for
indiv_foafperson_return = return to
no_departments_found = No academic departments found.
leadership_role = Leadership Role
countries = countries
first_publication = First publication
last_publication = Last publication
research_area = individuals in the department with this research area
password = password
limit_search = limit search
placeholder_image = placeholder image
view_all_members_of_org = View all the members of this organization.
display_more = more
create_entry = Create Entry
attendee_capitalized = Attendee
no_faculty_found = No faculty members found.
create_capitalized = Create
to = to
enter_new_role_value = Please enter a new value in the Role field.
countries_and_regions = countries and regions.
province_or_region = Province or Region
full_name = Full name
researchers = researchers
years_participation_in = Years of Participation in
return_to_grant = Return to grant
profile_capitalized = Profile
organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add
literature_excerpt_button_text = Bibliography
literature_all_button_text = All bibliorgraphy
sources_excerpt_button_text = Sources
sources_all_button_text = All sources
remove_doc_from_search_results = Remove from search results

View file

@ -1,109 +0,0 @@
menu_contactus = Contact Us
menu_welcomestart = Welcome
menu_copyright = copyright
menu_support = Support
menu_logout = Log out
menu_loginfull = Log in to manage this site
menu_login = Log in
menu_version = Version
menu_about = About
menu_termuse = Terms of Use
menu_powered = Powered by
intro_title = Welcome to VIVO
intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines.
intro_para2 = Browse or search information on people, departments, courses, grants, and publications.
intro_searchvivo = Search VIVO
intro_filtersearch = Filter search
identity_title = Электронная Философская Энциклопедия
identity_index = Index
identity_edit = Edit Page
identity_admin = Site Admin
identity_myprofile = My profile
identity_myaccount = My account
identity_user = user
collection_capitalized = Collection
place_of_grant = Place of grant
email_address = Email Address
#
# menupage templates ( /templates/freemarker/body/menupage )
#
grants_text_one = This body is from the the template file \
vivo/productMods/templates/freemarker/body/menupage/grants.ftl. \
In the display model, the grants page has a display:requiresBodyTemplate \
property that defines that the grants page overrides the default template. \
The default template for these pages is at /vitro/webapp/web/templates/freemarker/body/menupage/menupage.ftl
grants_two = This technique could be used to define pages without menu items, that get \
their content from a freemarker template. An example would be the about page.
grants_text_three = This would create a page that would use about.ftl as the body. The page would be \
accessed via /about and would override all servlet mappings in web.xml.
address_street_one = address street one
address_street_two = address street two
address_street_three = address street three
address_label = address label
loading_website_image = Loading website image
researchers_in = researchers in
view = view
grant_type = grant Type
grant_entry_for = grant entry for
regions = regions
grant_date = grant Date
map_states_string = states.
map_state_string = state.
unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals.
unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals.
currently_no_papers_for = Currently there are no {0} papers for
change_selection = change selection
view_all_departments = view all academic departments
first_name = First name
last_name = Last name
first_grant = First Grant
last_grant = Last Grant
currently_no_researchers = There are currently no researchers with a defined geographic focus.
reviewer_role = Reviewer Role
vivo_profile = VIVO profile
loading_data = loading data
select_award = Selected Award
grants_in_vivo = grants in VIVO
service_provider_role = Service Provider Role
view_all_faculty = view all faculty
no_grants_for = Currently there are no grants for
statewide_locations = state-wide locations.
faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization.
indiv_foafperson_for = for
indiv_foafperson_return = return to
no_departments_found = No academic departments found.
leadership_role = Leadership Role
countries = countries
first_publication = First publication
last_publication = Last publication
research_area = individuals in the department with this research area
password = password
limit_search = limit search
placeholder_image = placeholder image
view_all_members_of_org = View all the members of this organization.
display_more = more
create_entry = Create Entry
attendee_capitalized = Attendee
no_faculty_found = No faculty members found.
create_capitalized = Create
to = to
enter_new_role_value = Please enter a new value in the Role field.
countries_and_regions = countries and regions.
province_or_region = Province or Region
full_name = Full name
researchers = researchers
years_participation_in = Years of Participation in
return_to_grant = Return to grant
profile_capitalized = Profile
organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add
remove_doc_from_search_results=Удалить из результатов поиска

View file

@ -1,6 +0,0 @@
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 8.21428H20" stroke="#8B4513"/>
<path d="M0 10.3571H20" stroke="#8B4513"/>
<path d="M6.09782 16.2857L9.64279 12.1923L13.1878 16.2857H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
<path d="M6.09782 2.28571L9.64279 6.37909L13.1878 2.28571H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 393 B

View file

@ -1,6 +0,0 @@
<svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 7.5H20" stroke="#8B4513"/>
<path d="M0 9.64285H20" stroke="#8B4513"/>
<path d="M6.09782 4.85714L9.64279 0.763763L13.1878 4.85714H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
<path d="M6.09782 12.2857L9.64279 16.3791L13.1878 12.2857H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 390 B

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 172 B

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 B

After

Width:  |  Height:  |  Size: 170 B

View file

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="5.7735262"
height="10"
viewBox="0 0 5.7735262 9.9999996"
fill="none"
version="1.1"
id="svg4"
sodipodi:docname="arrow-right.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="994"
id="namedview6"
showgrid="false"
inkscape:zoom="26.25"
inkscape:cx="3.61814"
inkscape:cy="6.3770448"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M 0.38490149,9.1574888 5.1855781,4.9999822 0.38490149,0.84250696 Z"
fill="#8b4513"
stroke="#8b4513"
id="path2"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300"
style="stroke-width:0.769803" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 173 B

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 173 B

View file

@ -1,3 +0,0 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

View file

@ -1,3 +0,0 @@
<svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 5L7.5 10.5L14 2" stroke="#8B4513" stroke-width="2.5" stroke-linecap="square" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 218 B

View file

@ -1,3 +0,0 @@
<svg width="7" height="7" viewBox="0 0 7 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="3.5" cy="3.5" r="3" fill="#F6F6F6" stroke="#8B4513"/>
</svg>

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

Some files were not shown because too many files have changed in this diff Show more