NIHVIVO-161 add method ObjectPropertyStatementDao.getObjectPropertyStatements(ObjectPropertyStatement) to search for all object properties that match a given pattern.
This commit is contained in:
parent
6adee49eef
commit
b8c36d7f32
3 changed files with 64 additions and 6 deletions
|
@ -23,6 +23,8 @@ public interface ObjectPropertyStatementDao {
|
|||
|
||||
List<ObjectPropertyStatement> getObjectPropertyStatements(ObjectProperty objectProperty, int startIndex, int endIndex);
|
||||
|
||||
List<ObjectPropertyStatement> getObjectPropertyStatements(ObjectPropertyStatement objPropertyStmt);
|
||||
|
||||
Individual fillExistingObjectPropertyStatements( Individual entity );
|
||||
|
||||
int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt );
|
||||
|
|
|
@ -27,6 +27,7 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) {
|
||||
innerObjectPropertyStatementDao.deleteObjectPropertyStatement(objPropertyStmt);
|
||||
}
|
||||
|
@ -48,6 +49,7 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Individual fillExistingObjectPropertyStatements(Individual entity) {
|
||||
Individual ind = innerObjectPropertyStatementDao.fillExistingObjectPropertyStatements(entity);
|
||||
if( ind == null )
|
||||
|
@ -58,14 +60,23 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements(ObjectProperty objectProperty) {
|
||||
return filterAndWrapList( innerObjectPropertyStatementDao.getObjectPropertyStatements(objectProperty), filters );
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements(ObjectProperty objectProperty, int startIndex, int endIndex) {
|
||||
return filterAndWrapList( innerObjectPropertyStatementDao.getObjectPropertyStatements(objectProperty, startIndex, endIndex) ,filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements(
|
||||
ObjectPropertyStatement objPropertyStmt) {
|
||||
return filterAndWrapList(innerObjectPropertyStatementDao.getObjectPropertyStatements(objPropertyStmt), filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) {
|
||||
return innerObjectPropertyStatementDao.insertNewObjectPropertyStatement(objPropertyStmt);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.hp.hpl.jena.rdf.model.Property;
|
|||
import com.hp.hpl.jena.rdf.model.Resource;
|
||||
import com.hp.hpl.jena.rdf.model.ResourceFactory;
|
||||
import com.hp.hpl.jena.rdf.model.Statement;
|
||||
import com.hp.hpl.jena.rdf.model.StmtIterator;
|
||||
import com.hp.hpl.jena.shared.Lock;
|
||||
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
||||
|
||||
|
@ -28,6 +29,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
|
|||
super(wadf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) {
|
||||
deleteObjectPropertyStatement(objPropertyStmt, getOntModelSelector().getABoxModel());
|
||||
}
|
||||
|
@ -50,6 +52,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Individual fillExistingObjectPropertyStatements(Individual entity) {
|
||||
if (entity.getURI() == null)
|
||||
return entity;
|
||||
|
@ -60,7 +63,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
|
|||
|
||||
Resource ind = getOntModel().getResource(entity.getURI());
|
||||
List<ObjectPropertyStatement> objPropertyStmtList = new ArrayList<ObjectPropertyStatement>();
|
||||
ClosableIterator propIt = ind.listProperties();
|
||||
ClosableIterator<Statement> propIt = ind.listProperties();
|
||||
try {
|
||||
while (propIt.hasNext()) {
|
||||
Statement st = (Statement) propIt.next();
|
||||
|
@ -119,16 +122,18 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
|
|||
|
||||
private int NO_LIMIT = -1;
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements (ObjectProperty objectProperty) {
|
||||
return getObjectPropertyStatements(objectProperty, NO_LIMIT, NO_LIMIT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements (ObjectProperty objectProperty, int startIndex, int endIndex) {
|
||||
getOntModel().enterCriticalSection(Lock.READ);
|
||||
List<ObjectPropertyStatement> opss = new ArrayList<ObjectPropertyStatement>();
|
||||
try {
|
||||
Property prop = ResourceFactory.createProperty(objectProperty.getURI());
|
||||
ClosableIterator opsIt = getOntModel().listStatements(null,prop,(Resource)null);
|
||||
ClosableIterator<Statement> opsIt = getOntModel().listStatements(null,prop,(Resource)null);
|
||||
try {
|
||||
int count = 0;
|
||||
while ( (opsIt.hasNext()) && ((endIndex<0) || (count<endIndex)) ) {
|
||||
|
@ -151,11 +156,51 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
|
|||
opsIt.close();
|
||||
}
|
||||
} finally {
|
||||
getOntModel().leaveCriticalSection()
|
||||
; }
|
||||
getOntModel().leaveCriticalSection();
|
||||
}
|
||||
return opss;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ObjectPropertyStatement> getObjectPropertyStatements(
|
||||
ObjectPropertyStatement objPropertyStmt) {
|
||||
List<ObjectPropertyStatement> opss = new ArrayList<ObjectPropertyStatement>();
|
||||
|
||||
getOntModel().enterCriticalSection(Lock.READ);
|
||||
try {
|
||||
String subjectUri = objPropertyStmt.getSubjectURI();
|
||||
String propertyUri = objPropertyStmt.getPropertyURI();
|
||||
String objectUri = objPropertyStmt.getObjectURI();
|
||||
|
||||
Resource subject = (subjectUri == null) ? null : ResourceFactory.createResource(subjectUri);
|
||||
Property property = (propertyUri == null) ? null : ResourceFactory
|
||||
.createProperty(propertyUri);
|
||||
Resource object = (objectUri == null) ? null : ResourceFactory.createResource(objectUri);
|
||||
StmtIterator opsIt = getOntModel().listStatements(subject, property, object);
|
||||
try {
|
||||
while (opsIt.hasNext()) {
|
||||
Statement stmt = opsIt.next();
|
||||
if (stmt.getObject().isResource()) {
|
||||
Resource objRes = (Resource) stmt.getObject();
|
||||
if (!objRes.isAnon()) {
|
||||
ObjectPropertyStatement ops = new ObjectPropertyStatementImpl();
|
||||
ops.setSubjectURI(stmt.getSubject().getURI());
|
||||
ops.setPropertyURI(stmt.getPredicate().getURI());
|
||||
ops.setObjectURI(objRes.getURI());
|
||||
opss.add(ops);
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
opsIt.close();
|
||||
}
|
||||
} finally {
|
||||
getOntModel().leaveCriticalSection();
|
||||
}
|
||||
return opss;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) {
|
||||
return insertNewObjectPropertyStatement(objPropertyStmt, getOntModelSelector().getABoxModel());
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue