diff --git a/src/test/resources/ecore/Train.ecore b/src/test/resources/ecore/Train.ecore
index facdc1435018648bde3fb7f78c4b5b997f113358..9729366fb1466d8b03542e461e7913548e2b43a7 100644
--- a/src/test/resources/ecore/Train.ecore
+++ b/src/test/resources/ecore/Train.ecore
@@ -58,10 +58,10 @@
   <eClassifiers xsi:type="ecore:EClass" name="SwitchPosition" eSuperTypes="#//RailwayElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" unique="false"
         eType="#//Position"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="route" eType="#//Route"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="route" lowerBound="1" eType="#//Route"
         eOpposite="#//Route/follows"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//Switch"
-        eOpposite="#//Switch/positions"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+        eType="#//Switch" eOpposite="#//Switch/positions"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Semaphore" eSuperTypes="#//RailwayElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="signal" unique="false"
diff --git a/src/test/resources/ecore/railway.xcore b/src/test/resources/ecore/railway.xcore
new file mode 100644
index 0000000000000000000000000000000000000000..c6b52a4c834bcc1909813c80becf94dbd26c2526
--- /dev/null
+++ b/src/test/resources/ecore/railway.xcore
@@ -0,0 +1,68 @@
+@Ecore(nsURI="http://www.semanticweb.org/ontologies/2015/trainbenchmark")
+@GenModel(bundleManifest="false",
+    modelDirectory="trainbenchmark-format-emf-model/build/xcore/main",
+    complianceLevel="8.0")
+package hu.bme.mit.trainbenchmark.railway
+
+abstract class RailwayElement {
+	int ^id
+}
+
+class RailwayContainer {
+	contains Route[] routes
+	contains Region[] regions
+}
+
+class Region extends RailwayElement {
+	contains Sensor[] sensors
+	contains TrackElement[] elements
+}
+
+class Route extends RailwayElement {
+	boolean active
+	contains SwitchPosition[] follows opposite route
+	refers Sensor[2..*] requires
+	refers Semaphore entry
+	refers Semaphore exit
+}
+
+class Sensor extends RailwayElement {
+	refers TrackElement[] monitors opposite monitoredBy
+}
+
+abstract class TrackElement extends RailwayElement {
+	refers Sensor[] monitoredBy opposite monitors
+	refers TrackElement[] connectsTo
+}
+
+class Segment extends TrackElement {
+	int length
+	contains Semaphore[] semaphores
+}
+
+class Switch extends TrackElement {
+	Position currentPosition
+	refers SwitchPosition[] positions opposite target
+}
+
+class SwitchPosition extends RailwayElement {
+	Position position
+	refers Route route opposite follows
+	refers Switch target opposite positions 
+}
+
+class Semaphore extends RailwayElement {
+	Signal signal
+}
+
+enum Position {
+	FAILURE = 0
+	STRAIGHT = 1
+	DIVERGING = 2
+}
+
+enum Signal {
+	FAILURE = 0
+	STOP = 1
+	GO = 2
+}
diff --git a/src/test/resources/ecore/statemachine.ecore b/src/test/resources/ecore/statemachine.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..c6cc5bbffcdb38a19ab06ec0ed4ad45d0c4f4ffa
--- /dev/null
+++ b/src/test/resources/ecore/statemachine.ecore
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+                xmi:version="2.0" name="statemachine"
+                nsURI="http://www.example.org/statemachine" nsPrefix="statemachine">
+    <eClassifiers xsi:type="ecore:EClass" name="StateMachine">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="element" upperBound="-1" eType="#//Element"
+                             containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="initial" lowerBound="1" eType="#//State"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="final" upperBound="-1" eType="#//State"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="label"
+                             eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Element">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" upperBound="-1"
+                             eType="#//Transition" eOpposite="#//Transition/from"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1" eType="#//Transition"
+                             eOpposite="#//Transition/to"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Element">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1" eType="#//State"
+                             eOpposite="#//State/outgoing"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//State"
+                             eOpposite="#//State/incoming"/>
+    </eClassifiers>
+</ecore:EPackage>
diff --git a/src/test/resources/relast/Train.relast b/src/test/resources/relast/Train.relast
new file mode 100644
index 0000000000000000000000000000000000000000..5cf2302c2bd4b76a082ef47e13f1de2157e52ad3
--- /dev/null
+++ b/src/test/resources/relast/Train.relast
@@ -0,0 +1,19 @@
+RailwayContainer ::= Route* Region*;
+
+abstract RailwayElement ::= <Id:int>;
+Region : RailwayElement ::= TrackElement* Sensor*;
+Semaphore : RailwayElement ::= <Signal:Signal>;
+Route : RailwayElement ::= <Active:boolean> SwitchPosition*;
+SwitchPosition : RailwayElement ::= <Position:Position>;
+Sensor : RailwayElement;
+
+abstract TrackElement : RailwayElement;
+Segment : TrackElement ::= <Length:int> Semaphore*;
+Switch : TrackElement ::= <CurrentPosition:Position>;
+
+rel Route.requires* <-> Sensor.requiredBy*;
+rel Route.entry? -> Semaphore;
+rel Route.exit? -> Semaphore;
+rel Sensor.monitors* <-> TrackElement.monitoredBy*;
+rel TrackElement.connectsTo* -> TrackElement;
+rel SwitchPosition.target <-> Switch.positions*;
\ No newline at end of file