blob: 03c2dbb92834121e5669869b80ab762f70ed5d5b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.rya.indexing.smarturi;
import java.util.Map;
import org.apache.rya.api.domain.RyaURI;
import org.apache.rya.indexing.entity.model.Entity;
import org.apache.rya.indexing.entity.model.Type;
import org.apache.rya.indexing.entity.model.TypedEntity;
import org.apache.rya.indexing.entity.storage.mongo.ConvertingCursor;
import org.calrissian.mango.collect.CloseableIterator;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Value;
/**
* Interface for interacting with a Smart URI's datastore.
*/
public interface SmartUriStorage {
/**
* Stores the map into the datastore.
* @param subject the {@link RyaURI} subject of the Entity. Identifies the
* thing that is being represented as an Entity.
* @param map the {@link Map} of {@link IRI}s to {@link Value}s.
* @throws SmartUriException
*/
public void storeEntity(final RyaURI subject, final Map<IRI, Value> map) throws SmartUriException;
/**
* Stores the entity into the datastore.
* @param entity the {@link Entity}.
* @throws SmartUriException
*/
public void storeEntity(final Entity entity) throws SmartUriException;
/**
* Updates the entity.
* @param oldEntity the old {@link Entity} to update
* @param updatedEntity the new {@link Entity} to replace the old one with.
* @throws SmartUriException
*/
public void updateEntity(final Entity oldEntity, final Entity updatedEntity) throws SmartUriException;
/**
* Queries for the entity based on the subject
* @param subject the {@link RyaURI} subject of the Entity. Identifies the
* thing that is being represented as an Entity.
* @return the {@link Entity} matching the subject.
* @throws SmartUriException
*/
public Entity queryEntity(final RyaURI subject) throws SmartUriException;
/**
* Queries the datastore for the map.
* @param type the type associated with the entity values.
* @param map the {@link Map} of {@link IRI}s to {@link Value}s.
* @return a {@link CloseableIterator} over the {@link TypedEntity}s that
* match the search parameters.
* @throws SmartUriException
*/
public ConvertingCursor<TypedEntity> queryEntity(final Type type, final Map<IRI, Value> map) throws SmartUriException;
}