import org.tupeloproject.kernel.BeanSession; import org.tupeloproject.kernel.ReadOnlyContextFacade; import org.tupeloproject.kernel.UnionContext; import org.tupeloproject.kernel.beans.BeanClassRdfMapping; import org.tupeloproject.kernel.impl.MemoryContext; import org.tupeloproject.rdf.Resource; import org.tupeloproject.rdf.Triple; import org.tupeloproject.rdf.terms.Foaf; public class MultiMap { static public Resource write(MemoryContext mc) throws Exception { BeanClassRdfMapping mapA = new BeanClassRdfMapping(); mapA.setJavaClass(BeanA.class); mapA.setRdfType(Foaf.PERSON); mapA.addProperty(Foaf.NAME, "funcA", String.class); MemoryContext mcA = new MemoryContext(); mcA.addTriples(mapA.toTriples()); UnionContext uc = new UnionContext(); uc.addChild(mc); uc.addChild(new ReadOnlyContextFacade(mcA)); BeanSession bs = new BeanSession(uc); BeanA ba = new BeanA(); ba.setFuncA("Hello"); Resource bean = bs.register(ba); bs.save(); bs = new BeanSession(uc); System.out.println(bs.fetchBean(bean).toString()); return bean; } static public void read(MemoryContext mc, Resource bean) throws Exception { BeanClassRdfMapping mapB = new BeanClassRdfMapping(); mapB.setJavaClass(BeanB.class); mapB.setRdfType(Foaf.PERSON); mapB.addProperty(Foaf.NAME, "funcB", String.class); MemoryContext mcB = new MemoryContext(); mcB.addTriples(mapB.toTriples()); UnionContext uc = new UnionContext(); uc.addChild(mc); uc.addChild(new ReadOnlyContextFacade(mcB)); BeanSession bs = new BeanSession(uc); System.out.println(bs.fetchBean(bean).toString()); } static public void main(String[] args) throws Exception { MemoryContext mc = new MemoryContext(); Resource bean = write(mc); for (Triple t : mc.getTriples()) { System.out.println(t); } read(mc, bean); } static public class BeanA { private String x; public void setFuncA(String x) { this.x = x; } public String getFuncA() { return x; } @Override public String toString() { return getClass().toString() + " " + x; } } static public class BeanB { private String x; public void setFuncB(String x) { this.x = x; } public String getFuncB() { return x; } @Override public String toString() { return getClass().toString() + " " + x; } } }