From 56b0115054cce04398dd184722d813b093a5a8de Mon Sep 17 00:00:00 2001 From: cominch Date: Thu, 14 Jun 2012 15:44:27 +0200 Subject: [PATCH] Triplestore: modify routines to access per user store --- htroot/interaction/Triple.java | 15 ++- source/net/yacy/cora/lod/JenaTripleStore.java | 111 +++++++++++++++--- 2 files changed, 108 insertions(+), 18 deletions(-) diff --git a/htroot/interaction/Triple.java b/htroot/interaction/Triple.java index 407b76c34..62daf02ac 100644 --- a/htroot/interaction/Triple.java +++ b/htroot/interaction/Triple.java @@ -29,6 +29,7 @@ package interaction; //javac -classpath .:../classes ViewLog_p.java //if the shell's current path is HTROOT +import net.yacy.cora.lod.JenaTripleStore; import net.yacy.cora.protocol.HeaderFramework; import net.yacy.cora.protocol.RequestHeader; import net.yacy.interaction.Interaction; @@ -126,11 +127,21 @@ public class Triple { if (post.containsKey("load")) { - o = Interaction.TripleGet(s, p, global ? "" : username); + if (global) { + o = JenaTripleStore.getObject(s, p).toString(); + } else { + o = JenaTripleStore.getObject(s, p, username).toString(); + } + } else { + + if (global) { + JenaTripleStore.addTriple(s, p, o); + } else { + JenaTripleStore.addTriple(s, p, o, username); + } - Interaction.Triple(url, s, p, o, global ? "" : username); } prop.put("result", o); diff --git a/source/net/yacy/cora/lod/JenaTripleStore.java b/source/net/yacy/cora/lod/JenaTripleStore.java index 82c2f04cd..5a040b819 100644 --- a/source/net/yacy/cora/lod/JenaTripleStore.java +++ b/source/net/yacy/cora/lod/JenaTripleStore.java @@ -33,10 +33,10 @@ public class JenaTripleStore { public static Model model = ModelFactory.createDefaultModel(); static { - init(); + init(model); } - private final static void init() { + private final static void init(Model model) { model.setNsPrefix(YaCyMetadata.PREFIX, YaCyMetadata.NAMESPACE); model.setNsPrefix(Tagging.DEFAULT_PREFIX, Tagging.DEFAULT_NAMESPACE); model.setNsPrefix(HttpHeader.PREFIX, HttpHeader.NAMESPACE); @@ -123,24 +123,53 @@ public class JenaTripleStore { */ public static void clear() { model = ModelFactory.createDefaultModel(); - init(); + init(model); } + + public static Resource getResource(String uri, String username) { + + if (privatestorage != null && privatestorage.containsKey(username)) { + + return getResource (uri, privatestorage.get(username)); + } + + return null; + } + /** * Return a Resource instance with the given URI in this model. * @param uri * @return */ public static Resource getResource(String uri) { + return getResource(uri, model); + } + + public static Resource getResource(String uri, Model model) { return model.getResource(uri); } + public static Resource getProperty(String uri, String username) { + + if (privatestorage != null && privatestorage.containsKey(username)) { + + return getProperty (uri, privatestorage.get(username)); + } + + return null; + } + /** * Return a Property instance in this model. * @param uri * @return */ public static Property getProperty(String uri) { + return getProperty(uri, model); + } + + public static Property getProperty(String uri, Model model) { return model.getProperty(uri); } @@ -149,23 +178,79 @@ public class JenaTripleStore { Property pr = getProperty(predicate); JenaTripleStore.model.removeAll(r, pr, (Resource) null); } - + + public static void addTriple(String subject, String predicate, String object, String username) { + if (privatestorage != null && privatestorage.containsKey(username)) { + + addTriple (subject, predicate, object, privatestorage.get(username)); + } + + } + public static void addTriple(String subject, String predicate, String object) { - Resource r = getResource(subject); - Property pr = getProperty(predicate); + addTriple (subject, predicate, object, model); + } + + public static void addTriple(String subject, String predicate, String object, Model model) { + Resource r = getResource(subject, model); + Property pr = getProperty(predicate, model); r.addProperty(pr, object); Log.logInfo("TRIPLESTORE", "ADD " + subject + " - " + predicate + " - " + object); } + + public static String getObject (final String subject, final String predicate) { + + Iterator iter = getObjects (subject, predicate); + + while (iter.hasNext()) { + + return (iter.next().toString()); + + } + + return null; + + } + + public static String getObject (final String subject, final String predicate, final String username) { + + Iterator iter = getObjects (subject, predicate, username); + + while (iter.hasNext()) { + + return (iter.next().toString()); + + } + + return null; + + } + + public static Iterator getObjects(final String subject, final String predicate, final String username) { + Log.logInfo("TRIPLESTORE", "GET " + subject + " - " + predicate + " ... "); + final Resource r = JenaTripleStore.getResource(subject, username); + + if (privatestorage != null && privatestorage.containsKey(username)) { + + return getObjects(r, predicate, privatestorage.get(username)); + } + + return null; + } public static Iterator getObjects(final String subject, final String predicate) { Log.logInfo("TRIPLESTORE", "GET " + subject + " - " + predicate + " ... "); final Resource r = JenaTripleStore.getResource(subject); return getObjects(r, predicate); } - + public static Iterator getObjects(final Resource r, final String predicate) { - final Property pr = JenaTripleStore.getProperty(predicate); - final StmtIterator iter = JenaTripleStore.model.listStatements(r, pr, (Resource) null); + return getObjects (r, predicate, model); + } + + public static Iterator getObjects(final Resource r, final String predicate, final Model model) { + final Property pr = JenaTripleStore.getProperty(predicate, model); + final StmtIterator iter = model.listStatements(r, pr, (Resource) null); return new Iterator() { @Override public boolean hasNext() { @@ -208,13 +293,7 @@ public class JenaTripleStore { Model tmp = ModelFactory.createDefaultModel(); - tmp.setNsPrefix(YaCyMetadata.PREFIX, YaCyMetadata.NAMESPACE); - tmp.setNsPrefix(Tagging.DEFAULT_PREFIX, Tagging.DEFAULT_NAMESPACE); - tmp.setNsPrefix(HttpHeader.PREFIX, HttpHeader.NAMESPACE); - tmp.setNsPrefix(Geo.PREFIX, Geo.NAMESPACE); - tmp.setNsPrefix("pnd", "http://dbpedia.org/ontology/individualisedPnd"); - tmp.setNsPrefix(DCTerms.PREFIX, DCTerms.NAMESPACE); - + init (tmp); if (currentuserfile.exists()) {