Incremental development for NIHVIVO-1286.

This commit is contained in:
sjm222 2011-01-04 17:51:55 +00:00
parent 13c61759b6
commit 23b0487c4a
2 changed files with 58 additions and 35 deletions

View file

@ -403,9 +403,6 @@ public class ABoxUpdater {
// if the newly added property has an inverse in the new TBox, then for all existing // if the newly added property has an inverse in the new TBox, then for all existing
// ABox statements involving that inverse (if the inverse is new also there won't be // ABox statements involving that inverse (if the inverse is new also there won't be
// any) add the corresponding statement with the new property. // any) add the corresponding statement with the new property.
//
// Shouldn't a reasoner be doing this?
OntProperty inverseOfAddedProperty = addedProperty.getInverseOf(); OntProperty inverseOfAddedProperty = addedProperty.getInverseOf();
@ -419,8 +416,17 @@ public class ABoxUpdater {
while (iter.hasNext()) { while (iter.hasNext()) {
Statement stmt = iter.next(); Statement stmt = iter.next();
Statement newStmt = ResourceFactory.createStatement(stmt.getObject().asResource(), addedProperty, stmt.getSubject());
additions.add(newStmt); if (stmt.getObject().isResource()) {
Statement newStmt = ResourceFactory.createStatement(stmt.getObject().asResource(), addedProperty, stmt.getSubject());
additions.add(newStmt);
} else {
logger.log("WARNING: expected the object of this statement to be a Resource, and it's not. No inverse has been asserted: " +
" subject = " + stmt.getSubject().getURI() +
" property = " + stmt.getPredicate().getURI() +
" object = " + (stmt.getObject().isLiteral() ? ((Literal)stmt.getObject()).getLexicalForm()
: ((Resource)stmt.getObject()).getURI()));
}
} }
aboxModel.add(additions); aboxModel.add(additions);
@ -474,18 +480,22 @@ public class ABoxUpdater {
} }
OntProperty replacementProperty = null; OntProperty replacementProperty = null;
OntProperty parent = deletedProperty.getSuperProperty();
if (parent != null) { if (!propObj.getNotes().equals("Delete")) {
replacementProperty = newTboxModel.getOntProperty(parent.getURI());
OntProperty parent = deletedProperty.getSuperProperty();
while (replacementProperty == null) { if (parent != null) {
parent = parent.getSuperProperty(); replacementProperty = newTboxModel.getOntProperty(parent.getURI());
if (parent == null) {
break; while (replacementProperty == null) {
} parent = parent.getSuperProperty();
replacementProperty = newTboxModel.getOntProperty(parent.getURI()); if (parent == null) {
} break;
}
replacementProperty = newTboxModel.getOntProperty(parent.getURI());
}
}
} }
Model deletePropModel = ModelFactory.createDefaultModel(); Model deletePropModel = ModelFactory.createDefaultModel();
@ -574,6 +584,13 @@ public class ABoxUpdater {
: ((Resource)statement.getObject()).getURI())); : ((Resource)statement.getObject()).getURI()));
} }
public static String stmtString(Statement statement) {
return " subject = " + statement.getSubject().getURI() +
" property = " + statement.getPredicate().getURI() +
" object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)"
: ((Resource)statement.getObject()).getURI() + " (Resource)");
}
/** /**
* *
* Update a knowledge base to account for a class deletion in the ontology. * Update a knowledge base to account for a class deletion in the ontology.

View file

@ -149,38 +149,39 @@ public class DateTimeMigration {
} else if (yPrecisionURI.equals(precision)) { } else if (yPrecisionURI.equals(precision)) {
try { try {
date = yearFormat.parse(stmt.getObject().asLiteral().getLexicalForm()); date = yearFormat.parse(stmt.getObject().asLiteral().getLexicalForm());
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} catch (ParseException pe) { } catch (ParseException pe) {
logger.log("Parse Exception for year literal: " + stmt.getObject().asLiteral().getLexicalForm() + ". skipping statement."); logger.log("Parse Exception for year literal: " + stmt.getObject().asLiteral().getLexicalForm() +
} ". The following statement has been removed from the knowledge base " + stmtString(stmt));
}
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} else if (ymPrecisionURI.equals(precision)) { } else if (ymPrecisionURI.equals(precision)) {
try { try {
date = yearMonthFormat.parse(stmt.getObject().asLiteral().getLexicalForm()); date = yearMonthFormat.parse(stmt.getObject().asLiteral().getLexicalForm());
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} catch (ParseException pe) { } catch (ParseException pe) {
logger.log("Parse Exception for year literal: " + stmt.getObject().asLiteral().getLexicalForm() + ". skipping statement."); logger.log("Parse Exception for yearMonth literal: " + stmt.getObject().asLiteral().getLexicalForm() +
". The following statement has been removed from the knowledge base " + stmtString(stmt));
} }
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} else if (ymdPrecisionURI.equals(precision)) { } else if (ymdPrecisionURI.equals(precision)) {
try { try {
date = yearMonthDayFormat.parse(stmt.getObject().asLiteral().getLexicalForm()); date = yearMonthDayFormat.parse(stmt.getObject().asLiteral().getLexicalForm());
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} catch (ParseException pe) { } catch (ParseException pe) {
logger.log("Parse Exception for year literal: " + stmt.getObject().asLiteral().getLexicalForm() + ". skipping statement."); logger.log("Parse Exception for yearMonthDay literal: " + stmt.getObject().asLiteral().getLexicalForm() +
} ". The following statement has been removed from the knowledge base " + stmtString(stmt));
}
newStmt = ResourceFactory.createStatement(stmt.getSubject(), stmt.getPredicate(), getDateTimeLiteral(date) );
} else if (ymdtPrecisionURI.equals(precision)) { } else if (ymdtPrecisionURI.equals(precision)) {
logger.log("WARNING: unhandled precision found for individual " + stmt.getSubject().getURI() + ": " + precision ); logger.log("WARNING: unhandled precision found for individual " + stmt.getSubject().getURI() + ": " + precision +
". The following statement has been removed from the knowledge base " + stmtString(stmt));
} else { } else {
logger.log("WARNING: unrecognized precision found for individual " + stmt.getSubject().getURI() + ": " + precision ); logger.log("WARNING: unrecognized precision found for individual " + stmt.getSubject().getURI() + ": " + precision +
". The following statement has been removed from the knowledge base " + stmtString(stmt));
} }
retractions.add(stmt);
if (newStmt != null ) { if (newStmt != null ) {
additions.add(newStmt); additions.add(newStmt);
retractions.add(stmt);
} }
} }
@ -217,7 +218,6 @@ public class DateTimeMigration {
} }
} }
public static Literal getDateTimeLiteral(Date date) { public static Literal getDateTimeLiteral(Date date) {
// Note this loses time zone info, don't know how get parser to extract that // Note this loses time zone info, don't know how get parser to extract that
@ -226,7 +226,13 @@ public class DateTimeMigration {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(date); cal.setTime(date);
XSDDateTime dt = new XSDDateTime(cal); XSDDateTime dt = new XSDDateTime(cal);
return ResourceFactory.createTypedLiteral(dt); return ResourceFactory.createTypedLiteral(dt);
} }
public static String stmtString(Statement statement) {
return " subject = " + statement.getSubject().getURI() +
" property = " + statement.getPredicate().getURI() +
" object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)"
: ((Resource)statement.getObject()).getURI() + " (Resource)");
}
} }