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