Search in sources :

Example 11 with TemporalInstant

use of org.apache.rya.indexing.TemporalInstant in project incubator-rya by apache.

the class AccumuloTemporalIndexer method storeStatement.

/**
 * Store a statement in the index if it meets the criterion: Object should be
 * a literal and one of the validPredicates from the configuration.
 * If it does not meet the criteria, it is silently ignored.
 * logs a warning if the object is not parse-able.
 * Attempts to parse with calendarValue = literalValue.calendarValue()
 * if that fails, tries: org.joda.time.DateTime.parse() .
 * T O D O parse an interval using multiple predicates for same subject -- ontology dependent.
 */
private void storeStatement(final Statement statement) throws IOException, IllegalArgumentException {
    Objects.requireNonNull(temporalIndexBatchWriter, "This is not initialized for writing.  Must call setMultiTableBatchWriter() and init().");
    // if the predicate list is empty, accept all predicates.
    // Otherwise, make sure the predicate is on the "valid" list
    final boolean isValidPredicate = validPredicates == null || validPredicates.isEmpty() || validPredicates.contains(statement.getPredicate());
    if (!isValidPredicate || !(statement.getObject() instanceof Literal)) {
        return;
    }
    // 0 begin, 1 end of interval
    final DateTime[] indexDateTimes = new DateTime[2];
    extractDateTime(statement, indexDateTimes);
    if (indexDateTimes[0] == null) {
        return;
    }
    if (!this.isInit)
        throw new RuntimeException("Method .init() was not called (or failed) before attempting to store statements.");
    // Add this as an instant, or interval.
    try {
        if (indexDateTimes[1] != null) {
            final TemporalInterval interval = new TemporalInterval(new TemporalInstantRfc3339(indexDateTimes[0]), new TemporalInstantRfc3339(indexDateTimes[1]));
            addInterval(temporalIndexBatchWriter, interval, statement);
        } else {
            final TemporalInstant instant = new TemporalInstantRfc3339(indexDateTimes[0]);
            addInstant(temporalIndexBatchWriter, instant, statement);
        }
    } catch (final MutationsRejectedException e) {
        throw new IOException("While adding interval/instant for statement =" + statement, e);
    }
}
Also used : Literal(org.openrdf.model.Literal) TemporalInstantRfc3339(org.apache.rya.indexing.TemporalInstantRfc3339) IOException(java.io.IOException) TemporalInstant(org.apache.rya.indexing.TemporalInstant) TemporalInterval(org.apache.rya.indexing.TemporalInterval) DateTime(org.joda.time.DateTime) MutationsRejectedException(org.apache.accumulo.core.client.MutationsRejectedException)

Example 12 with TemporalInstant

use of org.apache.rya.indexing.TemporalInstant in project incubator-rya by apache.

the class MongoEventStorageIT method delete.

@Test
public void delete() throws Exception {
    final Geometry geo = GF.createPoint(new Coordinate(10, 10));
    final TemporalInstant instant = new TemporalInstantRfc3339(DateTime.now());
    // An Event that will be stored.
    final Event event = Event.builder().setSubject(new RyaURI("urn:event/002")).setGeometry(geo).setTemporalInstant(instant).build();
    // Create it.
    final EventStorage storage = new MongoEventStorage(super.getMongoClient(), RYA_INSTANCE_NAME);
    storage.create(event);
    // Delete it.
    final boolean deleted = storage.delete(new RyaURI("urn:event/002"));
    // Verify a document was deleted.
    assertTrue(deleted);
}
Also used : Geometry(com.vividsolutions.jts.geom.Geometry) RyaURI(org.apache.rya.api.domain.RyaURI) Coordinate(com.vividsolutions.jts.geom.Coordinate) TemporalInstantRfc3339(org.apache.rya.indexing.TemporalInstantRfc3339) Event(org.apache.rya.indexing.geotemporal.model.Event) TemporalInstant(org.apache.rya.indexing.TemporalInstant) EventStorage(org.apache.rya.indexing.geotemporal.storage.EventStorage) Test(org.junit.Test)

Example 13 with TemporalInstant

use of org.apache.rya.indexing.TemporalInstant in project incubator-rya by apache.

the class MongoEventStorageIT method update_differentSubjects.

@Test(expected = EventStorageException.class)
public void update_differentSubjects() throws Exception {
    final EventStorage storage = new MongoEventStorage(super.getMongoClient(), RYA_INSTANCE_NAME);
    final Geometry geo = GF.createPoint(new Coordinate(10, 10));
    final TemporalInstant instant = new TemporalInstantRfc3339(DateTime.now());
    // Two objects that do not have the same Subjects.
    final Event old = Event.builder().setSubject(new RyaURI("urn:event/001")).setGeometry(geo).setTemporalInstant(instant).build();
    final Event updated = Event.builder().setSubject(new RyaURI("urn:event/002")).setGeometry(geo).setTemporalInstant(instant).build();
    // The update will fail.
    storage.update(old, updated);
}
Also used : Geometry(com.vividsolutions.jts.geom.Geometry) RyaURI(org.apache.rya.api.domain.RyaURI) Coordinate(com.vividsolutions.jts.geom.Coordinate) TemporalInstantRfc3339(org.apache.rya.indexing.TemporalInstantRfc3339) Event(org.apache.rya.indexing.geotemporal.model.Event) TemporalInstant(org.apache.rya.indexing.TemporalInstant) EventStorage(org.apache.rya.indexing.geotemporal.storage.EventStorage) Test(org.junit.Test)

Example 14 with TemporalInstant

use of org.apache.rya.indexing.TemporalInstant in project incubator-rya by apache.

the class MongoEventStorageIT method can_not_create_with_same_subject.

@Test
public void can_not_create_with_same_subject() throws Exception {
    final Geometry geo = GF.createPoint(new Coordinate(10, 10));
    final TemporalInstant instant = new TemporalInstantRfc3339(DateTime.now());
    // An Event that will be stored.
    final Event event = Event.builder().setSubject(new RyaURI("urn:event/001")).setGeometry(geo).setTemporalInstant(instant).build();
    // Create it.
    final EventStorage storage = new MongoEventStorage(super.getMongoClient(), RYA_INSTANCE_NAME);
    storage.create(event);
    // Try to create it again. This will fail.
    boolean failed = false;
    try {
        storage.create(event);
    } catch (final EventAlreadyExistsException e) {
        failed = true;
    }
    assertTrue(failed);
}
Also used : Geometry(com.vividsolutions.jts.geom.Geometry) RyaURI(org.apache.rya.api.domain.RyaURI) Coordinate(com.vividsolutions.jts.geom.Coordinate) TemporalInstantRfc3339(org.apache.rya.indexing.TemporalInstantRfc3339) Event(org.apache.rya.indexing.geotemporal.model.Event) TemporalInstant(org.apache.rya.indexing.TemporalInstant) EventAlreadyExistsException(org.apache.rya.indexing.geotemporal.storage.EventStorage.EventAlreadyExistsException) EventStorage(org.apache.rya.indexing.geotemporal.storage.EventStorage) Test(org.junit.Test)

Example 15 with TemporalInstant

use of org.apache.rya.indexing.TemporalInstant in project incubator-rya by apache.

the class MongoEventStorageIT method update.

@Test
public void update() throws Exception {
    final EventStorage storage = new MongoEventStorage(super.getMongoClient(), RYA_INSTANCE_NAME);
    final Geometry geo = GF.createPoint(new Coordinate(10, 10));
    TemporalInstant instant = new TemporalInstantRfc3339(DateTime.now());
    // An Event that will be stored.
    final Event event = Event.builder().setSubject(new RyaURI("urn:event/004")).setGeometry(geo).setTemporalInstant(instant).build();
    storage.create(event);
    // Show Alice was stored.
    Optional<Event> latest = storage.get(new RyaURI("urn:event/004"));
    assertEquals(event, latest.get());
    instant = new TemporalInstantRfc3339(DateTime.now());
    // Change Alice's eye color to brown.
    final Event updated = Event.builder(event).setTemporalInstant(instant).build();
    storage.update(event, updated);
    // Fetch the Alice object and ensure it has the new value.
    latest = storage.get(new RyaURI("urn:event/004"));
    assertEquals(updated, latest.get());
}
Also used : Geometry(com.vividsolutions.jts.geom.Geometry) RyaURI(org.apache.rya.api.domain.RyaURI) Coordinate(com.vividsolutions.jts.geom.Coordinate) TemporalInstantRfc3339(org.apache.rya.indexing.TemporalInstantRfc3339) Event(org.apache.rya.indexing.geotemporal.model.Event) TemporalInstant(org.apache.rya.indexing.TemporalInstant) EventStorage(org.apache.rya.indexing.geotemporal.storage.EventStorage) Test(org.junit.Test)

Aggregations

TemporalInstant (org.apache.rya.indexing.TemporalInstant)22 TemporalInstantRfc3339 (org.apache.rya.indexing.TemporalInstantRfc3339)21 RyaURI (org.apache.rya.api.domain.RyaURI)15 Geometry (com.vividsolutions.jts.geom.Geometry)14 Test (org.junit.Test)14 Coordinate (com.vividsolutions.jts.geom.Coordinate)12 EventStorage (org.apache.rya.indexing.geotemporal.storage.EventStorage)11 Event (org.apache.rya.indexing.geotemporal.model.Event)9 TemporalInterval (org.apache.rya.indexing.TemporalInterval)7 DateTime (org.joda.time.DateTime)5 BindingSet (org.openrdf.query.BindingSet)5 QueryEvaluationException (org.openrdf.query.QueryEvaluationException)5 MapBindingSet (org.openrdf.query.impl.MapBindingSet)5 ArrayList (java.util.ArrayList)4 MongoEventStorage (org.apache.rya.indexing.geotemporal.mongo.MongoEventStorage)4 IOException (java.io.IOException)3 Matcher (java.util.regex.Matcher)3 RyaStatement (org.apache.rya.api.domain.RyaStatement)3 GeometryFactory (com.vividsolutions.jts.geom.GeometryFactory)2 ParseException (com.vividsolutions.jts.io.ParseException)2