diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/BaseEditConfigurationGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/BaseEditConfigurationGenerator.java index f5de55789..55cff7761 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/BaseEditConfigurationGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/BaseEditConfigurationGenerator.java @@ -16,6 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTw import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.IdModelSelector; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.StandardModelSelector; import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; +import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.LanguageOption; public abstract class BaseEditConfigurationGenerator implements EditConfigurationGenerator { @@ -63,6 +64,7 @@ public abstract class BaseEditConfigurationGenerator implements EditConfiguratio setupModelSelectorsFromVitroRequest(vreq, editConfig); OntModel queryModel = ModelAccess.on(vreq).getOntModel(); + OntModel languageNeutralModel = vreq.getLanguageNeutralUnionFullModel(); if( editConfig.getSubjectUri() == null) editConfig.setSubjectUri( EditConfigurationUtils.getSubjectUri(vreq)); @@ -78,7 +80,10 @@ public abstract class BaseEditConfigurationGenerator implements EditConfiguratio editConfig.prepareForObjPropUpdate(queryModel); } else if( dataKey != null ) { // edit of a data prop statement //do nothing since the data prop form generator must take care of it - editConfig.prepareForDataPropUpdate(queryModel, vreq.getWebappDaoFactory().getDataPropertyDao()); + // Use language-neutral model to ensure that a data property statement + // is found for any literal hash, even if the UI locale is changed. + editConfig.prepareForDataPropUpdate(languageNeutralModel, + vreq.getWebappDaoFactory().getDataPropertyDao()); } else{ //this might be a create new or a form editConfig.prepareForNonUpdate(queryModel); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/modelaccess/impl/RequestModelAccessImpl.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/modelaccess/impl/RequestModelAccessImpl.java index 3f47566fe..63d70691c 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/modelaccess/impl/RequestModelAccessImpl.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/modelaccess/impl/RequestModelAccessImpl.java @@ -202,7 +202,7 @@ public class RequestModelAccessImpl implements RequestModelAccess { @Override public OntModel getOntModel(String name, LanguageOption... options) { - return addLanguageAwareness(getOntModel(new OntModelKey(name, options))); + return getOntModel(new OntModelKey(name, options)); } private OntModel getOntModel(OntModelKey key) { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/filter/LangSort.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/filter/LangSort.java index 933da13c2..10007b119 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/filter/LangSort.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/filter/LangSort.java @@ -36,7 +36,13 @@ public class LangSort { } protected int compareLangs(String t1lang, String t2lang) { - return languageIndex(t1lang) - languageIndex(t2lang); + int index1 = languageIndex(t1lang); + int index2 = languageIndex(t2lang); + if(index1 == index2) { + return t1lang.compareTo(t2lang); + } else { + return languageIndex(t1lang) - languageIndex(t2lang); + } } /**