Skip to content

Commit 4592605

Browse files
committed
Merging
2 parents 605b15f + 586bfd9 commit 4592605

File tree

3 files changed

+99
-13
lines changed

3 files changed

+99
-13
lines changed

config-example.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33

44
"datasources": {
55
"dbpedia": {
6+
"title": "DBPedia",
7+
"type": "HdtDatasource",
8+
"description": "DBPedia with an HDT back-end",
9+
"settings": { "file": "data/dbpedia.hdt" }
10+
},
11+
"swdf": {
612
"title": "Semantic Web Dog Food",
713
"type": "HdtDatasource",
814
"description": "Semantic Web Dog Food with an HDT back-end",

pom.xml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,66 @@
99
<properties>
1010
<jettyVersion>9.3.6.v20151106</jettyVersion>
1111
</properties>
12+
<dependencies>
13+
<dependency>
14+
<groupId>org.rdfhdt</groupId>
15+
<artifactId>hdt-jena</artifactId>
16+
<version>1.1</version>
17+
</dependency>
18+
<dependency>
19+
<groupId>org.apache.jena</groupId>
20+
<artifactId>jena-core</artifactId>
21+
<version>2.13.0</version>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.apache.jena</groupId>
25+
<artifactId>jena-arq</artifactId>
26+
<version>2.13.0</version>
27+
</dependency>
28+
<dependency>
29+
<groupId>org.apache.httpcomponents</groupId>
30+
<artifactId>httpclient</artifactId>
31+
<version>4.3.5</version>
32+
</dependency>
33+
<dependency>
34+
<groupId>com.google.code.gson</groupId>
35+
<artifactId>gson</artifactId>
36+
<version>2.3</version>
37+
</dependency>
38+
<dependency>
39+
<groupId>javax.servlet</groupId>
40+
<artifactId>javax.servlet-api</artifactId>
41+
<version>3.1.0</version>
42+
<scope>compile</scope>
43+
</dependency>
44+
<dependency>
45+
<groupId>org.eclipse.jetty</groupId>
46+
<artifactId>jetty-server</artifactId>
47+
<version>${jettyVersion}</version>
48+
</dependency>
49+
<dependency>
50+
<groupId>org.eclipse.jetty</groupId>
51+
<artifactId>jetty-servlet</artifactId>
52+
<version>${jettyVersion}</version>
53+
</dependency>
54+
<dependency>
55+
<groupId>commons-cli</groupId>
56+
<artifactId>commons-cli</artifactId>
57+
<version>1.2</version>
58+
</dependency>
59+
<dependency>
60+
<groupId>org.apache.commons</groupId>
61+
<artifactId>commons-lang3</artifactId>
62+
<version>3.3.2</version>
63+
<type>jar</type>
64+
</dependency>
65+
<dependency>
66+
<groupId>commons-lang</groupId>
67+
<artifactId>commons-lang</artifactId>
68+
<version>2.6</version>
69+
<type>jar</type>
70+
</dependency>
71+
</dependencies>
1272
<build>
1373
<sourceDirectory>src</sourceDirectory>
1474
<plugins>
@@ -82,4 +142,4 @@
82142
<version>9.3.6.v20151106</version>
83143
</dependency>
84144
</dependencies>
85-
</project>
145+
</project>

src/org/linkeddatafragments/servlet/TriplePatternFragmentServlet.java

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
package org.linkeddatafragments.servlet;
22

3-
import com.google.gson.JsonObject;
4-
53
import java.io.File;
64
import java.io.FileReader;
7-
import java.io.IOException;
8-
import java.net.URISyntaxException;
5+
import java.util.ArrayList;
6+
import java.util.Collection;
97
import java.util.HashMap;
108
import java.util.Map.Entry;
119
import java.util.regex.Matcher;
1210
import java.util.regex.Pattern;
13-
1411
import javax.servlet.ServletConfig;
1512
import javax.servlet.ServletException;
1613
import javax.servlet.http.HttpServlet;
1714
import javax.servlet.http.HttpServletRequest;
1815
import javax.servlet.http.HttpServletResponse;
1916

17+
import org.apache.commons.codec.CharEncoding;
18+
2019
import org.apache.http.HttpHeaders;
2120
import org.apache.http.client.utils.URIBuilder;
2221

23-
import org.linkeddatafragments.config.ConfigReader;
24-
import org.linkeddatafragments.datasource.TriplePatternFragment;
25-
import org.linkeddatafragments.datasource.IDataSource;
26-
import org.linkeddatafragments.datasource.DataSourceFactory;
27-
import org.linkeddatafragments.exceptions.DataSourceException;
28-
import org.linkeddatafragments.util.CommonResources;
22+
import org.apache.jena.riot.Lang;
23+
import org.apache.jena.riot.RDFDataMgr;
24+
import org.apache.jena.riot.RDFLanguages;
25+
26+
import com.google.gson.JsonObject;
2927

3028
import com.hp.hpl.jena.datatypes.TypeMapper;
3129
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
@@ -37,7 +35,13 @@
3735
import com.hp.hpl.jena.rdf.model.ResourceFactory;
3836
import com.hp.hpl.jena.shared.InvalidPropertyURIException;
3937

40-
import org.apache.commons.codec.CharEncoding;
38+
import org.linkeddatafragments.config.ConfigReader;
39+
import org.linkeddatafragments.datasource.DataSourceFactory;
40+
import org.linkeddatafragments.datasource.IDataSource;
41+
import org.linkeddatafragments.exceptions.DataSourceException;
42+
import org.linkeddatafragments.util.CommonResources;
43+
44+
import org.linkeddatafragments.util.MIMEParse;
4145

4246
/**
4347
* Servlet that responds with a Basic Linked Data Fragment.
@@ -63,6 +67,7 @@ public class TriplePatternFragmentServlet extends HttpServlet {
6367

6468
private ConfigReader config;
6569
private final HashMap<String, IDataSource> dataSources = new HashMap<>();
70+
private final Collection<String> mimeTypes = new ArrayList<>();
6671

6772

6873
private File getConfigFile(ServletConfig config) throws IOException {
@@ -94,6 +99,11 @@ public void init(ServletConfig servletConfig) throws ServletException {
9499
for (Entry<String, JsonObject> dataSource : config.getDataSources().entrySet()) {
95100
dataSources.put(dataSource.getKey(), DataSourceFactory.create(dataSource.getValue()));
96101
}
102+
// register content types
103+
mimeTypes.add(Lang.TTL.getHeaderString());
104+
mimeTypes.add(Lang.JSONLD.getHeaderString());
105+
mimeTypes.add(Lang.NTRIPLES.getHeaderString());
106+
mimeTypes.add(Lang.RDFXML.getHeaderString() );
97107
} catch (IOException | DataSourceException e) {
98108
throw new ServletException(e);
99109
}
@@ -243,6 +253,16 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
243253
// fill the output model
244254
Model output = fragment.getTriples();
245255
output.setNsPrefixes(config.getPrefixes());
256+
257+
// do conneg
258+
String bestMatch = MIMEParse.bestMatch(mimeTypes, request.getHeader("Accept"));
259+
Lang contentType = RDFLanguages.contentTypeToLang(bestMatch);
260+
261+
// serialize the output
262+
response.setHeader("Server", "Linked Data Fragments Server");
263+
response.setContentType(bestMatch);
264+
response.setCharacterEncoding("utf-8");
265+
RDFDataMgr.write(response.getOutputStream(), output, contentType);
246266

247267
// add dataset metadata
248268
String datasetUrl = getDatasetUrl(request);

0 commit comments

Comments
 (0)