package automenta.spacenet.plugin.rdf;
/** basic interface to OpenRDF sesame graphs */
abstract public class RDFModel {
// private static final Logger logger = Logger.getLogger(RDFNet.class);
// protected SailRepository rep;
//
// public RDFModel(SailRepository rep) {
// super();
//
// this.rep = rep;
//
// init();
// }
//
// public RDFModel() throws RepositoryException {
// super();
//
// rep = new SailRepository(
// new ForwardChainingRDFSInferencer(
// new MemoryStore()));
//
// rep.initialize();
//
// init();
// }
//
// @Override public void dispose() {
// try {
// rep.shutDown();
// } catch (RepositoryException e) {
// logger.error(e);
// }
// }
//
// protected void init() {
//
// }
//
// public void addFile(URL u, String baseURI) throws Exception {
//
// try {
// RepositoryConnection con = newRepositoryConnection();
// try {
// con.add(u, baseURI, RDFFormat.RDFXML);
// }
// finally {
// con.close();
// }
// }
// catch (Exception e) {
// throw e;
// }
//
// }
//
// private RepositoryConnection newRepositoryConnection() throws RepositoryException {
// return getRepository().getConnection();
// }
//
// private SailRepository getRepository() {
// return rep;
// }
//
// public void foreachResource(final ResourceVisitor resourceVisitor) throws RepositoryException {
// final Map<Value, Statement> visitedResources = new HashMap();
// foreachStatement(new StatementVisitor() {
// @Override public void onStatement(RDFModel model, Statement s) {
// updateResource(s.getSubject(), s);
// updateResource(s.getPredicate(), s);
// if (s.getObject() instanceof Resource) {
// updateResource((Resource)s.getObject(), s);
// }
// else if (s.getObject() instanceof Value) {
// updateValue((Value)s.getObject(), s);
// }
// if (s.getContext()!=null)
// updateResource(s.getContext(), s);
// }
//
// private void updateValue(Value v, Statement s) {
// if (visitedResources.get(v) == null) {
// resourceVisitor.onValue(RDFModel.this, s, v);
// visitedResources.put(v, s);
// }
//
// }
//
// private void updateResource(Resource r, Statement s) {
// if (visitedResources.get(r) == null) {
// resourceVisitor.onResource(RDFModel.this, r);
// visitedResources.put(r, s);
// }
// }
// });
// visitedResources.clear();
// }
//
//// public interface LiteralVisitor {
//// public void onLiteral(RDFModel model, Statement s, Literal value);
//// }
////
//// public void foreachLiteral(final LiteralVisitor literalVisitor) throws RepositoryException {
//// foreachResource(new ResourceVisitor() {
//// @Override public void onResource(RDFModel model, Resource r) {
////
//// }
//// });
//// }
//
// public void foreachStatement(StatementVisitor<N, L> v) throws RepositoryException {
// foreachStatement(v, null, null, null);
// }
//
// public void foreachStatement(StatementVisitor<N, L> v, Resource subject, URI predicate, Value object /* contexts */) throws RepositoryException {
//
// RepositoryConnection con = newRepositoryConnection();
// try {
//
// RepositoryResult<Statement> result = con.getStatements(subject, predicate, object, true);
//
// while (result.hasNext()) {
// v.onStatement(this, result.next());
// }
// }
// finally {
// con.close();
// }
//
// }
//
// public List<Statement> getStatements(Object object, Object object2, Object object3) throws RepositoryException {
// final LinkedList<Statement> statements = new LinkedList<Statement>();
//
// foreachStatement(new StatementVisitor<N, L>() {
// @Override public void onStatement(RDFModel model, Statement s) {
// statements.add(s);
// }
// });
//
// return statements;
//
// }
//
// private void closeConnection(RepositoryConnection con) throws RepositoryException {
// con.close();
// }
//
// public void clear() {
//
// try {
// RepositoryConnection con = newRepositoryConnection();
//
// con.remove((Resource)null, null, null);
//
// con.close();
// }
// catch (Exception e) {
// logger.error(e);
// }
//
// }
//
// public String toN3() {
// StringWriter sw = new StringWriter();
//
// try {
// RepositoryConnection con = newRepositoryConnection();
//
// RDFHandler rdfxmlWriter = new N3Writer(sw);
//
// con.export(rdfxmlWriter);
//
// con.close();
// }
// catch (Exception e) {
// return e.toString();
// }
//
// return sw.toString();
// }
//
// static public <X> List<? extends X> toList(Iterator<? extends X> iterateNodes) {
// return IteratorUtils.toList(iterateNodes);
// }
}