incremental developmnt for NIHVIVO-1286 - Academic Intervals

This commit is contained in:
sjm222 2011-01-06 12:01:07 +00:00
parent fe43eac71e
commit 119ead10c9

View file

@ -19,6 +19,7 @@ import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory; import com.hp.hpl.jena.rdf.model.ResourceFactory;
@ -42,6 +43,8 @@ public class DateTimeMigration {
private static final String hasTimeIntervalURI = "http://vivoweb.org/ontology/core#hasTimeInterval"; private static final String hasTimeIntervalURI = "http://vivoweb.org/ontology/core#hasTimeInterval";
private static final String dateTimeIntervalURI = "http://vivoweb.org/ontology/core#dateTimeInterval"; private static final String dateTimeIntervalURI = "http://vivoweb.org/ontology/core#dateTimeInterval";
private static final String dateTimeIntervalForURI = "http://vivoweb.org/ontology/core#dateTimeIntervalFor"; private static final String dateTimeIntervalForURI = "http://vivoweb.org/ontology/core#dateTimeIntervalFor";
private static final String startURI = "http://vivoweb.org/ontology/core#start";
private static final String endURI = "http://vivoweb.org/ontology/core#end";
private static final String yPrecisionURI = "http://vivoweb.org/ontology/core#yearPrecision"; private static final String yPrecisionURI = "http://vivoweb.org/ontology/core#yearPrecision";
private static final String ymPrecisionURI = "http://vivoweb.org/ontology/core#yearMonthPrecision"; private static final String ymPrecisionURI = "http://vivoweb.org/ontology/core#yearMonthPrecision";
@ -53,7 +56,8 @@ public class DateTimeMigration {
private ObjectProperty dateTimeIntervalProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimeIntervalURI); private ObjectProperty dateTimeIntervalProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimeIntervalURI);
private ObjectProperty dateTimeIntervalForProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimeIntervalForURI); private ObjectProperty dateTimeIntervalForProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimeIntervalForURI);
private ObjectProperty dateTimePrecisionProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimePrecisionURI); private ObjectProperty dateTimePrecisionProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(dateTimePrecisionURI);
private ObjectProperty startProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(startURI);
private ObjectProperty endProp = (ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM)).createObjectProperty(endURI);
/** /**
* Constructor * Constructor
@ -99,17 +103,29 @@ public class DateTimeMigration {
while (iter.hasNext()) { while (iter.hasNext()) {
Statement stmt = iter.next(); Statement stmt1 = iter.next();
Statement stmt2 = aboxModel.getProperty(stmt.getObject().asResource(), dateTimeIntervalProp); Statement stmt2 = aboxModel.getProperty(stmt1.getObject().asResource(), dateTimeIntervalProp);
if (stmt2 != null) { if (stmt2 == null) continue;
retractions.add(stmt2); if (!stmt1.getObject().isResource()) continue;
retractions.add(stmt2.getObject().asResource(), dateTimeIntervalForProp, stmt2.getSubject()); if (!stmt2.getObject().isResource()) continue;
additions.add(stmt.getSubject(), dateTimeIntervalProp, stmt2.getObject());
additions.add(stmt2.getObject().asResource(), dateTimeIntervalProp, stmt.getSubject()); retractions.add(stmt2);
retractions.add(stmt2.getObject().asResource(), dateTimeIntervalForProp, stmt2.getSubject());
additions.add(stmt1.getSubject(), dateTimeIntervalProp, stmt1.getObject());
additions.add(stmt1.getObject().asResource(), dateTimeIntervalForProp, stmt1.getSubject());
StmtIterator iter2 = aboxModel.listStatements(stmt2.getObject().asResource(), (Property) null, (RDFNode) null);
while (iter2.hasNext()) {
Statement stmt3 = iter2.next();
retractions.add(stmt3);
if ( (stmt3.getPredicate().equals(startProp)) || (stmt3.getPredicate().equals(endProp)) ) {
additions.add(stmt1.getObject().asResource(), stmt3.getPredicate(), stmt3.getObject());
}
} }
} }
aboxModel.remove(retractions); aboxModel.remove(retractions);
@ -119,7 +135,7 @@ public class DateTimeMigration {
if (additions.size() > 0) { if (additions.size() > 0) {
long count = additions.size() / 2; long count = additions.size() / 2;
logger.log(count + " hasTimeInterval predicate" + ((count > 1) ? "s were" : " was") + " updated to use dateTimeInterval instead"); logger.log(count + " Academic interval" + ((count > 1) ? "s were" : " was") + " updated to the new date/time format");
} }
} finally { } finally {
aboxModel.leaveCriticalSection(); aboxModel.leaveCriticalSection();
@ -198,7 +214,7 @@ public class DateTimeMigration {
record.recordAdditions(additions); record.recordAdditions(additions);
if (additions.size() > 0) { if (additions.size() > 0) {
logger.log(additions.size() + " date/time assertion" + logger.log(additions.size() + " date/time literal" +
((additions.size() > 1) ? "s" : "") + ((additions.size() > 1) ? "s" : "") +
" were updated to the 1.2 representation."); " were updated to the 1.2 representation.");
} }