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
// ABox statements involving that inverse (if the inverse is new also there won't be
// any) add the corresponding statement with the new property.
//
// Shouldn't a reasoner be doing this?
OntProperty inverseOfAddedProperty = addedProperty.getInverseOf();
@ -419,8 +416,17 @@ public class ABoxUpdater {
while (iter.hasNext()) {
Statement stmt = iter.next();
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);
@ -474,6 +480,9 @@ public class ABoxUpdater {
}
OntProperty replacementProperty = null;
if (!propObj.getNotes().equals("Delete")) {
OntProperty parent = deletedProperty.getSuperProperty();
if (parent != null) {
@ -487,6 +496,7 @@ public class ABoxUpdater {
replacementProperty = newTboxModel.getOntProperty(parent.getURI());
}
}
}
Model deletePropModel = ModelFactory.createDefaultModel();
@ -574,6 +584,13 @@ public class ABoxUpdater {
: ((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.

View file

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