From ef25ee4dd6773f5d68c69001765b5ad58121f94f Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 6 Nov 2013 09:23:43 -0500 Subject: [PATCH 1/4] Make it easier to monitor the ABoxReasoner thread. --- .../vitro/webapp/servlet/setup/SimpleReasonerSetup.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/SimpleReasonerSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/SimpleReasonerSetup.java index 4256de861..6d99d4c52 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/SimpleReasonerSetup.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/SimpleReasonerSetup.java @@ -33,6 +33,7 @@ import edu.cornell.mannlib.vitro.webapp.reasoner.ReasonerPlugin; import edu.cornell.mannlib.vitro.webapp.reasoner.SimpleReasoner; import edu.cornell.mannlib.vitro.webapp.reasoner.SimpleReasonerTBoxListener; import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus; +import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread; public class SimpleReasonerSetup implements ServletContextListener { @@ -121,7 +122,7 @@ public class SimpleReasonerSetup implements ServletContextListener { simpleReasoner.recompute(); } else if (RecomputeMode.BACKGROUND.equals(mode)) { log.info("starting ABox inference recompute in a separate thread."); - new Thread( + new VitroBackgroundThread( new ABoxRecomputer( simpleReasoner),"ABoxRecomputer").start(); } From b276cd5049de5e98d297e43aaf6be3bb40df5558 Mon Sep 17 00:00:00 2001 From: brianjlowe Date: Wed, 6 Nov 2013 11:02:33 -0500 Subject: [PATCH 2/4] VIVO-499 fixes bug in deduping applicable properties --- .../individual/GroupedPropertyList.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java index a009847c9..3c61f3b0b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java @@ -300,21 +300,26 @@ public class GroupedPropertyList extends BaseTemplateModel { return false; } for (ObjectProperty op : opList) { - if (op.getURI() != null && op.getURI().equals(pi.getPropertyURI())) { - if(op.getDomainVClassURI() == null) { - if(pi.getDomainClassURI() == null) { - return true; - } - } else if (op.getDomainVClassURI().equals(pi.getDomainClassURI())) { - return true; + boolean uriMatches = (op.getURI() != null + && op.getURI().equals(pi.getPropertyURI())); + boolean domainMatches = false; + boolean rangeMatches = false; + if(op.getDomainVClassURI() == null) { + if(pi.getDomainClassURI() == null) { + domainMatches = true; } - if(op.getRangeVClassURI() == null) { - if (pi.getDomainClassURI() == null) { - return true; - } - } else if (op.getRangeVClassURI().equals(pi.getRangeClassURI())) { - return true; + } else if (op.getDomainVClassURI().equals(pi.getDomainClassURI())) { + domainMatches = true; + } + if(op.getRangeVClassURI() == null) { + if (pi.getDomainClassURI() == null) { + rangeMatches = true; } + } else if (op.getRangeVClassURI().equals(pi.getRangeClassURI())) { + rangeMatches = true; + } + if (uriMatches && domainMatches && rangeMatches) { + return true; } } return false; From c2e8541732de6e9ca9f7b9fcbb1be4cc4a76e391 Mon Sep 17 00:00:00 2001 From: brianjlowe Date: Wed, 6 Nov 2013 11:03:17 -0500 Subject: [PATCH 3/4] fixes bug retrieving property inverses --- .../vitro/webapp/dao/jena/ObjectPropertyDaoJena.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java index 9c38774ab..4031627d2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java @@ -271,7 +271,6 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp public ObjectProperty getObjectPropertyByURI(String propertyURI) { - long start = System.currentTimeMillis(); if( propertyURI == null ) return null; OntModel ontModel = getOntModel(); @@ -279,7 +278,16 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp ontModel.enterCriticalSection(Lock.READ); try { - localModel.add(ontModel.listStatements(ontModel.getResource(propertyURI), null, (RDFNode) null)); + Resource prop = ontModel.getResource(propertyURI); + localModel.add(ontModel.listStatements(prop, null, (RDFNode) null)); + StmtIterator invit = ontModel.listStatements(prop, OWL.inverseOf, (RDFNode) null); + while (invit.hasNext()) { + Statement invSit = invit.nextStatement(); + if (invSit.getObject().isURIResource()) { + Resource invProp = (Resource) invSit.getObject(); + localModel.add(ontModel.listStatements(invProp, null, (RDFNode) null)); + } + } OntProperty op = localModel.getObjectProperty(propertyURI); return propertyFromOntProperty(op); } finally { From 7f67b1b7daf0319c199a5babbb2c5ed0b745a741 Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 6 Nov 2013 11:43:33 -0500 Subject: [PATCH 4/4] VIVO-495 fix bug in query-binding code. --- .../shortview/FakeApplicationOntologyService.java | 2 +- .../utils/dataGetter/SparqlQueryDataGetter.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/services/shortview/FakeApplicationOntologyService.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/services/shortview/FakeApplicationOntologyService.java index 8096c799c..92fcc8ae7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/services/shortview/FakeApplicationOntologyService.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/services/shortview/FakeApplicationOntologyService.java @@ -442,7 +442,7 @@ public class FakeApplicationOntologyService { private static String QUERY_STRING = "" + "PREFIX obo: \n" + "PREFIX vcard: \n" - + "SELECT ?uri ?pt \n" + "WHERE { \n" + + "SELECT ?pt \n" + "WHERE { \n" + " ?uri obo:ARG_2000028 ?vIndividual . \n" + " ?vIndividual vcard:hasTitle ?vTitle . \n" + " ?vTitle vcard:title ?pt . \n" + "} LIMIT 1"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java index e7ded50e9..341e2e030 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java @@ -148,6 +148,10 @@ public class SparqlQueryDataGetter extends DataGetterBase implements DataGetter{ for (String key: pageData.keySet()) { merged.put(key, String.valueOf(pageData.get(key))); } + if (log.isDebugEnabled()) { + log.debug("Merging request parameters " + parameterMap + + " with page data " + pageData + " results in " + merged); + } return merged; } @@ -161,9 +165,13 @@ public class SparqlQueryDataGetter extends DataGetterBase implements DataGetter{ private String bindParameters(String text, Map merged) { String bound = text; for (String key : merged.keySet()) { - bound.replace('?' + key, '<' + merged.get(key) + '>'); + bound = bound.replace('?' + key, '<' + merged.get(key) + '>'); + } + if (log.isDebugEnabled()) { + log.debug("parameters: " + merged); + log.debug("query before binding parameters:" + text); + log.debug("query after binding parameters: " + bound); } - log.debug("query after binding parameters: " + bound); return bound; }