Skip to content

Instantly share code, notes, and snippets.

@autermann
Last active August 29, 2015 14:23
Show Gist options
  • Save autermann/0da1868d4e59f05148ee to your computer and use it in GitHub Desktop.
Save autermann/0da1868d4e59f05148ee to your computer and use it in GitHub Desktop.
package org.envirocar.server;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.util.Set;
import javax.ws.rs.core.UriBuilder;
import org.bson.types.ObjectId;
import org.envirocar.server.core.entities.EntityFactory;
import org.envirocar.server.core.entities.Track;
import org.envirocar.server.core.guice.CoreModule;
import org.envirocar.server.core.guice.EventModule;
import org.envirocar.server.core.guice.UpdaterModule;
import org.envirocar.server.core.guice.ValidatorModule;
import org.envirocar.server.mongo.guice.MongoConnectionModule;
import org.envirocar.server.mongo.guice.MongoConverterModule;
import org.envirocar.server.mongo.guice.MongoDaoModule;
import org.envirocar.server.mongo.guice.MongoMappedClassesModule;
import org.envirocar.server.mongo.guice.MongoModule;
import org.envirocar.server.rest.encoding.rdf.RDFLinker;
import org.envirocar.server.rest.guice.DefaultRDFLinkerModule;
import org.envirocar.server.rest.resources.RootResource;
import org.envirocar.server.rest.resources.TracksResource;
import org.envirocar.server.rest.rights.AccessRights;
import org.envirocar.server.rest.rights.NonRestrictiveRights;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Provides;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
public class RDFLinkerShowcase {
private final Set<RDFLinker<Track>> linkers;
private final AccessRights accessRights;
private final Provider<UriBuilder> uriBuilder;
private final EntityFactory entityFactory;
@Inject
public RDFLinkerShowcase(Set<RDFLinker<Track>> linkers,
AccessRights accessRights,
Provider<UriBuilder> uriBuilder,
EntityFactory entityFactory) {
this.linkers = linkers;
this.accessRights = accessRights;
this.uriBuilder = uriBuilder;
this.entityFactory = entityFactory;
}
public Track createTrack() {
Track track = this.entityFactory.createTrack();
track.setIdentifier(new ObjectId().toString());
return track;
}
public Model encodeTrack(Track track) {
Model m = ModelFactory.createDefaultModel();
URI trackURI = uriBuilder.get()
.path(RootResource.class)
.path(RootResource.TRACKS)
.path(TracksResource.TRACK)
.build(track.getIdentifier());
Resource r = m.createResource(trackURI.toASCIIString());
for (RDFLinker<Track> linker : this.linkers) {
linker.link(m, track, this.accessRights, r, this.uriBuilder);
}
return m;
}
public void writeTo(Model m, OutputStream out) throws IOException {
m.setNsPrefix("xsd", "http://www.w3.org/2001/XMLSchema#");
m.setNsPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
m.setNsPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
String base = this.uriBuilder.get().build().toASCIIString();
m.write(out, "TTL", base);
out.flush();
}
public static void main(String[] args) throws IOException {
RDFLinkerShowcase showcase = Guice.createInjector(new RDFModule())
.getInstance(RDFLinkerShowcase.class);
Track track = showcase.createTrack();
Model model = showcase.encodeTrack(track);
showcase.writeTo(model, System.out);
}
private static class RDFModule extends AbstractModule {
@Override
protected void configure() {
install(new DefaultRDFLinkerModule());
install(new CoreModule());
install(new MongoModule());
install(new UpdaterModule());
install(new ValidatorModule());
install(new EventModule());
install(new MongoDaoModule());
install(new MongoConnectionModule());
install(new MongoConverterModule());
install(new MongoMappedClassesModule());
}
@Provides
public AccessRights accessRights() {
return new NonRestrictiveRights();
}
@Provides
public UriBuilder uriBuilder() {
return UriBuilder.fromPath("http://envirocar.org/api/stable/");
}
}
}
@base <http://envirocar.org/api/stable/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/elements/1.1/> .
@prefix dul: <http://www.loa-cnr.it/ontologies/DUL.owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<tracks/5583d59fc830abc386018be0>
a dul:Collection ;
dcterms:rights "http://opendatacommons.org/licenses/odbl/" .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment