From 5370ad5b8ca3bc6c3abf233c700d632103a7bfb5 Mon Sep 17 00:00:00 2001 From: stellamit Date: Fri, 22 Jun 2012 19:04:07 +0000 Subject: [PATCH] NIHVIVO-3788 - dcterms:creator not being included in linked data --- .../individual/IndividualRdfAssembler.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualRdfAssembler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualRdfAssembler.java index 263bdfd9e..c104d091b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualRdfAssembler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualRdfAssembler.java @@ -125,7 +125,8 @@ public class IndividualRdfAssembler { } newModel = getLabelAndTypes(entity, contextModel, newModel ); - + newModel = getStatementsWithUntypedProperties(subj, contextModel, vreq.getAssertionsOntModel(), newModel); + //bdc34: The following code adds all triples where entity is the Subject. // contextModel.enterCriticalSection(Lock.READ); // try { @@ -202,5 +203,32 @@ public class IndividualRdfAssembler { return newModel; } - + + /* This method adds in statements in which the property does not + * have an rdf type in the asserted model. + * This was added for release 1.5 to handle cases such as the + * reasoning-plugin inferred dcterms:creator assertion + */ + private Model getStatementsWithUntypedProperties(Resource subject, OntModel contextModel, OntModel assertionsModel, Model newModel) { + contextModel.enterCriticalSection(Lock.READ); + try { + StmtIterator iter = contextModel.listStatements(subject, (Property) null, (RDFNode) null); + while (iter.hasNext()) { + Statement stmt = iter.next(); + Property property = stmt.getPredicate(); + assertionsModel.enterCriticalSection(Lock.READ); + try { + if (!assertionsModel.contains(property, RDF.type) && !newModel.contains(stmt)) { + newModel.add(stmt); + } + } finally { + assertionsModel.leaveCriticalSection(); + } + } + } finally { + contextModel.leaveCriticalSection(); + } + + return newModel; + } }