/** * Creates an object with assumed rdf:types. */ public RDFObject createObject(Resource resource, URI... types) { assert types != null && types.length > 0; Set<URI> list = new HashSet<URI>(Arrays.asList(types)); return createObject(resource, list); }
private <C extends Collection<URI>> C addConcept(Resource resource, Class<?> role, C set) throws RepositoryException { URI type = of.getNameOf(role); if (type == null) { throw new ObjectPersistException( "Concept is anonymous or is not registered: " + role.getSimpleName()); } types.addTypeStatement(resource, type); set.add(type); return set; }
protected ObjectFactory createObjectFactory(RoleMapper mapper, PropertyMapper pm, LiteralManager literalManager, ClassResolver resolver, ClassLoader cl) { return new ObjectFactory(mapper, pm, literalManager, resolver, cl); }
/** * Creates an object with an assumed rdf:type. */ public <T> T createObject(Resource resource, Class<T> type) { URI rdftype = getNameOf(type); if (rdftype == null) return type.cast(createObject(resource)); Set<URI> types = Collections.singleton(rdftype); return type.cast(createObject(resource, types)); }
/** * Creates an object with assumed rdf:types. */ public RDFObject createObject(Resource resource, Set<URI> types) { assert resource != null; // generate a new id in the case of a initial resource if(IDGenerator.BLANK_RESOURCE.equals(resource)) { if(idGenerator == null) { throw new IllegalStateException("No ID generator available"); } else { resource = idGenerator.generateID(types); } } return createBean(resource, getObjectClass(resource, types)); }
private RDFObject createBean(Resource resource, Class<?> proxy) { try { ObjectQueryFactory factory = createObjectQueryFactory(proxy); Object obj = newInstance(proxy); ManagedRDFObject bean = (ManagedRDFObject) obj; bean.initRDFObject(resource, factory, connection); return (RDFObject) obj; } catch (InstantiationException e) { throw new ObjectCompositionException(e); } catch (IllegalAccessException e) { throw new ObjectCompositionException(e); } }
URI uri = getNameOf(concept); boolean typed = uri != null && bindings == 0; if (typed) { String name = pd.getName(); String pred = properties.findPredicate(pd); optional(select, name, where.append("\n"), null, pred); if (pd.getPropertyType().equals(Object.class)) { if (namedTypePresent) { String name_class = name + "_class"; StringBuilder w = where.append("\n\t"); optional(select, name_class, w, name, type).append("}\n"); } else if (isNamedConcept(pd.getPropertyType())) { Map<String, String> map = findEagerProperties(pd.getPropertyType()); for (String n : map.keySet()) { StringBuilder w = where.append("\n\t"); optional(select, name + "_" + n, w, name, map.get(n)).append("}"); String name = f.getName(); String pred = properties.findPredicate(f); optional(select, name, where.append("\n"), null, pred); if (f.getType().equals(Object.class)) { if (namedTypePresent) { String name_class = name + "_class"; StringBuilder w = where.append("\n\t"); optional(select, name_class, w, name, type).append("}\n"); } else if (isNamedConcept(f.getType())) {
private Object getDefaultValue(String value, Type type, ObjectConnection con) { Class<?> ctype = asClass(type); if (Set.class.equals(ctype)) { Object v = getDefaultValue(value, getComponentType(ctype, type), con); if (v == null) return null; return Collections.singleton(v); } ValueFactory vf = con.getValueFactory(); ObjectFactory of = con.getObjectFactory(); if (of.isDatatype(ctype)) { URIImpl datatype = new URIImpl("java:" + ctype.getName()); return of.createValue(of.createObject(new LiteralImpl(value, datatype))); } return vf.createURI(value); }
/** * Converts an object into a literal or resource. */ public Value createValue(Object instance) { if (instance instanceof RDFObjectBehaviour) { RDFObjectBehaviour support = (RDFObjectBehaviour) instance; Object entity = support.getBehaviourDelegate(); if (entity != instance) return createValue(entity); } if (instance instanceof RDFObject) return ((RDFObject) instance).getResource(); if (instance instanceof Class<?>) { URI type = getNameOf((Class<?>) instance); if (type != null) return type; } return lm.createLiteral(instance); }
return ((RDFObject) instance).getResource(); } else { if (of.isDatatype(instance.getClass())) return of.createLiteral(instance); return of.createLiteral(instance);
public SparqlBuilder with(String name, Object value) { if (value == null) { bindings.remove(name); } else if (value instanceof Value) { bindings.put(name, (Value) value); } else { bindings.put(name, of.createValue(value)); } return this; }
/** * Creates an object with no rdf:type. */ public RDFObject createObject(Resource resource) { assert resource != null; if (resource instanceof URI) return createBean(resource, resolver.resolveEntity((URI) resource)); return createBean(resource, resolver.resolveBlankEntity()); }
/** method and result synchronised on this */ private <T> ObjectQuery getObjectQuery(Class<T> concept, int length) throws MalformedQueryException, RepositoryException { if (queries.containsKey(concept) && queries.get(concept).containsKey(length)) { return queries.get(concept).get(length); } else { String sparql = of.createObjectQuery(concept, length); ObjectQuery query = prepareObjectQuery(SPARQL, sparql); Map<Integer, ObjectQuery> map = queries.get(concept); if (map == null) { queries.put(concept, map = new HashMap<Integer, ObjectQuery>()); } map.put(length, query); return query; } }
/** * Evaluates the query returning a result of a single Object, assumed to * implement the given concept. */ public <T> Result<T> evaluate(Class<T> concept) throws QueryEvaluationException { TupleQueryResult tuple = query.evaluate(); List<String> bindings = tuple.getBindingNames(); if (concept.isArray() && !manager.getObjectFactory().isDatatype(concept)) { ObjectArrayCursor cursor = new ObjectArrayCursor(manager, tuple, bindings, concept.getComponentType()); Result result = new ResultImpl(cursor, concept); return (Result<T>) result; } else { String binding = bindings.get(0); ObjectCursor cursor = new ObjectCursor(manager, tuple, binding); Result result = new ResultImpl(cursor, concept); return (Result<T>) result; } }
URI uri = getNameOf(concept); boolean isTopConcept = concept.isAssignableFrom(topConcept); String name = pd.getName(); String pred = resolver.getPropertyMapper().findPredicate(pd); optional(select, name, where.append("\n"), null, pred); if (pd.getPropertyType().equals(Object.class)) { if (namedTypePresent) { String name_class = name + "_class"; StringBuilder w = where.append("\n\t"); optional(select, name_class, w, name, type).append("}\n"); } else if (isNamedConcept(pd.getPropertyType())) { Map<String, String> map = findEagerProperties(pd.getPropertyType()); for (String n : map.keySet()) { StringBuilder w = where.append("\n\t"); optional(select, name + "_" + n, w, name, map.get(n)).append("}"); String name = f.getName(); String pred = resolver.getPropertyMapper().findPredicate(f); optional(select, name, where.append("\n"), null, pred); if (f.getType().equals(Object.class)) { if (namedTypePresent) { String name_class = name + "_class"; StringBuilder w = where.append("\n\t"); optional(select, name_class, w, name, type).append("}\n"); } else if (isNamedConcept(f.getType())) { Map<String, String> map = findEagerProperties(f.getType());
private Object getDefaultValue(String value, Type type, ObjectConnection con) { Class<?> ctype = asClass(type); if (Set.class.equals(ctype)) { Object v = getDefaultValue(value, getComponentType(ctype, type), con); if (v == null) return null; return Collections.singleton(v); } ValueFactory vf = con.getValueFactory(); ObjectFactory of = con.getObjectFactory(); if (of.isDatatype(ctype)) { URIImpl datatype = new URIImpl("java:" + ctype.getName()); return of.createValue(of.createObject(new LiteralImpl(value, datatype))); } return vf.createURI(value); }
/** * Creates an object with an assumed rdf:type. */ public <T> T createObject(Resource resource, Class<T> type) { RDFObject obj; URI rdftype = getNameOf(type); if (rdftype == null) { obj = createObject(resource); } else { Set<URI> types = Collections.singleton(rdftype); obj = createObject(resource, types); } try { return type.cast(obj); } catch (ClassCastException e) { String msg = "Cannot cast resource " + obj + " to a " + type.getName(); ClassCastException cce = new ClassCastException(msg); cce.initCause(e); throw cce; } }
/** * Converts an object into a literal or resource. */ public Value createValue(Object instance) { if (instance instanceof RDFObjectBehaviour) { RDFObjectBehaviour support = (RDFObjectBehaviour) instance; Object entity = support.getBehaviourDelegate(); if (entity != instance) return createValue(entity); } if (instance instanceof RDFObject) return ((RDFObject) instance).getResource(); if (instance instanceof Class<?>) { URI type = getNameOf((Class<?>) instance); if (type != null) return type; } return lm.createLiteral(instance); }
RDFObject createBean(Resource resource, Class<?> proxy) { if (connection == null) throw new IllegalStateException("No ObjectConnection"); try { ObjectQueryFactory factory = createObjectQueryFactory(proxy); Object obj = newInstance(proxy); ManagedRDFObject bean = (ManagedRDFObject) obj; bean.initRDFObject(resource, factory, connection); return (RDFObject) obj; } catch (InstantiationException e) { throw new ObjectCompositionException(e); } catch (IllegalAccessException e) { throw new ObjectCompositionException(e); } }
return ((RDFObject) instance).getResource(); } else { if (of.isDatatype(instance.getClass())) return of.createLiteral(instance); return of.createLiteral(instance);