diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java index 63cbeb5bf61..89f8c11d076 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java @@ -455,9 +455,25 @@ public void registerExternalTerm(JsonObject cvocEntry, String term) { logger.fine("Ingoring blank term"); return; } + boolean isExternal = false; + JsonObject vocabs = cvocEntry.getJsonObject("vocabs"); + for (String key: vocabs.keySet()) { + JsonObject vocab = vocabs.getJsonObject(key); + if (vocab.containsKey("uriSpace")) { + if (term.startsWith(vocab.getString("uriSpace"))) { + isExternal = true; + break; + } + } + } + if (!isExternal) { + logger.fine("Ignoring free text entry: " + term); + return; + } logger.fine("Registering term: " + term); try { - URI uri = new URI(term); + //Assure the term is in URI form - should be if the uriSpace entry was correct + new URI(term); ExternalVocabularyValue evv = null; try { evv = em.createQuery("select object(o) from ExternalVocabularyValue as o where o.uri=:uri",