package org.aksw.jena_sparql_api.mapper.context;
import java.util.Map;
/**
* Interface for associating metadata with entities.
*
* We could replace with with Jena EnhGraph
*
* @author raven
*
* @param <T>
*/
public interface EntityContext<T> {
Map<String, Object> get(Object entity);
Map<String, Object> getOrCreate(T entity);
Map<String, Object> register(T entity);
/**
*
* @param entity
* @return
*/
Map<String, Object> getState(Object entity);
boolean isManaged(Object entity);
/**
* getsOrCreates an entity and sets an attribute
* @param entity
* @param attribute
* @param value
*/
void setAttribute(T entity, String attribute, Object value);
<X> X getAttribute(Object entity, String attribute, X defaultValue);
}