Skip to content

Commit

Permalink
Extend Jena
Browse files Browse the repository at this point in the history
  • Loading branch information
zkovari committed Oct 20, 2015
1 parent 4c155dc commit c53d87b
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

import hu.bme.mit.trainbenchmark.benchmark.benchmarkcases.BenchmarkCase;
import hu.bme.mit.trainbenchmark.benchmark.benchmarkcases.layers.AnalyzedBenchmarkCase;
import hu.bme.mit.trainbenchmark.benchmark.benchmarkcases.layers.VersatileBenchmarkCase;
import hu.bme.mit.trainbenchmark.benchmark.jena.analyzer.JenaModelAnalyzer;
import hu.bme.mit.trainbenchmark.benchmark.jena.analyzer.JenaQueryAnalyzer;
import hu.bme.mit.trainbenchmark.benchmark.jena.checkers.JenaChecker;
import hu.bme.mit.trainbenchmark.benchmark.jena.driver.JenaDriver;
import hu.bme.mit.trainbenchmark.benchmark.jena.match.JenaMatch;
Expand All @@ -28,11 +30,13 @@
import com.hp.hpl.jena.rdf.model.Resource;

public class JenaBenchmarkCase extends BenchmarkCase<JenaMatch, Resource, JenaDriver> implements
AnalyzedBenchmarkCase {
AnalyzedBenchmarkCase, VersatileBenchmarkCase {

protected JenaDriver jenaDriver;
protected RDFBenchmarkConfig rbc;
protected JenaModelAnalyzer jenaModelAnalyzer;
protected JenaQueryAnalyzer jenaQueryAnalyzer;
protected JenaChecker jenaChecker;

protected RDFBenchmarkConfig getRDFBenchmarkConfig() {
return (RDFBenchmarkConfig) benchmarkConfig;
Expand All @@ -42,7 +46,7 @@ protected RDFBenchmarkConfig getRDFBenchmarkConfig() {
protected void init() throws IOException {
rbc = (RDFBenchmarkConfig) benchmarkConfig;
driver = jenaDriver = new JenaDriver();
checker = new JenaChecker(jenaDriver, benchmarkConfig);
checker = jenaChecker = new JenaChecker(jenaDriver, benchmarkConfig);

transformation = JenaTransformation.newInstance(jenaDriver, benchmarkConfig.getQuery(),
benchmarkConfig.getScenario());
Expand All @@ -57,6 +61,22 @@ protected Comparator<?> getMatchComparator() {
public void initAnalyzer() {
modelAnalyzer = jenaModelAnalyzer = new JenaModelAnalyzer(jenaDriver);
jenaModelAnalyzer.setBenchmarkConfig(rbc);
queryAnalyzer = jenaQueryAnalyzer = new JenaQueryAnalyzer(jenaDriver);
jenaQueryAnalyzer.setQueryString(jenaChecker.getQueryDefinition());
}

@Override
public void modify() throws IOException {
if (benchmarkConfig.isVersatile()) {
final String query = queryInitializer
.resolveQuery(rbc.getWorkspacePath()
+ "/hu.bme.mit.trainbenchmark.benchmark.rdf/src/main/resources/queries/",
".sparql");
jenaChecker.setQueryDefinition(query);
jenaChecker.setQuery(query);
jenaQueryAnalyzer.setQueryString(query);
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*******************************************************************************
* Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Benedek Izso - initial API and implementation
* Gabor Szarnyas - initial API and implementation
*******************************************************************************/

package hu.bme.mit.trainbenchmark.benchmark.jena.analyzer;

import hu.bme.mit.trainbenchmark.benchmark.jena.driver.JenaDriver;
import hu.bme.mit.trainbenchmark.benchmark.rdf.analyzer.RDFQueryAnalyzer;

public class JenaQueryAnalyzer extends RDFQueryAnalyzer<JenaDriver> {

public JenaQueryAnalyzer(JenaDriver driver) {
super(driver);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@
import hu.bme.mit.trainbenchmark.benchmark.jena.driver.JenaDriver;
import hu.bme.mit.trainbenchmark.benchmark.jena.match.JenaMatch;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.commons.io.FileUtils;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
Expand All @@ -33,21 +36,26 @@ public class JenaChecker extends Checker<JenaMatch> {
protected JenaDriver jenaDriver;
protected Query query;
protected hu.bme.mit.trainbenchmark.constants.Query tbQuery;
protected String queryDefinition;

public JenaChecker(final JenaDriver jenaDriver, final BenchmarkConfig bc) throws IOException {
super();
this.jenaDriver = jenaDriver;
final String queryPath = bc.getWorkspacePath() + "/hu.bme.mit.trainbenchmark.benchmark.rdf/src/main/resources/queries/" + bc.getQuery()
+ ".sparql";
final String queryPath = bc.getWorkspacePath()
+ "/hu.bme.mit.trainbenchmark.benchmark.rdf/src/main/resources/queries/"
+ bc.getQuery() + ".sparql";
tbQuery = bc.getQuery();

query = QueryFactory.read(queryPath);
this.queryDefinition = FileUtils.readFileToString(new File(queryPath));
if (!bc.isVersatile()) {
query = QueryFactory.read(queryPath);
}
}

@Override
public Collection<JenaMatch> check() throws IOException {
final List<JenaMatch> matches = new ArrayList<>();
try (QueryExecution queryExecution = QueryExecutionFactory.create(query, jenaDriver.getModel())) {
try (QueryExecution queryExecution = QueryExecutionFactory.create(query,
jenaDriver.getModel())) {
final ResultSet resultSet = queryExecution.execSelect();

while (resultSet.hasNext()) {
Expand All @@ -60,4 +68,15 @@ public Collection<JenaMatch> check() throws IOException {
return matches;
}

public void setQueryDefinition(String queryDefinition) {
this.queryDefinition = queryDefinition;
}

public String getQueryDefinition() {
return queryDefinition;
}

public void setQuery(String queryDefinition) {
query = QueryFactory.create(queryDefinition);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*******************************************************************************/
package hu.bme.mit.trainbenchmark.benchmark.jena.match;

import hu.bme.mit.trainbenchmark.benchmark.jena.match.schedule.JenaNavigationsMatch;
import hu.bme.mit.trainbenchmark.benchmark.jena.match.schedule.JenaStationsPathMatch;
import hu.bme.mit.trainbenchmark.constants.Query;

import com.hp.hpl.jena.query.QuerySolution;
Expand Down Expand Up @@ -40,6 +42,10 @@ public static JenaMatch createMatch(final Query query, final QuerySolution qs) {
return new JenaSwitchSensorMatch(qs);
case SWITCHSET:
return new JenaSwitchSetMatch(qs);
case STATIONSPATH:
return new JenaStationsPathMatch(qs);
case SCHEDULENAVIGATIONS:
return new JenaNavigationsMatch(qs);
default:
throw new UnsupportedOperationException("Pattern not supported: " + query);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package hu.bme.mit.trainbenchmark.benchmark.jena.match.schedule;

import hu.bme.mit.trainbenchmark.benchmark.jena.match.JenaMatch;
import hu.bme.mit.trainbenchmark.benchmark.matches.schedule.ScheduleCountMatch;

import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.rdf.model.Resource;

public class JenaNavigationsMatch extends JenaMatch implements ScheduleCountMatch {

public JenaNavigationsMatch(QuerySolution qs) {
super(qs);
}

@Override
public Object getCount() {
return null;
}

@Override
public Resource[] toArray() {
return null;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package hu.bme.mit.trainbenchmark.benchmark.jena.match.schedule;

import hu.bme.mit.trainbenchmark.benchmark.jena.match.JenaMatch;
import hu.bme.mit.trainbenchmark.benchmark.matches.schedule.ScheduleCountMatch;

import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.rdf.model.Resource;

public class JenaStationsPathMatch extends JenaMatch implements ScheduleCountMatch {

public JenaStationsPathMatch(QuerySolution qs) {
super(qs);
}

@Override
public Object getCount() {
return null;
}

@Override
public Resource[] toArray() {
return null;
}

}

0 comments on commit c53d87b

Please sign in to comment.