Skip to content

Commit 6802baf

Browse files
committed
switch to StreamRDF for request logging
1 parent b4a1a65 commit 6802baf

3 files changed

Lines changed: 47 additions & 20 deletions

File tree

components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
import org.apache.commons.lang3.NotImplementedException;
3131
import org.apache.jena.query.*;
3232
import org.apache.jena.rdf.model.*;
33+
import org.apache.jena.riot.Lang;
3334
import org.apache.jena.riot.RDFDataMgr;
34-
import org.apache.jena.riot.RDFFormat;
35+
import org.apache.jena.riot.system.StreamOps;
36+
import org.apache.jena.riot.system.StreamRDF;
37+
import org.apache.jena.riot.system.StreamRDFWriter;
3538
import org.apache.jena.sparql.engine.http.QueryExceptionHTTP;
3639
import org.apache.jena.vocabulary.OWL;
3740
import org.apache.jena.vocabulary.OWL2;
@@ -134,6 +137,7 @@ public enum PopularityType {
134137
private Model requestLogMeta;
135138
private Resource currentStep;
136139
private OutputStream requestLogStream;
140+
private StreamRDF requestLogStreamRDF;
137141

138142
private QueryExecutionFactory qef;
139143

@@ -183,7 +187,6 @@ public SPARQLReasoner(QueryExecutionFactory qef) {
183187
public void destroy() {
184188
if(requestLogStream !=null) {
185189
dumpRequestLog();
186-
RDFDataMgr.write(requestLogStream,requestLogMeta,RDFFormat.NTRIPLES_UTF8);
187190
requestLogMeta.close();
188191
try {
189192
requestLogStream.flush();
@@ -205,6 +208,7 @@ public void destroy() {
205208
*/
206209
@Override
207210
public void init() throws ComponentInitException {
211+
208212
classPopularityMap = new HashMap<>();
209213
if (requestLogging) {
210214
stepCount = 0L;
@@ -261,29 +265,44 @@ public void init() throws ComponentInitException {
261265

262266
private void setCurrentStep(String stepType) {
263267
dumpRequestLog();
264-
currentStep = requestLog.createResource("step-"+stepCount, requestLog.createResource(REQUEST_LOG_NS + stepType));
268+
currentStep = requestLog.createResource(getRequestLogBaseUri() + "step-"+stepCount, requestLog.createResource(REQUEST_LOG_NS + stepType));
265269
currentStep.addLiteral(requestLog.createProperty(REQUEST_LOG_NS + "stepCount"), stepCount);
266-
currentStep.addProperty(RDF.type, requestLog.createResource(REQUEST_LOG_NS + "sprStep"));
267-
requestLogMeta.add(requestLogMeta.createResource(REQUEST_LOG_NS + stepType), RDFS.subClassOf, requestLogMeta.createResource(REQUEST_LOG_NS + "sprStep"));
270+
Resource metaType = requestLogMeta.createResource(REQUEST_LOG_NS + stepType);
271+
Resource metaBase = requestLogMeta.createResource(REQUEST_LOG_NS + "sprStep");
272+
if (!metaType.hasProperty(RDFS.subClassOf, metaBase)) {
273+
currentStep.addProperty(RDF.type, requestLog.createResource(REQUEST_LOG_NS + "sprStep"));
274+
requestLog.add(metaType, RDFS.subClassOf, metaBase);
275+
requestLogMeta.add(metaType, RDFS.subClassOf, metaBase);
276+
}
268277
stepCount++;
269278
}
270279

271280
private void writeRequestLogPreamble() {
272-
(new PrintStream(requestLogStream, true)).println("@base <" + sprRunUID + "> .");
273-
Model preamble = ModelFactory.createDefaultModel();
274-
preamble.setNsPrefix("", sprRunUID);
275-
preamble.setNsPrefix("s", REQUEST_LOG_NS);
276-
preamble.setNsPrefix(Namespaces.XSD.getPrefixName(), Namespaces.XSD.getPrefixIRI());
277-
preamble.setNsPrefix(Namespaces.RDFS.getPrefixName(), Namespaces.RDFS.getPrefixIRI());
278-
RDFDataMgr.write(requestLogStream,preamble,RDFFormat.TURTLE);
279-
preamble.close();
281+
// (new PrintStream(requestLogStream, true)).println("@base <" + sprRunUID + "> .");
282+
requestLogStreamRDF = StreamRDFWriter.getWriterStream(requestLogStream, Lang.TURTLE);
283+
requestLogStreamRDF.base(getRequestLogBaseUri());
284+
requestLogStreamRDF.prefix("", getRequestLogBaseUri());
285+
requestLogStreamRDF.prefix("s", REQUEST_LOG_NS);
286+
requestLogStreamRDF.prefix(Namespaces.XSD.getPrefixName(), Namespaces.XSD.getPrefixIRI());
287+
requestLogStreamRDF.prefix(Namespaces.RDFS.getPrefixName(), Namespaces.RDFS.getPrefixIRI());
288+
requestLogStreamRDF.prefix(Namespaces.RDF.getPrefixName(), Namespaces.RDF.getPrefixIRI());
289+
290+
// (new PrintStream(requestLogStream, true)).println("@base <" + sprRunUID + "> .");
291+
// Model preamble = ModelFactory.createDefaultModel();
292+
// preamble.setNsPrefix("", sprRunUID);
293+
// preamble.setNsPrefix("s", REQUEST_LOG_NS);
294+
// preamble.setNsPrefix(Namespaces.XSD.getPrefixName(), Namespaces.XSD.getPrefixIRI());
295+
// preamble.setNsPrefix(Namespaces.RDFS.getPrefixName(), Namespaces.RDFS.getPrefixIRI());
296+
// RDFDataMgr.write(requestLogStream,preamble,RDFFormat.TURTLE);
297+
// preamble.close();
280298
}
281299

282300
private void dumpRequestLog() {
283301
if (requestLog==null) {
284302
writeRequestLogPreamble();
285303
} else {
286-
RDFDataMgr.write(requestLogStream,requestLog,RDFFormat.NTRIPLES_UTF8);
304+
StreamOps.graphToStream(requestLog.getGraph(),requestLogStreamRDF);
305+
//RDFDataMgr.write(requestLogStream,requestLog,RDFFormat.NTRIPLES_UTF8);
287306
requestLog.close();
288307
}
289308
requestLog = ModelFactory.createDefaultModel();
@@ -2763,13 +2782,18 @@ public String getRequestLogFile() {
27632782
}
27642783

27652784
@Override
2766-
public OutputStream getLogStream() {
2767-
return requestLogStream;
2785+
public StreamRDF getLogStream() {
2786+
return requestLogStreamRDF;
27682787
}
27692788

27702789
@Override
27712790
public String getStepUri() {
27722791
return currentStep.getURI();
27732792
//return "step-"+stepCount;
27742793
}
2794+
2795+
@Override
2796+
public String getRequestLogBaseUri() {
2797+
return sprRunUID;
2798+
}
27752799
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package org.dllearner.utilities.sparql;
22

3-
import java.io.OutputStream;
3+
import org.apache.jena.riot.system.StreamRDF;
44

55
public interface LogStepProvider {
6-
OutputStream getLogStream();
6+
StreamRDF getLogStream();
77

88
String getStepUri();
9+
String getRequestLogBaseUri();
910
}

components-core/src/main/java/org/dllearner/utilities/sparql/QueryExecutionFactoryQueryLogging.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.apache.jena.rdf.model.*;
99
import org.apache.jena.riot.RDFDataMgr;
1010
import org.apache.jena.riot.RDFFormat;
11+
import org.apache.jena.riot.system.StreamOps;
12+
import org.apache.jena.riot.system.StreamRDF;
1113
import org.dllearner.reasoning.SPARQLReasoner;
1214
import org.joda.time.DateTime;
1315
import org.joda.time.format.DateTimeFormatter;
@@ -19,7 +21,7 @@ public class QueryExecutionFactoryQueryLogging extends QueryExecutionFactoryDeco
1921
{
2022
private LogStepProvider provider;
2123
private long stepRequestCount;
22-
private OutputStream logStream;
24+
private StreamRDF logStream;
2325
private String lastStep;
2426

2527
public QueryExecutionFactoryQueryLogging(QueryExecutionFactory decoratee, LogStepProvider prov) {
@@ -67,7 +69,7 @@ private void logQuery(String queryString) {
6769
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
6870
logQuery.addProperty(model.createProperty(SPARQLReasoner.REQUEST_LOG_NS + "time"), fmt.print(dt), XSDDatatype.XSDdateTimeStamp);
6971
logQuery.addProperty(model.createProperty(SPARQLReasoner.REQUEST_LOG_NS + "step"), model.createResource(stepUri));
70-
RDFDataMgr.write(logStream,model, RDFFormat.NTRIPLES_UTF8);
72+
StreamOps.graphToStream(model.getGraph(), logStream);
7173
model.close();
7274
stepRequestCount++;
7375
}

0 commit comments

Comments
 (0)