├── .editorconfig
├── .github
└── workflows
│ └── compile.yml
├── .gitignore
├── LICENSE
├── README.md
├── build.gradle
├── diagrams
└── .gitignore
├── docs
├── README.md
├── developer-guide.md
├── experimenting.md
├── getting-started.md
├── how-to-run-the-benchmark.md
├── instance-models.md
├── railway-containments.png
├── railway-containments.svg
├── railway-inheritance.png
├── railway-inheritance.svg
└── schema.md
├── gradle
├── source-layout-xcore.gradle
├── source-layout-xtext.gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── logs
├── .gitignore
└── README.md
├── models
└── .gitignore
├── postgres
├── load.sh
├── schema.sql
└── tb-load.sql
├── results
└── .gitignore
├── scripts
├── .gitignore
├── build.sh
├── calculate-model-sizes.sh
├── cloc.sh
├── compress-results.sh
├── deploy.sh
├── get-neo4j.sh
├── install-R-14.04.sh
├── install-R-16.04.sh
├── install-R-packages.sh
├── install-jdk.sh
├── install-mysql-silent.sh
├── install-mysql.sh
├── install-sqlite.sh
├── run.sh
└── shadowjar.sh
├── settings.gradle
├── site
├── .gitignore
├── _config.yml
├── _includes
│ ├── footer.html
│ ├── head.html
│ ├── header.html
│ ├── icon-github.html
│ ├── icon-github.svg
│ ├── icon-twitter.html
│ └── icon-twitter.svg
├── _layouts
│ └── default.html
├── _sass
│ ├── _base.scss
│ ├── _layout.scss
│ └── _syntax-highlighting.scss
├── css
│ └── main.scss
├── generated-models.md
├── index.md
└── sosym-supplementary.md
├── trainbenchmark-config
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ ├── config
│ │ ├── AbstractConfig.java
│ │ ├── AbstractConfigBase.java
│ │ ├── AbstractConfigBuilder.java
│ │ └── ExecutionConfig.java
│ │ └── constants
│ │ ├── ExecutionPhase.java
│ │ ├── ModelConstants.java
│ │ ├── Position.java
│ │ ├── QueryConstants.java
│ │ ├── RailwayOperation.java
│ │ ├── RailwayQuery.java
│ │ ├── Signal.java
│ │ ├── TrainBenchmarkConstants.java
│ │ └── TransformationStrategy.java
│ └── resources
│ └── .gitignore
├── trainbenchmark-format-emf-model
├── .classpath
├── .gitignore
├── .project
├── META-INF
│ └── MANIFEST.MF
├── build.gradle
├── build.properties
├── plugin.properties
├── plugin.xml
└── src
│ └── railway.xcore
├── trainbenchmark-format-emf
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── emf
│ │ ├── EmfConstants.java
│ │ └── EmfUtil.java
│ └── resources
│ └── .gitignore
├── trainbenchmark-format-graph-neo4j
├── build.gradle
└── src
│ └── main
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── neo4j
│ ├── Neo4jConstants.java
│ ├── Neo4jHelper.java
│ ├── apoc
│ └── ApocHelper.java
│ └── config
│ ├── Neo4jDeployment.java
│ └── Neo4jGraphFormat.java
├── trainbenchmark-format-rdf
├── README.md
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── rdf
│ │ ├── RdfConstants.java
│ │ ├── RdfFormat.java
│ │ └── RdfHelper.java
│ └── resources
│ └── metamodel
│ ├── railway-inferred.nt
│ ├── railway-inferred.ttl
│ ├── railway-metamodel.nt
│ └── railway-metamodel.ttl
├── trainbenchmark-format-sql
├── build.gradle
├── scripts
│ ├── README.md
│ ├── clean-mysql.sh
│ ├── mysql2sqlite.sh
│ ├── start-mysql.sh
│ └── stop-mysql.sh
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── sql
│ │ ├── constants
│ │ └── SqlConstants.java
│ │ └── process
│ │ └── MySqlProcess.java
│ └── resources
│ └── metamodel
│ ├── railway-footer.sql
│ └── railway-header.sql
├── trainbenchmark-generator-emf
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── generator
│ │ │ └── emf
│ │ │ ├── EmfGeneratorMain.java
│ │ │ ├── EmfSerializer.java
│ │ │ └── config
│ │ │ ├── EmfGeneratorConfig.java
│ │ │ └── EmfGeneratorConfigBuilder.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── emf
│ └── test
│ └── EmfGeneratorTest.java
├── trainbenchmark-generator-graph-cypher
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── generator
│ │ │ └── cypher
│ │ │ ├── CypherGeneratorMain.java
│ │ │ ├── CypherSerializer.java
│ │ │ └── config
│ │ │ ├── CypherFormat.java
│ │ │ ├── CypherGeneratorConfig.java
│ │ │ └── CypherGeneratorConfigBuilder.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── cypher
│ └── CypherGeneratorTest.java
├── trainbenchmark-generator-graph-neo4j
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── generator
│ │ └── graph
│ │ └── neo4j
│ │ ├── Neo4jGraphGeneratorMain.java
│ │ ├── Neo4jGraphSerializer.java
│ │ └── config
│ │ ├── Neo4jGraphGeneratorConfig.java
│ │ └── Neo4jGraphGeneratorConfigBuilder.java
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── graph
│ └── neo4j
│ └── test
│ └── Neo4jGraphGeneratorTest.java
├── trainbenchmark-generator-graph-tinkerpop
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── generator
│ │ └── graph
│ │ └── tinkerpop
│ │ ├── TinkerGraphGeneratorMain.java
│ │ ├── TinkerGraphSerializer.java
│ │ └── config
│ │ ├── TinkerGraphFormat.java
│ │ ├── TinkerGraphGeneratorConfig.java
│ │ └── TinkerGraphGeneratorConfigBuilder.java
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── graph
│ └── tinkerpop
│ └── test
│ └── TinkerGraphGeneratorTest.java
├── trainbenchmark-generator-rdf
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── generator
│ │ │ └── rdf
│ │ │ ├── RdfGeneratorMain.java
│ │ │ ├── RdfSerializer.java
│ │ │ └── config
│ │ │ ├── RdfGeneratorConfig.java
│ │ │ └── RdfGeneratorConfigBuilder.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── rdf
│ └── test
│ └── RdfGeneratorTest.java
├── trainbenchmark-generator-sql
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── generator
│ │ │ └── sql
│ │ │ ├── SqlGeneratorMain.java
│ │ │ ├── SqlSerializer.java
│ │ │ └── config
│ │ │ ├── SqlGeneratorConfig.java
│ │ │ └── SqlGeneratorConfigBuilder.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ └── sql
│ └── SqlGeneratorTest.java
├── trainbenchmark-generator
├── build.gradle
└── src
│ └── main
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── generator
│ ├── ModelGenerator.java
│ ├── ModelSerializer.java
│ ├── ScalableGeneratorFactory.java
│ ├── config
│ ├── GeneratorConfig.java
│ ├── GeneratorConfigBase.java
│ ├── GeneratorConfigBaseBuilder.java
│ ├── GeneratorConfigBuilder.java
│ └── Scenario.java
│ ├── minimal
│ ├── MinimalConnectedSegmentsGenerator.java
│ ├── MinimalModelGenerator.java
│ ├── MinimalPosLengthGenerator.java
│ ├── MinimalRouteSensorGenerator.java
│ ├── MinimalSemaphoreNeighborGenerator.java
│ ├── MinimalSwitchMonitoredGenerator.java
│ └── MinimalSwitchSetGenerator.java
│ ├── runner
│ └── GeneratorRunner.java
│ ├── scalable
│ └── ScalableModelGenerator.java
│ ├── tests
│ └── GeneratorTest.java
│ └── utils
│ ├── ZipIterator.java
│ └── ZipUtils.java
├── trainbenchmark-reporting
├── .gitignore
├── build.gradle
├── individual.R
├── install.R
├── memory.R
├── query-plans.R
├── report.R
├── reporting.Rproj
├── tool-list.csv
├── tools.csv
├── util.R
└── util2.R
├── trainbenchmark-scripts
├── build.gradle
├── diff.sh
├── src-template
│ ├── BenchmarkScript.groovy
│ ├── GeneratorScript.groovy
│ └── IndividualBenchmarkScript.groovy
└── src
│ └── .gitignore
├── trainbenchmark-server
├── build.gradle
└── src
│ └── main
│ └── webapp
│ ├── diagrams
│ └── .gitignore
│ └── index.html
├── trainbenchmark-tool-emf
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── emf
│ │ ├── comparators
│ │ ├── EmfMatchComparator.java
│ │ └── RailwayElementComparator.java
│ │ ├── driver
│ │ ├── EmfDriver.java
│ │ └── EmfDriverFactory.java
│ │ ├── matches
│ │ ├── EmfConnectedSegmentsInjectMatch.java
│ │ ├── EmfConnectedSegmentsMatch.java
│ │ ├── EmfMatch.java
│ │ ├── EmfPosLengthInjectMatch.java
│ │ ├── EmfPosLengthMatch.java
│ │ ├── EmfRouteSensorInjectMatch.java
│ │ ├── EmfRouteSensorMatch.java
│ │ ├── EmfSemaphoreNeighborInjectMatch.java
│ │ ├── EmfSemaphoreNeighborMatch.java
│ │ ├── EmfSwitchMonitoredInjectMatch.java
│ │ ├── EmfSwitchMonitoredMatch.java
│ │ ├── EmfSwitchSetInjectMatch.java
│ │ └── EmfSwitchSetMatch.java
│ │ └── transformation
│ │ ├── EmfTransformation.java
│ │ ├── inject
│ │ ├── EmfTransformationInjectConnectedSegments.java
│ │ ├── EmfTransformationInjectPosLength.java
│ │ ├── EmfTransformationInjectRouteSensor.java
│ │ ├── EmfTransformationInjectSemaphoreNeighbor.java
│ │ ├── EmfTransformationInjectSwitchMonitored.java
│ │ └── EmfTransformationInjectSwitchSet.java
│ │ ├── query
│ │ ├── EmfApiQuery.java
│ │ ├── EmfApiQueryConnectedSegmentsInject.java
│ │ ├── EmfApiQueryPosLengthInject.java
│ │ ├── EmfApiQueryRouteSensorInject.java
│ │ ├── EmfApiQuerySemaphoreNeighborInject.java
│ │ ├── EmfApiQuerySwitchMonitoredInject.java
│ │ └── EmfApiQuerySwitchSetInject.java
│ │ └── repair
│ │ ├── EmfTransformationRepairConnectedSegments.java
│ │ ├── EmfTransformationRepairPosLength.java
│ │ ├── EmfTransformationRepairRouteSensor.java
│ │ ├── EmfTransformationRepairSemaphoreNeighbor.java
│ │ ├── EmfTransformationRepairSwitchMonitored.java
│ │ └── EmfTransformationRepairSwitchSet.java
│ └── resources
│ └── .gitignore
├── trainbenchmark-tool-emfapi
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── emfapi
│ │ │ ├── EmfApiBenchmarkMain.java
│ │ │ ├── EmfApiBenchmarkScenario.java
│ │ │ ├── config
│ │ │ ├── EmfApiBenchmarkConfig.java
│ │ │ └── EmfApiBenchmarkConfigBuilder.java
│ │ │ ├── operations
│ │ │ └── EmfApiModelOperationFactory.java
│ │ │ └── queries
│ │ │ ├── EmfApiQueryConnectedSegments.java
│ │ │ ├── EmfApiQueryPosLength.java
│ │ │ ├── EmfApiQueryRouteSensor.java
│ │ │ ├── EmfApiQuerySemaphoreNeighbor.java
│ │ │ ├── EmfApiQuerySwitchMonitored.java
│ │ │ └── EmfApiQuerySwitchSet.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── emfapi
│ └── test
│ └── EmfApiTest.java
├── trainbenchmark-tool-ingraph
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── ingraph
│ │ │ ├── IngraphBenchmarkMain.java
│ │ │ ├── IngraphBenchmarkScenario.java
│ │ │ ├── IngraphUtils.java
│ │ │ ├── config
│ │ │ ├── IngraphBenchmarkConfig.java
│ │ │ └── IngraphBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── IngraphDriver.java
│ │ │ └── IngraphDriverFactory.java
│ │ │ ├── match
│ │ │ ├── IngraphConnectedSegmentsInjectMatch.java
│ │ │ ├── IngraphConnectedSegmentsMatch.java
│ │ │ ├── IngraphMatch.java
│ │ │ ├── IngraphMatchComparator.java
│ │ │ ├── IngraphPosLengthInjectMatch.java
│ │ │ ├── IngraphPosLengthMatch.java
│ │ │ ├── IngraphRouteSensorInjectMatch.java
│ │ │ ├── IngraphRouteSensorMatch.java
│ │ │ ├── IngraphSemaphoreNeighborInjectMatch.java
│ │ │ ├── IngraphSemaphoreNeighborMatch.java
│ │ │ ├── IngraphSwitchMonitoredInjectMatch.java
│ │ │ ├── IngraphSwitchMonitoredMatch.java
│ │ │ ├── IngraphSwitchSetInjectMatch.java
│ │ │ └── IngraphSwitchSetMatch.java
│ │ │ ├── operations
│ │ │ └── IngraphModelOperationFactory.java
│ │ │ ├── queries
│ │ │ ├── IngraphChangeListener.java
│ │ │ └── IngraphQuery.java
│ │ │ └── transformations
│ │ │ ├── IngraphTransformation.java
│ │ │ ├── inject
│ │ │ ├── IngraphTransformationInjectConnectedSegments.java
│ │ │ ├── IngraphTransformationInjectPosLength.java
│ │ │ ├── IngraphTransformationInjectRouteSensor.java
│ │ │ ├── IngraphTransformationInjectSemaphoreNeighbor.java
│ │ │ ├── IngraphTransformationInjectSwitchMonitored.java
│ │ │ └── IngraphTransformationInjectSwitchSet.java
│ │ │ └── repair
│ │ │ ├── IngraphTransformationRepairConnectedSegments.java
│ │ │ ├── IngraphTransformationRepairPosLength.java
│ │ │ ├── IngraphTransformationRepairRouteSensor.java
│ │ │ ├── IngraphTransformationRepairSemaphoreNeighbor.java
│ │ │ ├── IngraphTransformationRepairSwitchMonitored.java
│ │ │ └── IngraphTransformationRepairSwitchSet.java
│ └── resources
│ │ └── log4j.properties
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── ingraph
│ └── test
│ ├── IngraphTest.java
│ └── queryspecific
│ ├── IngraphRouteSensorTest.java
│ └── IngraphSemaphoreNeighborTest.java
├── trainbenchmark-tool-janusgraph
├── build.gradle
├── conf
│ ├── jgex-berkeleyje.properties
│ ├── jgex-cassandra.properties
│ └── jgex-inmemory.properties
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── janusgraph
│ │ │ ├── JanusGraphBenchmarkMain.java
│ │ │ ├── JanusGraphBenchmarkScenario.java
│ │ │ ├── config
│ │ │ ├── JanusGraphBenchmarkConfig.java
│ │ │ └── JanusGraphBenchmarkConfigBuilder.java
│ │ │ └── driver
│ │ │ ├── JanusGraphDriver.java
│ │ │ └── JanusGraphDriverFactory.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── janusgraph
│ └── test
│ └── JanusGraphTest.java
├── trainbenchmark-tool-jena
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── jena
│ │ │ ├── JenaBenchmarkMain.java
│ │ │ ├── JenaBenchmarkScenario.java
│ │ │ ├── comparators
│ │ │ ├── JenaMatchComparator.java
│ │ │ └── ResourceComparator.java
│ │ │ ├── config
│ │ │ ├── JenaBenchmarkConfig.java
│ │ │ └── JenaBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── JenaDriver.java
│ │ │ ├── JenaDriverFactory.java
│ │ │ └── StatementComparator.java
│ │ │ ├── matches
│ │ │ ├── JenaConnectedSegmentsInjectMatch.java
│ │ │ ├── JenaConnectedSegmentsMatch.java
│ │ │ ├── JenaMatch.java
│ │ │ ├── JenaPosLengthInjectMatch.java
│ │ │ ├── JenaPosLengthMatch.java
│ │ │ ├── JenaRouteSensorInjectMatch.java
│ │ │ ├── JenaRouteSensorMatch.java
│ │ │ ├── JenaSemaphoreNeighborInjectMatch.java
│ │ │ ├── JenaSemaphoreNeighborMatch.java
│ │ │ ├── JenaSwitchMonitoredInjectMatch.java
│ │ │ ├── JenaSwitchMonitoredMatch.java
│ │ │ ├── JenaSwitchSetInjectMatch.java
│ │ │ └── JenaSwitchSetMatch.java
│ │ │ ├── operations
│ │ │ └── JenaModelOperationFactory.java
│ │ │ ├── queries
│ │ │ └── JenaQuery.java
│ │ │ └── transformations
│ │ │ ├── JenaTransformation.java
│ │ │ ├── inject
│ │ │ ├── JenaTransformationInjectConnectedSegments.java
│ │ │ ├── JenaTransformationInjectPosLength.java
│ │ │ ├── JenaTransformationInjectRouteSensor.java
│ │ │ ├── JenaTransformationInjectSemaphoreNeighbor.java
│ │ │ ├── JenaTransformationInjectSwitchMonitored.java
│ │ │ └── JenaTransformationInjectSwitchSet.java
│ │ │ └── repair
│ │ │ ├── JenaTransformationRepairConnectedSegments.java
│ │ │ ├── JenaTransformationRepairPosLength.java
│ │ │ ├── JenaTransformationRepairRouteSensor.java
│ │ │ ├── JenaTransformationRepairSemaphoreNeighbor.java
│ │ │ ├── JenaTransformationRepairSwitchMonitored.java
│ │ │ └── JenaTransformationRepairSwitchSet.java
│ └── resources
│ │ └── log4j.properties
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── jena
│ └── test
│ └── JenaTest.java
├── trainbenchmark-tool-mysql
├── .gitignore
├── README.md
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── mysql
│ │ │ ├── MySqlBenchmarkMain.java
│ │ │ ├── MySqlBenchmarkScenario.java
│ │ │ ├── config
│ │ │ ├── MySqlBenchmarkConfig.java
│ │ │ └── MySqlBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── MySqlDriver.java
│ │ │ └── MySqlDriverFactory.java
│ │ │ └── operations
│ │ │ └── MySqlModelOperationFactory.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── mysql
│ └── test
│ └── MySqlTest.java
├── trainbenchmark-tool-neo4j
├── README.md
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── neo4j
│ │ │ ├── Neo4jBenchmarkMain.java
│ │ │ ├── Neo4jBenchmarkScenario.java
│ │ │ ├── comparators
│ │ │ ├── Neo4jMatchComparator.java
│ │ │ └── NodeComparator.java
│ │ │ ├── config
│ │ │ ├── Neo4jBenchmarkConfig.java
│ │ │ ├── Neo4jBenchmarkConfigBuilder.java
│ │ │ └── Neo4jEngine.java
│ │ │ ├── driver
│ │ │ ├── Neo4jDriver.java
│ │ │ └── Neo4jDriverFactory.java
│ │ │ ├── matches
│ │ │ ├── Neo4jActiveRouteMatch.java
│ │ │ ├── Neo4jConnectedSegmentsInjectMatch.java
│ │ │ ├── Neo4jConnectedSegmentsMatch.java
│ │ │ ├── Neo4jMatch.java
│ │ │ ├── Neo4jPosLengthInjectMatch.java
│ │ │ ├── Neo4jPosLengthMatch.java
│ │ │ ├── Neo4jRouteLengthMatch.java
│ │ │ ├── Neo4jRouteReachabilityMatch.java
│ │ │ ├── Neo4jRouteSensorInjectMatch.java
│ │ │ ├── Neo4jRouteSensorMatch.java
│ │ │ ├── Neo4jSemaphoreNeighborInjectMatch.java
│ │ │ ├── Neo4jSemaphoreNeighborMatch.java
│ │ │ ├── Neo4jSwitchMonitoredInjectMatch.java
│ │ │ ├── Neo4jSwitchMonitoredMatch.java
│ │ │ ├── Neo4jSwitchSetInjectMatch.java
│ │ │ └── Neo4jSwitchSetMatch.java
│ │ │ ├── operations
│ │ │ └── Neo4jModelOperationFactory.java
│ │ │ ├── queries
│ │ │ ├── Neo4jQuery.java
│ │ │ ├── api
│ │ │ │ ├── Neo4JApiQueryConnectedSegments.java
│ │ │ │ ├── Neo4JApiQueryConnectedSegmentsInject.java
│ │ │ │ ├── Neo4JApiQueryPosLength.java
│ │ │ │ ├── Neo4JApiQueryPosLengthInject.java
│ │ │ │ ├── Neo4JApiQueryRouteSensor.java
│ │ │ │ ├── Neo4JApiQueryRouteSensorInject.java
│ │ │ │ ├── Neo4JApiQuerySemaphoreNeighbor.java
│ │ │ │ ├── Neo4JApiQuerySemaphoreNeighborInject.java
│ │ │ │ ├── Neo4JApiQuerySwitchMonitored.java
│ │ │ │ ├── Neo4JApiQuerySwitchMonitoredInject.java
│ │ │ │ ├── Neo4JApiQuerySwitchSet.java
│ │ │ │ ├── Neo4JApiQuerySwitchSetInject.java
│ │ │ │ └── Neo4jApiQuery.java
│ │ │ └── cypher
│ │ │ │ └── Neo4jCypherQuery.java
│ │ │ ├── transformations
│ │ │ ├── Neo4jApiTransformation.java
│ │ │ ├── Neo4jCypherTransformation.java
│ │ │ ├── Neo4jTransformation.java
│ │ │ ├── api
│ │ │ │ ├── inject
│ │ │ │ │ ├── Neo4jApiTransformationInjectConnectedSegments.java
│ │ │ │ │ ├── Neo4jApiTransformationInjectPosLength.java
│ │ │ │ │ ├── Neo4jApiTransformationInjectRouteSensor.java
│ │ │ │ │ ├── Neo4jApiTransformationInjectSemaphoreNeighbor.java
│ │ │ │ │ ├── Neo4jApiTransformationInjectSwitchMonitored.java
│ │ │ │ │ └── Neo4jApiTransformationInjectSwitchSet.java
│ │ │ │ └── repair
│ │ │ │ │ ├── Neo4jApiTransformationRepairConnectedSegments.java
│ │ │ │ │ ├── Neo4jApiTransformationRepairPosLength.java
│ │ │ │ │ ├── Neo4jApiTransformationRepairRouteSensor.java
│ │ │ │ │ ├── Neo4jApiTransformationRepairSemaphoreNeighbor.java
│ │ │ │ │ ├── Neo4jApiTransformationRepairSwitchMonitored.java
│ │ │ │ │ └── Neo4jApiTransformationRepairSwitchSet.java
│ │ │ └── cypher
│ │ │ │ ├── inject
│ │ │ │ ├── Neo4jCypherTransformationInjectConnectedSegments.java
│ │ │ │ ├── Neo4jCypherTransformationInjectPosLength.java
│ │ │ │ ├── Neo4jCypherTransformationInjectRouteSensor.java
│ │ │ │ ├── Neo4jCypherTransformationInjectSemaphoreNeighbor.java
│ │ │ │ ├── Neo4jCypherTransformationInjectSwitchMonitored.java
│ │ │ │ └── Neo4jCypherTransformationInjectSwitchSet.java
│ │ │ │ └── repair
│ │ │ │ ├── Neo4jCypherTransformationRepairConnectedSegments.java
│ │ │ │ ├── Neo4jCypherTransformationRepairPosLength.java
│ │ │ │ ├── Neo4jCypherTransformationRepairRouteSensor.java
│ │ │ │ ├── Neo4jCypherTransformationRepairSemaphoreNeighbor.java
│ │ │ │ ├── Neo4jCypherTransformationRepairSwitchMonitored.java
│ │ │ │ └── Neo4jCypherTransformationRepairSwitchSet.java
│ │ │ └── util
│ │ │ └── Neo4jUtil.java
│ └── resources
│ │ ├── queries
│ │ ├── ActiveRoute.cypher
│ │ ├── ConnectedSegments.cypher
│ │ ├── ConnectedSegmentsInject.cypher
│ │ ├── PosLength.cypher
│ │ ├── PosLengthInject.cypher
│ │ ├── RouteLength.cypher
│ │ ├── RouteReachability.cypher
│ │ ├── RouteSensor.cypher
│ │ ├── RouteSensorInject.cypher
│ │ ├── SemaphoreNeighbor.cypher
│ │ ├── SemaphoreNeighborInject.cypher
│ │ ├── SwitchMonitored.cypher
│ │ ├── SwitchMonitoredInject.cypher
│ │ ├── SwitchSet.cypher
│ │ └── SwitchSetInject.cypher
│ │ └── transformations
│ │ ├── ConnectedSegmentsInjectRhs.cypher
│ │ ├── ConnectedSegmentsRepairRhs.cypher
│ │ ├── PosLengthInjectRhs.cypher
│ │ ├── PosLengthRepairRhs.cypher
│ │ ├── RouteSensorInjectRhs.cypher
│ │ ├── RouteSensorRepairRhs.cypher
│ │ ├── SemaphoreNeighborInjectRhs.cypher
│ │ ├── SemaphoreNeighborRepairRhs.cypher
│ │ ├── SwitchMonitoredInjectRhs.cypher
│ │ ├── SwitchMonitoredRepairRhs.cypher
│ │ ├── SwitchSetInjectRhs.cypher
│ │ └── SwitchSetRepairRhs.cypher
│ └── test
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── neo4j
│ │ └── test
│ │ ├── Neo4jTest.java
│ │ └── NewQueriesTest.java
│ └── resources
│ └── .gitignore
├── trainbenchmark-tool-orientdb
├── build.gradle
├── conf
│ ├── jgex-berkeleyje.properties
│ ├── jgex-cassandra.properties
│ └── jgex-inmemory.properties
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── orientdb
│ │ │ ├── OrientDbBenchmarkMain.java
│ │ │ ├── OrientDbBenchmarkScenario.java
│ │ │ ├── config
│ │ │ ├── OrientDbBenchmarkConfig.java
│ │ │ └── OrientDbBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── OrientDbDriver.java
│ │ │ └── OrientDbDriverFactory.java
│ │ │ └── operations
│ │ │ └── OrientDbModelOperationFactory.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── orientdb
│ └── test
│ └── OrientDbTest.java
├── trainbenchmark-tool-rdf
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── rdf
│ │ ├── config
│ │ ├── RdfBenchmarkConfig.java
│ │ └── RdfBenchmarkConfigBuilder.java
│ │ ├── driver
│ │ ├── RdfDriver.java
│ │ └── RdfDriverFactory.java
│ │ ├── queries
│ │ └── RdfModelQuery.java
│ │ └── tests
│ │ └── RdfTest.java
│ └── resources
│ └── queries
│ ├── ConnectedSegments.sparql
│ ├── ConnectedSegmentsInject.sparql
│ ├── PosLength.sparql
│ ├── PosLengthInject.sparql
│ ├── RouteSensor.sparql
│ ├── RouteSensorInject.sparql
│ ├── SemaphoreNeighbor.sparql
│ ├── SemaphoreNeighborInject.sparql
│ ├── SwitchMonitored.sparql
│ ├── SwitchMonitoredInject.sparql
│ ├── SwitchSet.sparql
│ └── SwitchSetInject.sparql
├── trainbenchmark-tool-sesame
├── .gitignore
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── sesame
│ │ │ ├── SesameBenchmarkMain.java
│ │ │ ├── SesameBenchmarkScenario.java
│ │ │ ├── comparators
│ │ │ ├── SesameMatchComparator.java
│ │ │ └── UriComparator.java
│ │ │ ├── config
│ │ │ ├── SesameBenchmarkConfig.java
│ │ │ └── SesameBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── SesameDriver.java
│ │ │ └── SesameDriverFactory.java
│ │ │ ├── matches
│ │ │ ├── SesameConnectedSegmentsInjectMatch.java
│ │ │ ├── SesameConnectedSegmentsMatch.java
│ │ │ ├── SesameMatch.java
│ │ │ ├── SesamePosLengthInjectMatch.java
│ │ │ ├── SesamePosLengthMatch.java
│ │ │ ├── SesameRouteSensorInjectMatch.java
│ │ │ ├── SesameRouteSensorMatch.java
│ │ │ ├── SesameSemaphoreNeighborInjectMatch.java
│ │ │ ├── SesameSemaphoreNeighborMatch.java
│ │ │ ├── SesameSwitchMonitoredInjectMatch.java
│ │ │ ├── SesameSwitchMonitoredMatch.java
│ │ │ ├── SesameSwitchSetInjectMatch.java
│ │ │ └── SesameSwitchSetMatch.java
│ │ │ ├── operations
│ │ │ └── SesameModelOperationFactory.java
│ │ │ ├── queries
│ │ │ └── SesameQuery.java
│ │ │ └── transformations
│ │ │ ├── SesameTransformation.java
│ │ │ ├── inject
│ │ │ ├── SesameTransformationInjectConnectedSegments.java
│ │ │ ├── SesameTransformationInjectPosLength.java
│ │ │ ├── SesameTransformationInjectRouteSensor.java
│ │ │ ├── SesameTransformationInjectSemaphoreNeighbor.java
│ │ │ ├── SesameTransformationInjectSwitchMonitored.java
│ │ │ └── SesameTransformationInjectSwitchSet.java
│ │ │ └── repair
│ │ │ ├── SesameTransformationRepairConnectedSegments.java
│ │ │ ├── SesameTransformationRepairPosLength.java
│ │ │ ├── SesameTransformationRepairRouteSensor.java
│ │ │ ├── SesameTransformationRepairSemaphoreNeighbor.java
│ │ │ ├── SesameTransformationRepairSwitchMonitored.java
│ │ │ └── SesameTransformationRepairSwitchSet.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── sesame
│ │ └── test
│ │ └── SesameTest.java
│ └── resources
│ └── .gitignore
├── trainbenchmark-tool-sql
├── build.gradle
└── src
│ └── main
│ ├── java
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── sql
│ │ ├── driver
│ │ └── SqlDriver.java
│ │ ├── matches
│ │ ├── SqlConnectedSegmentsInjectMatch.java
│ │ ├── SqlConnectedSegmentsMatch.java
│ │ ├── SqlMatch.java
│ │ ├── SqlPosLengthInjectMatch.java
│ │ ├── SqlPosLengthMatch.java
│ │ ├── SqlRouteSensorInjectMatch.java
│ │ ├── SqlRouteSensorMatch.java
│ │ ├── SqlSemaphoreNeighborInjectMatch.java
│ │ ├── SqlSemaphoreNeighborMatch.java
│ │ ├── SqlSwitchMonitoredInjectMatch.java
│ │ ├── SqlSwitchMonitoredMatch.java
│ │ ├── SqlSwitchSetInjectMatch.java
│ │ └── SqlSwitchSetMatch.java
│ │ ├── queries
│ │ └── SqlQuery.java
│ │ └── transformations
│ │ ├── SqlTransformation.java
│ │ ├── inject
│ │ ├── SqlTransformationInjectConnectedSegments.java
│ │ ├── SqlTransformationInjectPosLength.java
│ │ ├── SqlTransformationInjectRouteSensor.java
│ │ ├── SqlTransformationInjectSemaphoreNeighbor.java
│ │ ├── SqlTransformationInjectSwitchMonitored.java
│ │ └── SqlTransformationInjectSwitchSet.java
│ │ └── repair
│ │ ├── SqlTransformationRepairConnectedSegments.java
│ │ ├── SqlTransformationRepairPosLength.java
│ │ ├── SqlTransformationRepairRouteSensor.java
│ │ ├── SqlTransformationRepairSemaphoreNeighbor.java
│ │ ├── SqlTransformationRepairSwitchMonitored.java
│ │ └── SqlTransformationRepairSwitchSet.java
│ └── resources
│ ├── queries
│ ├── ConnectedSegments.sql
│ ├── ConnectedSegmentsInject.sql
│ ├── PosLength.sql
│ ├── PosLengthInject.sql
│ ├── RouteSensor.sql
│ ├── RouteSensorInject.sql
│ ├── SemaphoreNeighbor.sql
│ ├── SemaphoreNeighborInject.sql
│ ├── SwitchMonitored.sql
│ ├── SwitchMonitoredInject.sql
│ ├── SwitchSet.sql
│ └── SwitchSetInject.sql
│ └── transformations
│ ├── ConnectedSegmentsInjectRhs.sql
│ ├── ConnectedSegmentsRepairRhs.sql
│ ├── PosLengthInjectRhs.sql
│ ├── PosLengthRepairRhs.sql
│ ├── RouteSensorInjectRhs.sql
│ ├── RouteSensorRepairRhs.sql
│ ├── SemaphoreNeighborInjectRhs.sql
│ ├── SemaphoreNeighborRepairRhs.sql
│ ├── SwitchMonitoredInjectRhs.sql
│ ├── SwitchMonitoredRepairRhs.sql
│ ├── SwitchSetInjectRhs.sql
│ └── SwitchSetRepairRhs.sql
├── trainbenchmark-tool-sqlite
├── .gitignore
├── README.md
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── sqlite
│ │ │ ├── SQLiteBenchmarkMain.java
│ │ │ ├── SQLiteBenchmarkScenario.java
│ │ │ ├── config
│ │ │ ├── SQLiteBenchmarkConfig.java
│ │ │ └── SQLiteBenchmarkConfigBuilder.java
│ │ │ ├── driver
│ │ │ ├── SQLiteDriver.java
│ │ │ └── SQLiteDriverFactory.java
│ │ │ ├── operations
│ │ │ └── SQLiteModelOperationFactory.java
│ │ │ ├── transformation
│ │ │ └── SQLiteTransformation.java
│ │ │ └── transformations
│ │ │ ├── inject
│ │ │ ├── SQLiteTransformationInjectConnectedSegments.java
│ │ │ └── SQLiteTransformationInjectRouteSensor.java
│ │ │ └── repair
│ │ │ ├── SQLiteTransformationRepairConnectedSegments.java
│ │ │ └── SQLiteTransformationRepairSwitchMonitored.java
│ └── resources
│ │ └── transformations
│ │ ├── ConnectedSegmentsInjectRhs.sql
│ │ ├── ConnectedSegmentsRepairRhs.sql
│ │ ├── RouteSensorInjectRhs.sql
│ │ └── SwitchMonitoredRepairRhs.sql
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── sqlite
│ └── test
│ └── SQLiteTest.java
├── trainbenchmark-tool-tinkergraph
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ └── tinkergraph
│ │ │ ├── TinkerGraphBenchmarkMain.java
│ │ │ ├── TinkerGraphBenchmarkScenario.java
│ │ │ ├── comparators
│ │ │ ├── TinkerGraphMatchComparator.java
│ │ │ └── VertexComparator.java
│ │ │ ├── config
│ │ │ ├── TinkerGraphBenchmarkConfig.java
│ │ │ ├── TinkerGraphBenchmarkConfigBuilder.java
│ │ │ └── TinkerGraphEngine.java
│ │ │ ├── driver
│ │ │ ├── GraphDriver.java
│ │ │ ├── TinkerGraphDriver.java
│ │ │ └── TinkerGraphDriverFactory.java
│ │ │ ├── matches
│ │ │ ├── TinkerGraphConnectedSegmentsInjectMatch.java
│ │ │ ├── TinkerGraphConnectedSegmentsMatch.java
│ │ │ ├── TinkerGraphMatch.java
│ │ │ ├── TinkerGraphPosLengthInjectMatch.java
│ │ │ ├── TinkerGraphPosLengthMatch.java
│ │ │ ├── TinkerGraphRouteSensorInjectMatch.java
│ │ │ ├── TinkerGraphRouteSensorMatch.java
│ │ │ ├── TinkerGraphSemaphoreNeighborInjectMatch.java
│ │ │ ├── TinkerGraphSemaphoreNeighborMatch.java
│ │ │ ├── TinkerGraphSwitchMonitoredInjectMatch.java
│ │ │ ├── TinkerGraphSwitchMonitoredMatch.java
│ │ │ ├── TinkerGraphSwitchSetInjectMatch.java
│ │ │ └── TinkerGraphSwitchSetMatch.java
│ │ │ ├── operations
│ │ │ └── TinkerGraphModelOperationFactory.java
│ │ │ ├── queries
│ │ │ ├── TinkerGraphQuery.java
│ │ │ ├── api
│ │ │ │ ├── TinkerGraphQueryConnectedSegments.java
│ │ │ │ ├── TinkerGraphQueryConnectedSegmentsInject.java
│ │ │ │ ├── TinkerGraphQueryPosLength.java
│ │ │ │ ├── TinkerGraphQueryPosLengthInject.java
│ │ │ │ ├── TinkerGraphQueryRouteSensor.java
│ │ │ │ ├── TinkerGraphQueryRouteSensorInject.java
│ │ │ │ ├── TinkerGraphQuerySemaphoreNeighbor.java
│ │ │ │ ├── TinkerGraphQuerySemaphoreNeighborInject.java
│ │ │ │ ├── TinkerGraphQuerySwitchMonitored.java
│ │ │ │ ├── TinkerGraphQuerySwitchMonitoredInject.java
│ │ │ │ ├── TinkerGraphQuerySwitchSet.java
│ │ │ │ └── TinkerGraphQuerySwitchSetInject.java
│ │ │ └── gremlin
│ │ │ │ └── TinkerGraphGremlinQuery.java
│ │ │ └── transformations
│ │ │ ├── TinkerGraphTransformation.java
│ │ │ ├── inject
│ │ │ ├── TinkerGraphTransformationInjectConnectedSegments.java
│ │ │ ├── TinkerGraphTransformationInjectPosLength.java
│ │ │ ├── TinkerGraphTransformationInjectRouteSensor.java
│ │ │ ├── TinkerGraphTransformationInjectSemaphoreNeighbor.java
│ │ │ ├── TinkerGraphTransformationInjectSwitchMonitored.java
│ │ │ └── TinkerGraphTransformationInjectSwitchSet.java
│ │ │ ├── repair
│ │ │ ├── TinkerGraphTransformationRepairConnectedSegments.java
│ │ │ ├── TinkerGraphTransformationRepairPosLength.java
│ │ │ ├── TinkerGraphTransformationRepairRouteSensor.java
│ │ │ ├── TinkerGraphTransformationRepairSemaphoreNeighbor.java
│ │ │ ├── TinkerGraphTransformationRepairSwitchMonitored.java
│ │ │ └── TinkerGraphTransformationRepairSwitchSet.java
│ │ │ └── util
│ │ │ └── TinkerGraphUtil.java
│ └── resources
│ │ ├── .gitignore
│ │ └── queries
│ │ ├── ConnectedSegments.gremlin
│ │ ├── ConnectedSegmentsInject.gremlin
│ │ ├── PosLength.gremlin
│ │ ├── PosLengthInject.gremlin
│ │ ├── RouteSensor.gremlin
│ │ ├── RouteSensorInject.gremlin
│ │ ├── SemaphoreNeighbor.gremlin
│ │ ├── SemaphoreNeighborInject.gremlin
│ │ ├── SwitchMonitored.gremlin
│ │ ├── SwitchMonitoredInject.gremlin
│ │ ├── SwitchSet.gremlin
│ │ └── SwitchSetInject.gremlin
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── tinkergraph
│ └── test
│ └── TinkerGraphTest.java
├── trainbenchmark-tool-viatra-patterns
├── .classpath
├── .gitignore
├── .project
├── META-INF
│ └── MANIFEST.MF
├── build.gradle
├── build.properties
├── plugin.xml
├── src-gen
│ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── viatra
│ │ ├── ConnectedSegments.java
│ │ ├── ConnectedSegmentsInject.java
│ │ ├── ConnectedSegmentsInjectMatch.java
│ │ ├── ConnectedSegmentsInjectMatcher.java
│ │ ├── ConnectedSegmentsMatch.java
│ │ ├── ConnectedSegmentsMatcher.java
│ │ ├── EntrySemaphoreMatch.java
│ │ ├── EntrySemaphoreMatcher.java
│ │ ├── HasSensorMatch.java
│ │ ├── HasSensorMatcher.java
│ │ ├── PosLength.java
│ │ ├── PosLengthInject.java
│ │ ├── PosLengthInjectMatch.java
│ │ ├── PosLengthInjectMatcher.java
│ │ ├── PosLengthMatch.java
│ │ ├── PosLengthMatcher.java
│ │ ├── RequiredMatch.java
│ │ ├── RequiredMatcher.java
│ │ ├── RouteSensor.java
│ │ ├── RouteSensorInject.java
│ │ ├── RouteSensorInjectMatch.java
│ │ ├── RouteSensorInjectMatcher.java
│ │ ├── RouteSensorMatch.java
│ │ ├── RouteSensorMatcher.java
│ │ ├── SemaphoreNeighbor.java
│ │ ├── SemaphoreNeighborInject.java
│ │ ├── SemaphoreNeighborInjectMatch.java
│ │ ├── SemaphoreNeighborInjectMatcher.java
│ │ ├── SemaphoreNeighborMatch.java
│ │ ├── SemaphoreNeighborMatcher.java
│ │ ├── SwitchMonitored.java
│ │ ├── SwitchMonitoredInject.java
│ │ ├── SwitchMonitoredInjectMatch.java
│ │ ├── SwitchMonitoredInjectMatcher.java
│ │ ├── SwitchMonitoredMatch.java
│ │ ├── SwitchMonitoredMatcher.java
│ │ ├── SwitchSet.java
│ │ ├── SwitchSetInject.java
│ │ ├── SwitchSetInjectMatch.java
│ │ ├── SwitchSetInjectMatcher.java
│ │ ├── SwitchSetMatch.java
│ │ ├── SwitchSetMatcher.java
│ │ └── util
│ │ ├── ConnectedSegmentsInjectProcessor.java
│ │ ├── ConnectedSegmentsInjectQuerySpecification.java
│ │ ├── ConnectedSegmentsProcessor.java
│ │ ├── ConnectedSegmentsQuerySpecification.java
│ │ ├── EntrySemaphoreProcessor.java
│ │ ├── EntrySemaphoreQuerySpecification.java
│ │ ├── HasSensorProcessor.java
│ │ ├── HasSensorQuerySpecification.java
│ │ ├── PosLengthInjectProcessor.java
│ │ ├── PosLengthInjectQuerySpecification.java
│ │ ├── PosLengthProcessor.java
│ │ ├── PosLengthQuerySpecification.java
│ │ ├── RequiredProcessor.java
│ │ ├── RequiredQuerySpecification.java
│ │ ├── RouteSensorInjectProcessor.java
│ │ ├── RouteSensorInjectQuerySpecification.java
│ │ ├── RouteSensorProcessor.java
│ │ ├── RouteSensorQuerySpecification.java
│ │ ├── SemaphoreNeighborInjectProcessor.java
│ │ ├── SemaphoreNeighborInjectQuerySpecification.java
│ │ ├── SemaphoreNeighborProcessor.java
│ │ ├── SemaphoreNeighborQuerySpecification.java
│ │ ├── SwitchMonitoredInjectProcessor.java
│ │ ├── SwitchMonitoredInjectQuerySpecification.java
│ │ ├── SwitchMonitoredProcessor.java
│ │ ├── SwitchMonitoredQuerySpecification.java
│ │ ├── SwitchSetInjectProcessor.java
│ │ ├── SwitchSetInjectQuerySpecification.java
│ │ ├── SwitchSetProcessor.java
│ │ └── SwitchSetQuerySpecification.java
└── src
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── viatra
│ ├── ConnectedSegments.vql
│ ├── ConnectedSegmentsInject.vql
│ ├── PosLength.vql
│ ├── PosLengthInject.vql
│ ├── RouteSensor.vql
│ ├── RouteSensorInject.vql
│ ├── SemaphoreNeighbor.vql
│ ├── SemaphoreNeighborInject.vql
│ ├── SwitchMonitored.vql
│ ├── SwitchMonitoredInject.vql
│ ├── SwitchSet.vql
│ └── SwitchSetInject.vql
├── trainbenchmark-tool-viatra
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── hu
│ │ └── bme
│ │ └── mit
│ │ └── trainbenchmark
│ │ └── benchmark
│ │ └── viatra
│ │ ├── ViatraBenchmarkMain.java
│ │ ├── ViatraBenchmarkScenario.java
│ │ ├── comparators
│ │ └── ViatraMatchComparator.java
│ │ ├── config
│ │ ├── ViatraBackend.java
│ │ ├── ViatraBenchmarkConfig.java
│ │ └── ViatraBenchmarkConfigBuilder.java
│ │ ├── driver
│ │ ├── ViatraDriver.java
│ │ └── ViatraDriverFactory.java
│ │ ├── operations
│ │ └── ViatraModelOperationFactory.java
│ │ ├── queries
│ │ ├── ViatraQuery.java
│ │ ├── ViatraQueryConnectedSegments.java
│ │ ├── ViatraQueryConnectedSegmentsInject.java
│ │ ├── ViatraQueryPosLength.java
│ │ ├── ViatraQueryPosLengthInject.java
│ │ ├── ViatraQueryRouteSensor.java
│ │ ├── ViatraQueryRouteSensorInject.java
│ │ ├── ViatraQuerySemaphoreNeighbor.java
│ │ ├── ViatraQuerySemaphoreNeighborInject.java
│ │ ├── ViatraQuerySwitchMonitored.java
│ │ ├── ViatraQuerySwitchMonitoredInject.java
│ │ ├── ViatraQuerySwitchSet.java
│ │ └── ViatraQuerySwitchSetInject.java
│ │ └── transformations
│ │ ├── ViatraTransformation.java
│ │ ├── inject
│ │ ├── ViatraTransformationInjectConnectedSegments.java
│ │ ├── ViatraTransformationInjectPosLength.java
│ │ ├── ViatraTransformationInjectRouteSensor.java
│ │ ├── ViatraTransformationInjectSemaphoreNeighbor.java
│ │ ├── ViatraTransformationInjectSwitchMonitored.java
│ │ └── ViatraTransformationInjectSwitchSet.java
│ │ └── repair
│ │ ├── ViatraTransformationRepairConnectedSegments.java
│ │ ├── ViatraTransformationRepairPosLength.java
│ │ ├── ViatraTransformationRepairRouteSensor.java
│ │ ├── ViatraTransformationRepairSemaphoreNeighbor.java
│ │ ├── ViatraTransformationRepairSwitchMonitored.java
│ │ └── ViatraTransformationRepairSwitchSet.java
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── viatra
│ └── test
│ └── ViatraTest.java
├── trainbenchmark-tool
├── build.gradle
├── build.properties
└── src
│ ├── main
│ ├── java
│ │ └── hu
│ │ │ └── bme
│ │ │ └── mit
│ │ │ └── trainbenchmark
│ │ │ └── benchmark
│ │ │ ├── comparators
│ │ │ ├── LongComparator.java
│ │ │ └── LongMatchComparator.java
│ │ │ ├── config
│ │ │ ├── BenchmarkConfig.java
│ │ │ ├── BenchmarkConfigBase.java
│ │ │ ├── BenchmarkConfigBaseBuilder.java
│ │ │ ├── BenchmarkConfigBuilder.java
│ │ │ ├── ModelSetConfig.java
│ │ │ └── TransformationChangeSetStrategy.java
│ │ │ ├── driver
│ │ │ ├── Driver.java
│ │ │ └── DriverFactory.java
│ │ │ ├── matches
│ │ │ ├── ActiveRouteMatch.java
│ │ │ ├── BaseMatch.java
│ │ │ ├── ConnectedSegmentsInjectMatch.java
│ │ │ ├── ConnectedSegmentsMatch.java
│ │ │ ├── LongMatch.java
│ │ │ ├── Match.java
│ │ │ ├── PosLengthInjectMatch.java
│ │ │ ├── PosLengthMatch.java
│ │ │ ├── RouteLengthMatch.java
│ │ │ ├── RouteReachabilityMatch.java
│ │ │ ├── RouteSensorInjectMatch.java
│ │ │ ├── RouteSensorMatch.java
│ │ │ ├── SemaphoreNeighborInjectMatch.java
│ │ │ ├── SemaphoreNeighborMatch.java
│ │ │ ├── SwitchMonitoredInjectMatch.java
│ │ │ ├── SwitchMonitoredMatch.java
│ │ │ ├── SwitchSetInjectMatch.java
│ │ │ ├── SwitchSetMatch.java
│ │ │ └── comparators
│ │ │ │ ├── BaseMatchComparator.java
│ │ │ │ └── MatchComparator.java
│ │ │ ├── operations
│ │ │ ├── ModelOperation.java
│ │ │ ├── ModelOperationFactory.java
│ │ │ ├── ModelOperationRegistry.java
│ │ │ ├── ModelQuery.java
│ │ │ └── ModelTransformation.java
│ │ │ ├── phases
│ │ │ ├── BenchmarkScenario.java
│ │ │ ├── CleanupPhase.java
│ │ │ ├── InitializeOperationsPhase.java
│ │ │ ├── Phase.java
│ │ │ ├── PhaseExecutor.java
│ │ │ ├── QueryPhase.java
│ │ │ ├── ReadPhase.java
│ │ │ └── TransformationPhase.java
│ │ │ ├── result
│ │ │ ├── AbstractResult.java
│ │ │ └── ResultHelper.java
│ │ │ ├── runcomponents
│ │ │ ├── BenchmarkBundle.java
│ │ │ ├── BenchmarkReporter.java
│ │ │ ├── BenchmarkResult.java
│ │ │ ├── BenchmarkRunner.java
│ │ │ ├── QueryShuffleTransformation.java
│ │ │ └── RunResult.java
│ │ │ └── test
│ │ │ ├── TrainBenchmarkTest.java
│ │ │ └── queryspecific
│ │ │ ├── QueryTest.java
│ │ │ ├── RouteSensorTest.java
│ │ │ └── SemaphoreNeighborTest.java
│ └── resources
│ │ └── .gitignore
│ └── test
│ └── java
│ └── hu
│ └── bme
│ └── mit
│ └── trainbenchmark
│ └── benchmark
│ └── runcomponents
│ └── test
│ └── BenchmarkReporterTest.java
└── visualization
├── .gitignore
└── query-plans
├── RouteSensorA-Relalg.tex
├── RouteSensorA-Rete-cost.tex
├── RouteSensorA-Rete.tex
├── RouteSensorA-ReteExpression.tex
├── RouteSensorB-Relalg.tex
├── RouteSensorB-Rete.tex
├── RouteSensorB-ReteExpression.tex
├── RouteSensorC-Relalg.tex
├── RouteSensorC-Rete.tex
├── RouteSensorC-ReteExpression.tex
├── SemaphoreNeighborA-Relalg.tex
├── SemaphoreNeighborA-Rete-cost.tex
├── SemaphoreNeighborA-Rete.tex
├── SemaphoreNeighborA-ReteExpression.tex
├── SemaphoreNeighborB-Relalg.tex
├── SemaphoreNeighborB-Rete.tex
├── SemaphoreNeighborB-ReteExpression.tex
├── SemaphoreNeighborC-Relalg.tex
├── SemaphoreNeighborC-Rete.tex
├── SemaphoreNeighborC-ReteExpression.tex
├── SemaphoreNeighborD-Relalg.tex
├── SemaphoreNeighborD-Rete.tex
├── SemaphoreNeighborD-ReteExpression.tex
├── SemaphoreNeighborE-Relalg.tex
├── SemaphoreNeighborE-Rete.tex
├── SemaphoreNeighborE-ReteExpression.tex
├── SemaphoreNeighborF-Relalg.tex
├── SemaphoreNeighborF-Rete.tex
├── SemaphoreNeighborF-ReteExpression.tex
├── bootstrap.min.css
├── convert.sh
├── template-footer.html
└── template-header.html
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*.java]
4 | charset = utf-8
5 | end_of_line = lf
6 | indent_size = 4
7 | indent_style = tab
8 | insert_final_newline = true
9 | max_line_length = 140
10 | trim_trailing_whitespace = true
11 |
--------------------------------------------------------------------------------
/.github/workflows/compile.yml:
--------------------------------------------------------------------------------
1 | on: [push]
2 | jobs:
3 | build_and_test:
4 | runs-on: ubuntu-latest
5 | steps:
6 | - name: Set up Git repository
7 | uses: actions/checkout@v1
8 | - uses: actions/setup-java@v2
9 | with:
10 | distribution: 'adopt'
11 | java-version: '11'
12 | - name: Build and test
13 | run: |
14 | scripts/get-neo4j.sh
15 | ./gradlew inits build -x :trainbenchmark-generator-sql:test -x :trainbenchmark-tool-mysql:test -x :trainbenchmark-tool-sqlite:test --stacktrace --continue
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | plugin.xml_gen
2 | bin/
3 | target/
4 | tmp/
5 | .settings/
6 | MANIFEST.MF_gen
7 | .DS_Store*
8 | .metadata
9 | runtimeInfo
10 | workspace
11 | *._trace
12 | Thumbs.db
13 | .Rhistory
14 | .pydevproject
15 | deps/
16 | diagrams/*
17 | .idea
18 | log/
19 | catalog-v*.xml
20 | .RData
21 | .Rproj.user
22 | *.tar.gz
23 | *.zip
24 | *.gml
25 |
26 | # IntelliJ IDEA
27 | *.iml
28 |
29 | # Eclipse
30 | .project
31 | .classpath
32 |
33 | ### Gradle ###
34 | .gradle
35 | build/
36 |
37 | # Ignore Gradle GUI config
38 | gradle-app.setting
39 |
40 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
41 | !gradle-wrapper.jar
42 |
43 | # Cache of project
44 | .gradletasknamecache
45 |
46 | hs_err_*.log
47 | replay_*.log
48 |
49 | ~*.*
50 | *.~*
51 |
52 | xtend-gen/
53 | neo4j-server/
54 | out/
55 | *.swp
56 | *.report
57 | classes/
58 |
59 | deployed-content/
60 |
--------------------------------------------------------------------------------
/diagrams/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Train Benchmark documentation
2 |
3 | * [Getting started](getting-started.md)
4 | * [How to run the benchmark](how-to-run-the-benchmark.md)
5 | * [Developer Guide](developer-guide.md)
6 | * [Experimenting](experimenting.md)
7 | * [Schema](schema.md)
8 |
--------------------------------------------------------------------------------
/docs/instance-models.md:
--------------------------------------------------------------------------------
1 | # Instance models
2 |
3 | For each build, the latest instance models are pushed to the gh-pages branch:
4 |
5 | * https://github.com/FTSRG/trainbenchmark/tree/gh-pages/models
6 | * http://docs.inf.mit.bme.hu/trainbenchmark/generated-models.html
7 |
--------------------------------------------------------------------------------
/docs/railway-containments.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/docs/railway-containments.png
--------------------------------------------------------------------------------
/docs/railway-inheritance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/docs/railway-inheritance.png
--------------------------------------------------------------------------------
/docs/schema.md:
--------------------------------------------------------------------------------
1 | # Schema
2 |
3 | Object-oriented schema for the benchmark's metamodel.
4 |
5 | ## Railway containments
6 |
7 | 
8 |
9 | ## Railway inheritance
10 |
11 | 
12 |
--------------------------------------------------------------------------------
/gradle/source-layout-xcore.gradle:
--------------------------------------------------------------------------------
1 | sourceSets {
2 | main {
3 | java.srcDirs = ['src', 'src-gen']
4 | resources.srcDirs = ['src', 'src-gen']
5 | xtendOutputDir = 'xtend-gen'
6 | }
7 | test {
8 | java.srcDirs = []
9 | resources.srcDirs = []
10 | }
11 | }
12 |
13 | sourceSets.all {
14 | resources.exclude '**/*.g', '**/*.xtext', '**/*.mwe2', '**/*.xtend', '**/*._trace'
15 | }
16 |
17 | jar {
18 | from('model') {
19 | into('model')
20 | }
21 | manifest {
22 | attributes 'Bundle-SymbolicName': project.name
23 | }
24 | }
25 |
26 | plugins.withId('war') {
27 | webAppDirName = "WebRoot"
28 | }
29 |
30 | plugins.withId('org.xtext.idea-plugin') {
31 | assembleSandbox.metaInf.from('META-INF')
32 | }
33 |
--------------------------------------------------------------------------------
/gradle/source-layout-xtext.gradle:
--------------------------------------------------------------------------------
1 | sourceSets {
2 | main {
3 | java.srcDirs = ['src/main/java', 'src/main/xtext-gen']
4 | resources.srcDirs = ['src/main/resources', 'src/main/xtext-gen']
5 | xtendOutputDir = 'src/main/xtend-gen'
6 | }
7 | test {
8 | java.srcDirs = ['src/test/java', 'src/test/xtext-gen']
9 | resources.srcDirs = ['src/test/resources', 'src/test/xtext-gen']
10 | xtendOutputDir = 'src/test/xtend-gen'
11 | }
12 | }
13 |
14 | jar {
15 | from('model') {
16 | into('model')
17 | }
18 | manifest {
19 | attributes 'Bundle-SymbolicName': project.name
20 | }
21 | }
22 |
23 | plugins.withId('org.xtext.idea-plugin') {
24 | assembleSandbox.metaInf.from('src/main/resources/META-INF')
25 | }
26 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !README.md
3 | !.gitignore
4 |
5 |
--------------------------------------------------------------------------------
/logs/README.md:
--------------------------------------------------------------------------------
1 | Save the logs like this:
2 |
3 | ```
4 | $ scripts/run.py |& tee logs/generator.log
5 | ```
6 |
--------------------------------------------------------------------------------
/models/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/postgres/load.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | PG_CSV_DIR=${1:-$(pwd)/../models/railway-inject-1-csv}
4 | DB_NAME=${2:-trainbenchmark}
5 | PG_USER=${3:-$USER}
6 |
7 | /usr/bin/dropdb $DB_NAME -U $PG_USER
8 | /usr/bin/createdb $DB_NAME -U $PG_USER --template template0 -l "C"
9 | /usr/bin/psql -d $DB_NAME -U $PG_USER -a -f schema.sql
10 | (cat tb-load.sql | sed "s|PATHVAR|$PG_CSV_DIR|g"; echo "\q\n") | /usr/bin/psql -d $DB_NAME -U $PG_USER
11 |
--------------------------------------------------------------------------------
/postgres/tb-load.sql:
--------------------------------------------------------------------------------
1 | -- nodes
2 | COPY Route FROM 'PATHVAR/Route.txt' WITH DELIMITER ',';
3 | COPY Region FROM 'PATHVAR/Region.txt' WITH DELIMITER ',';
4 | COPY Segment FROM 'PATHVAR/Segment.txt' WITH DELIMITER ',';
5 | COPY Sensor FROM 'PATHVAR/Sensor.txt' WITH DELIMITER ',';
6 | COPY Semaphore FROM 'PATHVAR/Semaphore.txt' WITH DELIMITER ',';
7 | COPY Switch FROM 'PATHVAR/Switch.txt' WITH DELIMITER ',';
8 | COPY SwitchPosition FROM 'PATHVAR/SwitchPosition.txt' WITH DELIMITER ',';
9 | COPY TrackElement FROM 'PATHVAR/TrackElement.txt' WITH DELIMITER ',';
10 | -- edges
11 | COPY connectsTo FROM 'PATHVAR/connectsTo.txt' WITH DELIMITER ',';
12 | COPY monitoredBy FROM 'PATHVAR/monitoredBy.txt' WITH DELIMITER ',';
13 | COPY requires FROM 'PATHVAR/requires.txt' WITH DELIMITER ',';
14 |
--------------------------------------------------------------------------------
/results/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/scripts/.gitignore:
--------------------------------------------------------------------------------
1 | .project
2 | .pydevproject
3 | __pycache__/*
4 | .Rhistory
5 | tb-env/
6 | init/*.zip
7 | log/
8 | get-pip.py*
9 |
--------------------------------------------------------------------------------
/scripts/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$( cd "$( dirname "$0" )" && pwd )/../"
4 |
5 | ./gradlew build -x test --continue
6 |
--------------------------------------------------------------------------------
/scripts/calculate-model-sizes.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$( cd "$( dirname "$0" )" && pwd )/../models"
4 |
5 | #for variant in inferred metamodel; do
6 | for variant in inferred; do
7 | echo $variant
8 | for scenario in batch inject repair; do
9 | echo $scenario
10 | #ag --count "^[^@#].*[;.]$" *-$scenario-*$variant.ttl | sed "s/\(.*\):\(.*\)/\2\t\1/" | sort --numeric-sort
11 | grep --count "^[^@#].*[;.]$" *-$scenario-*$variant.ttl | sed "s/\(.*\):\(.*\)/\2\t\1/" | sort --numeric-sort
12 | echo
13 | done
14 | echo
15 | done
16 |
--------------------------------------------------------------------------------
/scripts/cloc.sh:
--------------------------------------------------------------------------------
1 | cloc . --exclude-dir=trainbenchmark-tool-viatra-patterns,xtend-gen
2 |
--------------------------------------------------------------------------------
/scripts/compress-results.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | tar czf results.tar.gz results
4 |
--------------------------------------------------------------------------------
/scripts/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e # exit with nonzero exit code if anything fails
4 |
5 | # clear and re-create the deployed-content directory
6 | rm -rf deployed-content || exit 0
7 | mkdir -p deployed-content/models
8 |
9 | # copy model files (*.*), but not directories
10 | cp -r site/* deployed-content
11 | cp -r models/* deployed-content/models
12 |
13 | # go to the out directory and create a *new* Git repo
14 | cd deployed-content
15 | git init
16 |
17 | # inside this git repo we'll pretend to be a new user
18 | git config user.name "FTSRG BME"
19 | git config user.email "ftsrg.bme@gmail.com"
20 |
21 | # The first and only commit to this new Git repo contains all the
22 | # files present with the commit message "Deploy to GitHub Pages".
23 | git add .
24 | git commit -m "Deploy to GitHub Pages"
25 |
26 | # Force push from the current repo's master branch to the remote
27 | # repo's gh-pages branch. (All previous history on the gh-pages branch
28 | # will be lost, since we are overwriting it.) We redirect any output to
29 | # /dev/null to hide any sensitive credential data that might otherwise be exposed.
30 | git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:gh-pages > /dev/null 2>&1
31 |
--------------------------------------------------------------------------------
/scripts/get-neo4j.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | NEO4J_VERSION=3.3.0
4 |
5 | cd "$( cd "$( dirname "$0" )" && pwd )/../"
6 | rm -rf neo4j-server
7 | wget -q https://neo4j.com/artifact.php?name=neo4j-community-$NEO4J_VERSION-unix.tar.gz -O neo4j.tar.gz
8 | tar xf neo4j.tar.gz
9 | mv neo4j-community-$NEO4J_VERSION neo4j-server
10 |
--------------------------------------------------------------------------------
/scripts/install-R-14.04.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # based on https://www.digitalocean.com/community/tutorials/how-to-set-up-r-on-ubuntu-14-04
4 |
5 | # change trusty (14.04) to xenial for 16.04
6 | sudo sh -c 'echo "deb http://cran.rstudio.com/bin/linux/ubuntu trusty/" >> /etc/apt/sources.list'
7 | gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
8 | gpg -a --export E084DAB9 | sudo apt-key add -
9 |
10 | sudo apt-get update
11 | sudo apt-get install -y r-base r-base-dev
12 |
--------------------------------------------------------------------------------
/scripts/install-R-16.04.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo apt-get update
4 | sudo apt-get install -y r-base r-base-dev
5 |
--------------------------------------------------------------------------------
/scripts/install-R-packages.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$( cd "$( dirname "$0" )" && pwd )"
4 |
5 | Rscript ../trainbenchmark-reporting/install.R
6 |
--------------------------------------------------------------------------------
/scripts/install-jdk.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo apt install -y openjdk-8-jdk
4 |
--------------------------------------------------------------------------------
/scripts/install-mysql-silent.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password '
4 | sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '
5 | sudo apt-get -y install mysql-server
6 |
--------------------------------------------------------------------------------
/scripts/install-mysql.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo apt-get install mysql-server
4 |
--------------------------------------------------------------------------------
/scripts/install-sqlite.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo apt-get install -y sqlite3
4 |
--------------------------------------------------------------------------------
/scripts/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$( cd "$( dirname "$0" )" && pwd )/../"
4 |
5 | ./gradlew shadowJar generate benchmark plot page
6 |
--------------------------------------------------------------------------------
/scripts/shadowjar.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$( cd "$( dirname "$0" )" && pwd )/../"
4 |
5 | ./gradlew build shadowJar -x test
6 |
--------------------------------------------------------------------------------
/site/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .sass-cache
3 | .jekyll-metadata
4 |
5 |
--------------------------------------------------------------------------------
/site/_config.yml:
--------------------------------------------------------------------------------
1 | title: Train Benchmark
2 | baseurl: /trainbenchmark
3 | github_username: FTSRG
4 | markdown: kramdown
5 |
--------------------------------------------------------------------------------
/site/_includes/footer.html:
--------------------------------------------------------------------------------
1 |
39 |
--------------------------------------------------------------------------------
/site/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/site/_includes/header.html:
--------------------------------------------------------------------------------
1 |
28 |
--------------------------------------------------------------------------------
/site/_includes/icon-github.html:
--------------------------------------------------------------------------------
1 | {% include icon-github.svg %}{{ include.username }}
2 |
--------------------------------------------------------------------------------
/site/_includes/icon-github.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/site/_includes/icon-twitter.html:
--------------------------------------------------------------------------------
1 | {{ include.username }}
2 |
--------------------------------------------------------------------------------
/site/_includes/icon-twitter.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/site/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% include head.html %}
5 |
6 |
7 |
8 | {% include header.html %}
9 |
10 |
11 |
12 | {{ content }}
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/site/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | * [Publications](https://github.com/FTSRG/publication-pages/wiki#train-benchmark)
6 | * [GitHub repository](https://github.com/FTSRG/trainbenchmark)
7 | * [SOSYM paper](http://link.springer.com/article/10.1007/s10270-016-0571-8): The Train Benchmark: cross-technology performance evaluation of continuous model queries. [[Supplementary material](sosym-supplementary.html)]
8 | * [Generated models](generated-models.html)
9 |
--------------------------------------------------------------------------------
/site/sosym-supplementary.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | ## Supplementary material for the SOSYM paper
6 |
7 | * The Train Benchmark framework's [1.0 release](https://github.com/FTSRG/trainbenchmark/releases/tag/v1.0).
8 | * Detailed results in CSV format are available in the [`trainbenchmark-sosym`](https://github.com/FTSRG/trainbenchmark-sosym) repository.
9 |
--------------------------------------------------------------------------------
/trainbenchmark-config/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | /target/
3 |
--------------------------------------------------------------------------------
/trainbenchmark-config/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile group: 'commons-lang', name: 'commons-lang', version: commonsLangVersion
3 | compile group: 'com.google.guava', name: 'guava', version: guavaVersion
4 | compile group: 'com.esotericsoftware', name: 'kryo-shaded', version: kryoVersion
5 | }
6 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/config/AbstractConfigBase.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.config;
14 |
15 | public abstract class AbstractConfigBase {
16 |
17 | public AbstractConfigBase() {
18 | }
19 |
20 | public String getWorkspaceDir() {
21 | return "../";
22 | }
23 |
24 | public String getModelDir() {
25 | return getWorkspaceDir() + "models/";
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/config/AbstractConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.config;
2 |
3 | import com.google.common.base.Preconditions;
4 |
5 | /**
6 | * This class uses the Curiously-Recurring Generic Pattern, see
7 | * http://www.artima.com/weblogs/viewpost.jsp?thread=133275 for details.
8 | */
9 | public abstract class AbstractConfigBuilder<
10 | TConfigBase extends AbstractConfigBase,
11 | TConfig extends AbstractConfig,
12 | TBuilder extends AbstractConfigBuilder> {
13 |
14 | protected TConfigBase configBase;
15 |
16 | @SuppressWarnings("unchecked")
17 | public TBuilder setConfigBase(final TConfigBase configBase) {
18 | this.configBase = configBase;
19 | return (TBuilder) this;
20 | }
21 |
22 | public abstract TConfig createConfig();
23 |
24 | public void checkNotNulls() {
25 | Preconditions.checkNotNull(configBase);
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/constants/ExecutionPhase.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.constants;
2 |
3 | public enum ExecutionPhase {
4 | READ("Read"), //
5 | CHECK("Check"), //
6 | TRANSFORMATION("Transformation"), //
7 | RECHECK("Recheck"), //
8 | ;
9 |
10 | private String name;
11 |
12 | ExecutionPhase(final String name) {
13 | this.name = name;
14 | }
15 |
16 | @Override
17 | public String toString() {
18 | return name;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/constants/Position.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.constants;
14 |
15 | public enum Position {
16 | FAILURE, STRAIGHT, DIVERGING
17 | }
18 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/constants/Signal.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.constants;
14 |
15 | public enum Signal {
16 | FAILURE, STOP, GO
17 | }
18 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/constants/TrainBenchmarkConstants.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.constants;
14 |
15 | public class TrainBenchmarkConstants {
16 |
17 | public static final long RANDOM_SEED = 19871053l;
18 | public static final int DEFAULT_SEGMENT_LENGTH = 500;
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/java/hu/bme/mit/trainbenchmark/constants/TransformationStrategy.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.constants;
14 |
15 | public enum TransformationStrategy {
16 | FIXED, PROPORTIONAL,
17 | }
18 |
--------------------------------------------------------------------------------
/trainbenchmark-config/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-config/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/.gitignore:
--------------------------------------------------------------------------------
1 | !.project
2 | !.classpath
3 | /target
4 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Bundle-ManifestVersion: 2
3 | Bundle-Name: Railway EMF Model
4 | Bundle-SymbolicName: trainbenchmark-format-emf-model;singleton:=true
5 | Bundle-Version: 1.0.0.qualifier
6 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/build.properties:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | # All rights reserved. This program and the accompanying materials
4 | # are made available under the terms of the Eclipse Public License v1.0
5 | # which accompanies this distribution, and is available at
6 | # http://www.eclipse.org/legal/epl-v10.html
7 | #
8 | # Contributors:
9 | # Benedek Izso - initial API and implementation
10 | # Gabor Szarnyas - initial API and implementation
11 | ###############################################################################
12 | #
13 |
14 | bin.includes = .,\
15 | model/,\
16 | META-INF/,\
17 | plugin.xml,\
18 | plugin.properties
19 | jars.compile.order = .
20 | source.. = src/main/java/
21 | output.. = bin/
22 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/plugin.properties:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | # All rights reserved. This program and the accompanying materials
4 | # are made available under the terms of the Eclipse Public License v1.0
5 | # which accompanies this distribution, and is available at
6 | # http://www.eclipse.org/legal/epl-v10.html
7 | #
8 | # Contributors:
9 | # Benedek Izso - initial API and implementation
10 | # Gabor Szarnyas - initial API and implementation
11 | ###############################################################################
12 | #
13 |
14 | pluginName = Railway Model
15 | providerName = www.example.org
16 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf-model/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-tool')
3 | compile project(':trainbenchmark-format-emf-model')
4 | }
5 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf/src/main/java/hu/bme/mit/trainbenchmark/emf/EmfConstants.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.emf;
2 |
3 | public class EmfConstants {
4 |
5 | public static final String MODEL_EXTENSION = "xmi";
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf/src/main/java/hu/bme/mit/trainbenchmark/emf/EmfUtil.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.emf;
2 |
3 | import org.eclipse.emf.ecore.resource.Resource;
4 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
5 |
6 | public class EmfUtil {
7 |
8 | public static void registerExtension() {
9 | Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(EmfConstants.MODEL_EXTENSION, new XMIResourceFactoryImpl());
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/trainbenchmark-format-emf/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-format-emf/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-format-graph-neo4j/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-config')
3 | compile group: 'org.neo4j', name: 'neo4j-cypher', version: neo4jVersion
4 | compile group: 'org.neo4j', name: 'neo4j-io', version: neo4jVersion
5 | compile group: 'org.neo4j', name: 'neo4j-kernel', version: neo4jVersion
6 | compile group: 'org.neo4j', name: 'neo4j-io', version: neo4jVersion, classifier: 'tests'
7 | compile group: 'org.neo4j', name: 'neo4j-kernel', version: neo4jVersion, classifier: 'tests'
8 | compile group: 'org.neo4j.procedure', name: 'apoc', version: neo4jApocVersion
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/trainbenchmark-format-graph-neo4j/src/main/java/hu/bme/mit/trainbenchmark/neo4j/apoc/ApocHelper.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.neo4j.apoc;
2 |
3 | import org.neo4j.graphdb.GraphDatabaseService;
4 | import org.neo4j.kernel.api.exceptions.KernelException;
5 | import org.neo4j.kernel.impl.proc.Procedures;
6 | import org.neo4j.kernel.internal.GraphDatabaseAPI;
7 |
8 | public class ApocHelper {
9 |
10 | // https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/a4423863ce77ef51c5d94cdbdc65d8a09172821b/src/test/java/apoc/util/TestUtil.java
11 | public static void registerProcedure(GraphDatabaseService db, Class>...procedures) throws KernelException {
12 | Procedures proceduresService = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(Procedures.class);
13 | for (Class> procedure : procedures) {
14 | proceduresService.registerProcedure(procedure);
15 | proceduresService.registerFunction(procedure);
16 | }
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/trainbenchmark-format-graph-neo4j/src/main/java/hu/bme/mit/trainbenchmark/neo4j/config/Neo4jDeployment.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.neo4j.config;
2 |
3 | public enum Neo4jDeployment {
4 | EMBEDDED("embedded"),
5 | IN_MEMORY("in-memory");
6 |
7 | private String name;
8 |
9 | Neo4jDeployment(final String name) {
10 | this.name = name;
11 | }
12 |
13 | @Override
14 | public String toString() {
15 | return name;
16 | }
17 |
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/trainbenchmark-format-graph-neo4j/src/main/java/hu/bme/mit/trainbenchmark/neo4j/config/Neo4jGraphFormat.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.neo4j.config;
2 |
3 | public enum Neo4jGraphFormat {
4 | CSV("CSV"), //
5 | GRAPHML("GraphML"), //
6 | CYPHER("Cypher"),
7 | ;
8 |
9 | private String name;
10 |
11 | Neo4jGraphFormat(final String name) {
12 | this.name = name;
13 | }
14 |
15 | @Override
16 | public String toString() {
17 | return name;
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/README.md:
--------------------------------------------------------------------------------
1 | #### Visualization script
2 |
3 | For visualizing RDF models, you can use the `graphviz` and `rapper` tools:
4 |
5 | ```bash
6 | sudo apt-get install -y rapper graphviz
7 | ```
8 |
9 | Usage:
10 |
11 | ```bash
12 | MODEL=railway-repair-1
13 | rapper -i turtle $MODEL.ttl -o dot | dot -Tpdf > $MODEL.pdf
14 | ```
15 |
16 | You may use `fdp`, `neato`, `twopi` or `circo` instead of `dot`.
17 |
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-tool')
3 | }
4 |
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/src/main/java/hu/bme/mit/trainbenchmark/rdf/RdfFormat.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.rdf;
2 |
3 | public enum RdfFormat {
4 | TURTLE("ttl"), NTRIPLES("nt");
5 |
6 | private String extension;
7 |
8 | RdfFormat(final String extension) {
9 | this.extension = extension;
10 | }
11 |
12 | public String getExtension() {
13 | return extension;
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/src/main/resources/metamodel/railway-inferred.nt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-format-rdf/src/main/resources/metamodel/railway-inferred.nt
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/src/main/resources/metamodel/railway-inferred.ttl:
--------------------------------------------------------------------------------
1 | @prefix : .
2 | @prefix xsd: .
3 |
4 |
--------------------------------------------------------------------------------
/trainbenchmark-format-rdf/src/main/resources/metamodel/railway-metamodel.nt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-format-rdf/src/main/resources/metamodel/railway-metamodel.nt
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-tool')
3 | }
4 |
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/scripts/README.md:
--------------------------------------------------------------------------------
1 | The `mysql2sqlite.sh` script is distributed under the MIT license. Source: https://github.com/dumblob/mysql2sqlite
2 |
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/scripts/clean-mysql.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo rm -rf /var/lib/mysql/trainbenchmark
4 | #echo "MySQL cleaned"
5 |
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/scripts/start-mysql.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo service mysql start
4 | echo "SET GLOBAL max_heap_table_size=1073741824;" | mysql -u root
5 | #echo "MySQL started"
6 |
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/scripts/stop-mysql.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo service mysql stop
4 | #echo "MySQL stopped"
5 |
--------------------------------------------------------------------------------
/trainbenchmark-format-sql/src/main/resources/metamodel/railway-footer.sql:
--------------------------------------------------------------------------------
1 |
2 | COMMIT;
3 | CREATE INDEX segment_length_idx ON "Segment" ("length");
4 | CREATE INDEX route_active_idx ON "Route" ("active");
5 | CREATE INDEX semaphore_signal_idx ON "Semaphore" ("signal");
6 | CREATE INDEX monitoredBy_idx ON "monitoredBy" ("Sensor_id", "TrackElement_id");
7 | CREATE INDEX connectsTo_idx1 ON "connectsTo" ("TrackElement1_id");
8 | CREATE INDEX connectsTo_idx2 ON "connectsTo" ("TrackElement2_id");
9 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-emf/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.emf.EmfGeneratorMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-tool')
10 | compile project(':trainbenchmark-format-emf')
11 | compile project(':trainbenchmark-generator')
12 | compile group: 'org.eclipse.emf', name: 'org.eclipse.emf.common', version: emfVersion
13 | compile group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore.xmi', version: emfVersion
14 | compile group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore', version: emfVersion
15 | }
16 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-emf/src/main/java/hu/bme/mit/trainbenchmark/generator/emf/config/EmfGeneratorConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.emf.config;
2 |
3 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
4 |
5 | public class EmfGeneratorConfigBuilder
6 | extends GeneratorConfigBuilder {
7 |
8 | @Override
9 | public EmfGeneratorConfig createConfig() {
10 | checkNotNulls();
11 | return new EmfGeneratorConfig(configBase);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-emf/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-generator-emf/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-generator-emf/src/test/java/hu/bme/mit/trainbenchmark/generator/emf/test/EmfGeneratorTest.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.emf.test;
2 |
3 | import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
4 | import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
5 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
6 | import hu.bme.mit.trainbenchmark.generator.emf.EmfSerializer;
7 | import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfig;
8 | import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder;
9 | import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
10 |
11 | public class EmfGeneratorTest extends GeneratorTest {
12 |
13 | @Override
14 | public void generate(final GeneratorConfigBase gcb) throws Exception {
15 | final EmfGeneratorConfig gc = new EmfGeneratorConfigBuilder().setConfigBase(gcb).createConfig();
16 | final EmfSerializer serializer = new EmfSerializer(gc);
17 | final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
18 | generator.generateModel();
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-cypher/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.cypher.CypherGeneratorMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-generator')
10 | //compile project(':trainbenchmark-format-graph-neo4j')
11 | }
12 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-cypher/src/main/java/hu/bme/mit/trainbenchmark/generator/cypher/config/CypherFormat.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.cypher.config;
2 |
3 | public enum CypherFormat {
4 | BASIC("Basic"), //
5 | GRAPHFLOW("Graphflow"), //
6 | ;
7 |
8 | private String name;
9 |
10 | CypherFormat(final String name) {
11 | this.name = name;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 | return name;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-cypher/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-generator-graph-cypher/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-neo4j/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-neo4j/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | mergeServiceFiles()
6 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.graph.neo4j.Neo4jGraphGeneratorMain' }
7 | }
8 |
9 | dependencies {
10 | compile group: 'commons-io', name: 'commons-io', version: commonsIoVersion
11 | compile project(':trainbenchmark-generator')
12 | compile project(':trainbenchmark-format-graph-neo4j')
13 | }
14 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-tinkerpop/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-tinkerpop/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.TinkerGraphGeneratorMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-generator')
10 | compile group: 'org.apache.tinkerpop', name: 'tinkergraph-gremlin', version: tinkerGraphVersion
11 | compile group: 'org.slf4j', name: 'slf4j-nop', version: slf4jVersion
12 | }
13 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-tinkerpop/src/main/java/hu/bme/mit/trainbenchmark/generator/graph/tinkerpop/config/TinkerGraphFormat.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config;
2 |
3 | public enum TinkerGraphFormat {
4 | GRAPHML("GraphML"), //
5 | GRAPHSON("GraphSON"), //
6 | GRYO("Gryo");
7 |
8 | private String name;
9 |
10 | TinkerGraphFormat(final String name) {
11 | this.name = name;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 | return name;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-graph-tinkerpop/src/main/java/hu/bme/mit/trainbenchmark/generator/graph/tinkerpop/config/TinkerGraphGeneratorConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config;
2 |
3 | import com.google.common.base.Preconditions;
4 |
5 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
6 |
7 | public class TinkerGraphGeneratorConfigBuilder
8 | extends GeneratorConfigBuilder {
9 |
10 | protected TinkerGraphFormat graphFormat;
11 |
12 | public TinkerGraphGeneratorConfigBuilder setGraphFormat(TinkerGraphFormat graphFormat) {
13 | this.graphFormat = graphFormat;
14 | return this;
15 | }
16 |
17 | @Override
18 | public TinkerGraphGeneratorConfig createConfig() {
19 | return new TinkerGraphGeneratorConfig(configBase, graphFormat);
20 | }
21 |
22 | @Override
23 | public void checkNotNulls() {
24 | super.checkNotNulls();
25 | Preconditions.checkNotNull(graphFormat);
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-rdf/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-rdf/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.rdf.RdfGeneratorMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-generator')
10 | compile project(':trainbenchmark-format-rdf')
11 | compile group: 'org.slf4j', name: 'slf4j-nop', version: slf4jVersion
12 | compile group: 'org.openrdf.sesame', name: 'sesame-model', version: sesameVersion
13 | compile group: 'org.openrdf.sesame', name: 'sesame-repository-sail', version: sesameVersion
14 | compile group: 'org.openrdf.sesame', name: 'sesame-sail-memory', version: sesameVersion
15 | compile group: 'org.openrdf.sesame', name: 'sesame-repository-contextaware', version: sesameVersion
16 | compile group: 'org.openrdf.sesame', name: 'sesame-rio-rdfxml', version: sesameVersion
17 | compile group: 'org.openrdf.sesame', name: 'sesame-rio-turtle', version: sesameVersion
18 | }
19 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-rdf/src/main/java/hu/bme/mit/trainbenchmark/generator/rdf/config/RdfGeneratorConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.rdf.config;
2 |
3 | import com.google.common.base.Preconditions;
4 |
5 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
6 | import hu.bme.mit.trainbenchmark.rdf.RdfFormat;
7 |
8 | public class RdfGeneratorConfigBuilder extends GeneratorConfigBuilder {
9 |
10 | protected Boolean inferred;
11 | protected RdfFormat format;
12 |
13 | public RdfGeneratorConfigBuilder setInferred(Boolean inferred) {
14 | this.inferred = inferred;
15 | return this;
16 | }
17 |
18 | public RdfGeneratorConfigBuilder setFormat(RdfFormat format) {
19 | this.format = format;
20 | return this;
21 | }
22 |
23 | @Override
24 | public void checkNotNulls() {
25 | super.checkNotNulls();
26 | Preconditions.checkNotNull(inferred);
27 | Preconditions.checkNotNull(format);
28 | }
29 |
30 | @Override
31 | public RdfGeneratorConfig createConfig() {
32 | checkNotNulls();
33 | return new RdfGeneratorConfig(configBase, inferred, format);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-rdf/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-generator-rdf/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-generator-sql/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.generator.sql.SqlGeneratorMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-generator')
10 | compile project(':trainbenchmark-format-sql')
11 | }
12 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-sql/src/main/java/hu/bme/mit/trainbenchmark/generator/sql/config/SqlGeneratorConfigBuilder.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 |
13 | package hu.bme.mit.trainbenchmark.generator.sql.config;
14 |
15 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
16 |
17 | public class SqlGeneratorConfigBuilder extends GeneratorConfigBuilder {
18 |
19 | @Override
20 | public SqlGeneratorConfig createConfig() {
21 | checkNotNulls();
22 | return new SqlGeneratorConfig(configBase);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/trainbenchmark-generator-sql/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-generator-sql/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-generator-sql/src/test/java/hu/bme/mit/trainbenchmark/generator/sql/SqlGeneratorTest.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.sql;
2 |
3 | import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
4 | import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
5 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
6 | import hu.bme.mit.trainbenchmark.generator.sql.config.SqlGeneratorConfig;
7 | import hu.bme.mit.trainbenchmark.generator.sql.config.SqlGeneratorConfigBuilder;
8 | import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
9 |
10 | public class SqlGeneratorTest extends GeneratorTest {
11 |
12 | @Override
13 | public void generate(final GeneratorConfigBase gcb) throws Exception {
14 | final SqlGeneratorConfig gc = new SqlGeneratorConfigBuilder().setConfigBase(gcb).createConfig();
15 | final SqlSerializer serializer = new SqlSerializer(gc);
16 | final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
17 | generator.generateModel();
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-config')
3 | compile group: 'org.apache.commons', name: 'commons-exec', version: commonsExecVersion
4 | compile group: 'junit', name: 'junit', version: junitVersion
5 | }
6 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/ModelGenerator.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator;
2 |
3 | import java.io.FileNotFoundException;
4 | import java.io.IOException;
5 |
6 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
7 |
8 | public abstract class ModelGenerator {
9 |
10 | protected final ModelSerializer> serializer;
11 | protected GeneratorConfig gc;
12 |
13 | public ModelGenerator(final ModelSerializer> serializer, final GeneratorConfig gc) {
14 | this.serializer = serializer;
15 | this.gc = gc;
16 | }
17 |
18 | public void generateModel() throws Exception {
19 | final StringBuilder messageBuilder = new StringBuilder();
20 | messageBuilder.append("Generating instance model, ");
21 | messageBuilder.append("generator: " + serializer.syntax() + ", ");
22 | messageBuilder.append("size: " + gc.getConfigBase().getSize());
23 | messageBuilder.append("... ");
24 | System.out.print(messageBuilder.toString());
25 | serializer.initModel();
26 | constructModel();
27 | serializer.persistModel();
28 | System.out.println("Done.");
29 | }
30 |
31 | protected abstract void constructModel() throws FileNotFoundException, IOException;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/config/GeneratorConfig.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.config;
2 |
3 | import hu.bme.mit.trainbenchmark.config.AbstractConfig;
4 |
5 | public abstract class GeneratorConfig extends AbstractConfig {
6 |
7 | public GeneratorConfig(final GeneratorConfigBase configBase) {
8 | super(configBase);
9 | }
10 |
11 | /**
12 | * @return The name of the project to be executed. Example: "emf"
13 | */
14 | public abstract String getProjectName();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/config/GeneratorConfigBaseBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.config;
2 |
3 | import com.google.common.base.Preconditions;
4 |
5 | public final class GeneratorConfigBaseBuilder {
6 | private Scenario scenario;
7 | private Integer size;
8 |
9 | public GeneratorConfigBaseBuilder setScenario(Scenario scenario) {
10 | this.scenario = scenario;
11 | return this;
12 | }
13 |
14 | public GeneratorConfigBaseBuilder setSize(int size) {
15 | this.size = size;
16 | return this;
17 | }
18 |
19 | public GeneratorConfigBase createGeneratorConfigBase() {
20 | Preconditions.checkNotNull(scenario);
21 | Preconditions.checkNotNull(size);
22 | return new GeneratorConfigBase(scenario, size);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/config/GeneratorConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.config;
2 |
3 | import hu.bme.mit.trainbenchmark.config.AbstractConfigBuilder;
4 |
5 | public abstract class GeneratorConfigBuilder
6 | >
7 | extends AbstractConfigBuilder
8 | {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/config/Scenario.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 | package hu.bme.mit.trainbenchmark.generator.config;
13 |
14 | public enum Scenario {
15 | BATCH("Batch"), //
16 | INJECT("Inject"), //
17 | REPAIR("Repair"), //
18 | MINIMAL("Minimal");
19 |
20 | private String name;
21 |
22 | Scenario(final String name) {
23 | this.name = name;
24 | }
25 |
26 | @Override
27 | public String toString() {
28 | return name;
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/minimal/MinimalModelGenerator.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.minimal;
2 |
3 | import java.io.FileNotFoundException;
4 | import java.io.IOException;
5 |
6 | import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
7 | import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
8 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
9 |
10 | public abstract class MinimalModelGenerator extends ModelGenerator {
11 |
12 | public MinimalModelGenerator(final ModelSerializer> serializer, final GeneratorConfig generatorConfig) {
13 | super(serializer, generatorConfig);
14 | }
15 |
16 | @Override
17 | protected void constructModel() throws FileNotFoundException, IOException {
18 | serializer.beginTransaction();
19 | buildPatternModel();
20 | serializer.endTransaction();
21 | }
22 |
23 | protected abstract void buildPatternModel() throws FileNotFoundException, IOException;
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/minimal/MinimalSwitchMonitoredGenerator.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.minimal;
2 |
3 | import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ELEMENTS;
4 | import static hu.bme.mit.trainbenchmark.constants.ModelConstants.REGION;
5 | import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCH;
6 |
7 | import java.io.FileNotFoundException;
8 | import java.io.IOException;
9 |
10 | import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
11 | import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
12 |
13 | public class MinimalSwitchMonitoredGenerator extends MinimalModelGenerator {
14 |
15 | public MinimalSwitchMonitoredGenerator(final ModelSerializer> serializer, final GeneratorConfig generatorConfig) {
16 | super(serializer, generatorConfig);
17 | }
18 |
19 | @Override
20 | protected void buildPatternModel() throws FileNotFoundException, IOException {
21 | final Object region = serializer.createVertex(REGION);
22 | final Object sw = serializer.createVertex(SWITCH);
23 |
24 | serializer.createEdge(ELEMENTS, region, sw);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/utils/ZipIterator.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.utils;
2 |
3 | public interface ZipIterator {
4 | void each(T t, U u);
5 | }
6 |
--------------------------------------------------------------------------------
/trainbenchmark-generator/src/main/java/hu/bme/mit/trainbenchmark/generator/utils/ZipUtils.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.generator.utils;
2 |
3 | import java.util.Iterator;
4 | import java.util.stream.Stream;
5 |
6 | public class ZipUtils {
7 | public static boolean zip(final Iterable ct, final Stream cu, final ZipIterator each) {
8 | final Iterator it = ct.iterator();
9 | final Iterator iu = cu.iterator();
10 | while (it.hasNext() && iu.hasNext()) {
11 | each.each(it.next(), iu.next());
12 | }
13 | return !it.hasNext() && !iu.hasNext();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/trainbenchmark-reporting/.gitignore:
--------------------------------------------------------------------------------
1 | Rplots.pdf
2 |
3 |
--------------------------------------------------------------------------------
/trainbenchmark-reporting/build.gradle:
--------------------------------------------------------------------------------
1 | task plot(type: Exec) {
2 | commandLine 'Rscript', 'report.R'
3 | }
4 |
5 | task plotIndividual(type: Exec) {
6 | commandLine 'Rscript', 'individual.R'
7 | }
--------------------------------------------------------------------------------
/trainbenchmark-reporting/install.R:
--------------------------------------------------------------------------------
1 | install.packages(c("ggplot2", "plyr", "ggrepel", "data.table", "arules", "purrr"), repos = "http://cran.rstudio.com/")
2 |
--------------------------------------------------------------------------------
/trainbenchmark-reporting/reporting.Rproj:
--------------------------------------------------------------------------------
1 | Version: 1.0
2 |
3 | RestoreWorkspace: Default
4 | SaveWorkspace: Default
5 | AlwaysSaveHistory: Default
6 |
7 | EnableCodeIndexing: Yes
8 | UseSpacesForTab: Yes
9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 |
12 | RnwWeave: Sweave
13 | LaTeX: pdfLaTeX
14 |
--------------------------------------------------------------------------------
/trainbenchmark-reporting/tool-list.csv:
--------------------------------------------------------------------------------
1 | Tool
2 | EMF API
3 | Jena (Inferencing)
4 | Jena (No Inferencing)
5 | MySQL
6 | Neo4j (Core API-CSV)
7 | Neo4j (Cypher-GraphML)
8 | SQLite
9 | TinkerGraph
10 | VIATRA (Incremental)
11 | VIATRA (Local Search)
12 |
--------------------------------------------------------------------------------
/trainbenchmark-reporting/tools.csv:
--------------------------------------------------------------------------------
1 | tool,format,storage
2 | EMF API,EMF,in-memory
3 | VIATRA (Incremental),EMF,in-memory
4 | VIATRA (Local Search),EMF,in-memory
5 | Neo4j (Core API-CSV),property graph,disk-resident
6 | Neo4j (Cypher-CSV),property graph,disk-resident
7 | Neo4j (Core API-GraphML),property graph,disk-resident
8 | Neo4j (Cypher-GraphML),property graph,disk-resident
9 | Neo4j (Core API-Binary),property graph,disk-resident
10 | Neo4j (Cypher-Binary),property graph,disk-resident
11 | TinkerGraph,property graph,in-memory
12 | Jena (Inferencing),RDF,in-memory
13 | Jena (No Inferencing),RDF,in-memory
14 | MySQL,SQL,disk-resident
15 | SQLite,SQL,in-memory
16 |
--------------------------------------------------------------------------------
/trainbenchmark-scripts/diff.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | diff -x .gitignore src/ src-template/
4 |
--------------------------------------------------------------------------------
/trainbenchmark-scripts/src/.gitignore:
--------------------------------------------------------------------------------
1 | *.groovy
2 |
--------------------------------------------------------------------------------
/trainbenchmark-server/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | dependencies {
3 | classpath group: 'org.akhikhl.gretty', name: 'gretty', version: '1.4.1'
4 | }
5 | repositories {
6 | jcenter()
7 | }
8 | }
9 |
10 | apply plugin: 'org.akhikhl.gretty'
11 |
12 | task page() {
13 | doLast {
14 | copy {
15 | from '../trainbenchmark-reporting'
16 | into 'src/main/webapp/diagrams'
17 | include '*.pdf'
18 | }
19 |
20 | copy {
21 | from '../diagrams'
22 | into 'src/main/webapp/diagrams'
23 | include '*.pdf'
24 | }
25 |
26 | appRun.contextPath = ''
27 | appRun.inplaceMode = 'hard'
28 | appRun.execute()
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/trainbenchmark-server/src/main/webapp/diagrams/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/trainbenchmark-server/src/main/webapp/index.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | compile project(':trainbenchmark-tool')
3 | compile project(':trainbenchmark-format-emf')
4 | }
5 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emf/comparators/EmfMatchComparator.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 | package hu.bme.mit.trainbenchmark.benchmark.emf.comparators;
13 |
14 | import hu.bme.mit.trainbenchmark.benchmark.emf.matches.EmfMatch;
15 | import hu.bme.mit.trainbenchmark.benchmark.matches.comparators.BaseMatchComparator;
16 | import hu.bme.mit.trainbenchmark.railway.RailwayElement;
17 |
18 | public class EmfMatchComparator extends BaseMatchComparator {
19 |
20 | public EmfMatchComparator() {
21 | super(new RailwayElementComparator());
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emf/comparators/RailwayElementComparator.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 | package hu.bme.mit.trainbenchmark.benchmark.emf.comparators;
13 |
14 | import java.util.Comparator;
15 |
16 | import hu.bme.mit.trainbenchmark.railway.RailwayElement;
17 |
18 | public class RailwayElementComparator implements Comparator {
19 |
20 | @Override
21 | public int compare(final RailwayElement e1, final RailwayElement e2) {
22 | final int id1 = e1.getId();
23 | final int id2 = e2.getId();
24 | return Integer.compare(id1, id2);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emf/driver/EmfDriverFactory.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.benchmark.emf.driver;
2 |
3 | import hu.bme.mit.trainbenchmark.benchmark.driver.DriverFactory;
4 |
5 | public class EmfDriverFactory extends DriverFactory {
6 |
7 | @Override
8 | public EmfDriver createInstance() throws Exception {
9 | return new EmfDriver();
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emf/matches/EmfMatch.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the Eclipse Public License v1.0
5 | * which accompanies this distribution, and is available at
6 | * http://www.eclipse.org/legal/epl-v10.html
7 | *
8 | * Contributors:
9 | * Benedek Izso - initial API and implementation
10 | * Gabor Szarnyas - initial API and implementation
11 | *******************************************************************************/
12 | package hu.bme.mit.trainbenchmark.benchmark.emf.matches;
13 |
14 | import java.util.Arrays;
15 |
16 | import hu.bme.mit.trainbenchmark.benchmark.matches.BaseMatch;
17 |
18 | public abstract class EmfMatch extends BaseMatch {
19 |
20 | @Override
21 | public String toString() {
22 | return "EMFMatch [match=" + Arrays.toString(toArray()) + "]";
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emf/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-tool-emf/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-tool-emfapi/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.benchmark.emfapi.EmfApiBenchmarkMain' }
6 | }
7 |
8 | dependencies {
9 | compile project(':trainbenchmark-tool-emf')
10 | }
11 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emfapi/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emfapi/EmfApiBenchmarkScenario.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.benchmark.emfapi;
2 |
3 | import hu.bme.mit.trainbenchmark.benchmark.emf.comparators.EmfMatchComparator;
4 | import hu.bme.mit.trainbenchmark.benchmark.emf.driver.EmfDriver;
5 | import hu.bme.mit.trainbenchmark.benchmark.emf.driver.EmfDriverFactory;
6 | import hu.bme.mit.trainbenchmark.benchmark.emf.matches.EmfMatch;
7 | import hu.bme.mit.trainbenchmark.benchmark.emfapi.config.EmfApiBenchmarkConfig;
8 | import hu.bme.mit.trainbenchmark.benchmark.emfapi.operations.EmfApiModelOperationFactory;
9 | import hu.bme.mit.trainbenchmark.benchmark.phases.BenchmarkScenario;
10 |
11 | public class EmfApiBenchmarkScenario
12 | extends BenchmarkScenario {
13 |
14 | public EmfApiBenchmarkScenario(final EmfApiBenchmarkConfig bc) throws Exception {
15 | super(new EmfDriverFactory(), new EmfApiModelOperationFactory(), new EmfMatchComparator(), bc);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emfapi/src/main/java/hu/bme/mit/trainbenchmark/benchmark/emfapi/config/EmfApiBenchmarkConfigBuilder.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.benchmark.emfapi.config;
2 |
3 | import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
4 |
5 | public class EmfApiBenchmarkConfigBuilder
6 | extends BenchmarkConfigBuilder {
7 |
8 | @Override
9 | public EmfApiBenchmarkConfig createConfig() {
10 | checkNotNulls();
11 | return new EmfApiBenchmarkConfig(configBase);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-emfapi/src/main/resources/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ftsrg/trainbenchmark/9c76520dec5a26213707b0e1f04b263f16b340ee/trainbenchmark-tool-emfapi/src/main/resources/.gitignore
--------------------------------------------------------------------------------
/trainbenchmark-tool-ingraph/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /native
3 | results/
4 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-ingraph/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.johnrengelman.shadow'
2 |
3 | shadowJar {
4 | classifier = 'fat'
5 | manifest { attributes 'Main-Class': 'hu.bme.mit.trainbenchmark.benchmark.ingraph.IngraphBenchmarkMain' }
6 | }
7 |
8 | repositories {
9 | mavenLocal()
10 | maven { url "https://dl.bintray.com/ftsrg/maven" }
11 | }
12 |
13 | dependencies {
14 | compile project(':trainbenchmark-tool')
15 | compile project(':trainbenchmark-tool-ingraph-query-plans')
16 | compile group: 'ingraph', name: 'ingraph-ire', version: ingraphVersion
17 | compile 'com.github.jbellis:jamm:0.3.1'
18 | }
19 |
--------------------------------------------------------------------------------
/trainbenchmark-tool-ingraph/src/main/java/hu/bme/mit/trainbenchmark/benchmark/ingraph/IngraphUtils.java:
--------------------------------------------------------------------------------
1 | package hu.bme.mit.trainbenchmark.benchmark.ingraph;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import relalg.RelalgContainer;
6 |
7 | public class IngraphUtils {
8 | public static RelalgContainer getQueryPlan(final String name, final String variant) throws
9 | Exception {
10 | final String prefix = "ingraph.trainbenchmark.";
11 | final Class> factoryClass = Class.forName(prefix + name + "QueryPlanFactory");
12 | final Method declaredMethod = factoryClass.getDeclaredMethod(decapitalize(name) + variant);
13 | final Object factory = factoryClass.getConstructor().newInstance();
14 | return (RelalgContainer) declaredMethod.invoke(factory);
15 | }
16 |
17 | private static String decapitalize(final String string) {
18 | return Character.toLowerCase(string.charAt(0)) + string.substring(1);
19 | }
20 |
21 | // static Map