package org.linkeddatafragments.client; /** * Created by ldevocht on 4/28/14. */ import org.apache.jena.assembler.Assembler; import org.apache.jena.assembler.Mode; import org.apache.jena.assembler.assemblers.AssemblerBase; import org.apache.jena.assembler.exceptions.AssemblerException; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.ResourceFactory; import org.apache.jena.sparql.util.graph.GraphUtils; import org.linkeddatafragments.model.LinkedDataFragmentGraph; public class LinkedDataFragmentsGraphAssembler extends AssemblerBase implements Assembler { private static boolean initialized = false; private static String JENA_NS = "http://linkeddatafragments.org/fuseki#"; public static void init() { if(initialized) { return; } initialized = true; Assembler.general.implementWith(ResourceFactory.createResource(JENA_NS + "LDFGraph"), new LinkedDataFragmentsGraphAssembler()); } @Override public Model open(Assembler a, Resource root, Mode mode) { String url = GraphUtils.getStringValue(root, ResourceFactory.createProperty(JENA_NS + "url")) ; try { // FIXME: Read more properties. Cache config? LinkedDataFragmentGraph graph = new LinkedDataFragmentGraph(url); return ModelFactory.createModelForGraph(graph); } catch (Exception e) { e.printStackTrace(); throw new AssemblerException(root, "Error reading LDF url: "+url+" / "+e.toString()); } } }