Incremental development for NIHVIVO-1286.
This commit is contained in:
parent
13c61759b6
commit
23b0487c4a
2 changed files with 58 additions and 35 deletions
|
@ -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.
|
||||
|
|
|
@ -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)");
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue