Last active
August 29, 2015 14:23
-
-
Save autermann/0da1868d4e59f05148ee to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/"); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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