Rename all portal blank nodes with the same URI

This commit is contained in:
Brian Lowe 2022-05-27 17:41:50 +03:00
parent fc4d618be5
commit 530ad7d39c

View file

@ -3,25 +3,23 @@
package edu.cornell.mannlib.vitro.webapp.servlet.setup; package edu.cornell.mannlib.vitro.webapp.servlet.setup;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.ABOX_ASSERTIONS; import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.ABOX_ASSERTIONS;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.APPLICATION_METADATA;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.TBOX_ASSERTIONS;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.ABOX_ASSERTIONS_FIRSTTIME_BACKUP; import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.ABOX_ASSERTIONS_FIRSTTIME_BACKUP;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.TBOX_ASSERTIONS_FIRSTTIME_BACKUP; import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.APPLICATION_METADATA;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.APPLICATION_METADATA_FIRSTTIME_BACKUP; import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.APPLICATION_METADATA_FIRSTTIME_BACKUP;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.TBOX_ASSERTIONS;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.TBOX_ASSERTIONS_FIRSTTIME_BACKUP;
import java.io.StringWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.io.StringWriter;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextEvent;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.jena.ontology.OntModel; import org.apache.jena.ontology.OntModel;
import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property; import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.ResIterator; import org.apache.jena.rdf.model.ResIterator;
import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Resource;
@ -29,9 +27,6 @@ import org.apache.jena.shared.Lock;
import org.apache.jena.util.ResourceUtils; import org.apache.jena.util.ResourceUtils;
import org.apache.jena.util.iterator.ClosableIterator; import org.apache.jena.util.iterator.ClosableIterator;
import org.apache.jena.vocabulary.RDF; import org.apache.jena.vocabulary.RDF;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.rdf.model.RDFNode;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ContextModelAccess; import edu.cornell.mannlib.vitro.webapp.modelaccess.ContextModelAccess;
@ -130,23 +125,24 @@ public class ContentModelSetup extends JenaDataSourceSetupBase
* URI of the Portal based on the default namespace. * URI of the Portal based on the default namespace.
*/ */
private void setPortalUriOnFirstTime(Model model, ServletContext ctx) { private void setPortalUriOnFirstTime(Model model, ServletContext ctx) {
// Only a single portal is permitted in the initialization data // Only a single portal is permitted in the initialization data.
Resource portalResource = null; // Treat all blank nodes with type Portal as describing the same
// portal, and give them the same URI.
List<Resource> toRename = new ArrayList<Resource>();
ClosableIterator<Resource> portalResIt = model ClosableIterator<Resource> portalResIt = model
.listSubjectsWithProperty(RDF.type, .listSubjectsWithProperty(RDF.type,
model.getResource(VitroVocabulary.PORTAL)); model.getResource(VitroVocabulary.PORTAL));
try { try {
if (portalResIt.hasNext()) { while (portalResIt.hasNext()) {
Resource portalRes = portalResIt.next(); Resource portalRes = portalResIt.next();
if (portalRes.isAnon()) { if (portalRes.isAnon()) {
portalResource = portalRes; toRename.add(portalRes);
} }
} }
} finally { } finally {
portalResIt.close(); portalResIt.close();
} }
for (Resource portalResource : toRename) {
if (portalResource != null) {
ResourceUtils.renameResource(portalResource, getDefaultNamespace(ctx) + "portal1"); ResourceUtils.renameResource(portalResource, getDefaultNamespace(ctx) + "portal1");
} }
} }