Skip to content

Commit

Permalink
[Update Dao Layer #116] Entities are read from default context; add a…
Browse files Browse the repository at this point in the history
…pi to add, update and remove triples in named context
  • Loading branch information
kostobog committed Jun 19, 2024
1 parent 1a3f323 commit b34f756
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 13 deletions.
87 changes: 76 additions & 11 deletions src/main/java/cz/cvut/kbss/analysis/dao/BaseDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import cz.cvut.kbss.analysis.config.conf.PersistenceConf;
import cz.cvut.kbss.analysis.exception.PersistenceException;
import cz.cvut.kbss.analysis.model.AbstractEntity;
import cz.cvut.kbss.analysis.model.opdata.OperationalDataFilter;
import cz.cvut.kbss.analysis.model.util.EntityToOwlClassMapper;
import cz.cvut.kbss.analysis.service.IdentifierService;
import cz.cvut.kbss.jopa.model.EntityManager;
Expand Down Expand Up @@ -102,8 +101,7 @@ public List<T> findAll(URI contenxt) {
public Optional<T> find(URI id) {
Objects.requireNonNull(id);
try {
EntityDescriptor entityDescriptor = getEntityDescriptor(id);
return Optional.ofNullable(em.find(type, id, entityDescriptor));
return Optional.ofNullable(em.find(type, id));
} catch (RuntimeException e) {
throw new PersistenceException(e);
}
Expand Down Expand Up @@ -213,27 +211,94 @@ public boolean existsWithPredicate(String predicate, String value) {
}

/**
* Associates new object with subjectURI via property
* Add triple in the provided context
* @param subjectURI
* @param object should have non-null uri and context
* @param property
* @param object
* @param context
*/
public void persistObject(URI subjectURI, URI property, AbstractEntity object){
public void persistPropertyInContext(URI subjectURI, URI property, Object object, URI context){
Objects.requireNonNull(subjectURI);
Objects.requireNonNull(object);
Objects.requireNonNull(object.getUri());
Objects.requireNonNull(property);
Objects.requireNonNull(subjectURI);

em.createNativeQuery("""
INSERT {
GRAPH ?context{
?subject ?hasOperationalDataFilter ?object.
?subject ?property ?object.
}
}WHERE {}
""")
.setParameter("context", object.getContext())
.setParameter("subject", subjectURI)
.setParameter("hasOperationalDataFilter", property)
.setParameter("object", object.getUri())
.setParameter("property", property)
.setParameter("object", object)
.setParameter("context", context)
.executeUpdate();
}

/**R *
* @param subject
* @param property
* @param object
* @param context
*/
public void addOrReplaceValue(URI subject, URI property, Object object, URI context){
Objects.requireNonNull(subject);
Objects.requireNonNull(object);
Objects.requireNonNull(property);
Objects.requireNonNull(subject);

em.createNativeQuery("""
DELETE{
GRAPH ?context{
?subject ?property ?oldObject.
}
}INSERT {
GRAPH ?context{
?subject ?property ?object.
}
}WHERE {
OPTIONAL{
GRAPH ?context{
?subject ?property ?oldObject.
}
}
}
""")
.setParameter("subject", subject)
.setParameter("property", property)
.setParameter("object", object)
.setParameter("context", context)
.executeUpdate();
}


/**
* Removes all triples with subject subjectURi and property propertyURI in context.
* @param subjectURI
* @param propertyURI
* @param context
*/
public void removeAll(URI subjectURI, URI propertyURI, URI context){
Objects.requireNonNull(subjectURI);
Objects.requireNonNull(propertyURI);
Objects.requireNonNull(subjectURI);

em.createNativeQuery("""
DELETE {
GRAPH ?context{
?subject ?propertyURI ?object.
}
}WHERE {
GRAPH ?context{
?subject ?propertyURI ?object.
}
}
""")
.setParameter("subject", subjectURI)
.setParameter("propertyURI", propertyURI)
.setParameter("context", context)
.executeUpdate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.springframework.stereotype.Repository;

import java.net.URI;
import java.util.Objects;

@Repository
public class OperationalDataFilterDao extends BaseDao<OperationalDataFilter> {
Expand All @@ -35,7 +34,7 @@ public OperationalDataFilter findByEntity(URI entity) {
* @param filter should have non-null uri and context
*/
public void persistHasFilter(URI entityURI, OperationalDataFilter filter){
persistObject(entityURI, HAS_OPERATIONAL_DATA_FILTER_PROP, filter);
addOrReplaceValue(entityURI, HAS_OPERATIONAL_DATA_FILTER_PROP, filter, filter.getContext());
}

@Override
Expand Down

0 comments on commit b34f756

Please sign in to comment.