aboutsummaryrefslogtreecommitdiffstats
path: root/Domains
diff options
context:
space:
mode:
Diffstat (limited to 'Domains')
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/META-INF/MANIFEST.MF18
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore138
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml48
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/META-INF/MANIFEST.MF24
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/model/FileSytem.ecore64
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/plugin.xml50
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/.gitignore8
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/ContentInNotLive.java741
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/DirectSupertype.java692
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Live.java730
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/LoopInInheritence.java548
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/NonSymmetricOpposite.java707
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Opposite.java693
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/OppositeDifferentClass.java577
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/PatternContent.java693
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.classpath7
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.project29
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/META-INF/MANIFEST.MF7
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/README.md7
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.aird828
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.ecore81
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.genmodel62
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.classpath10
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.gitignore1
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.project41
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/META-INF/MANIFEST.MF28
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/build.properties11
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/configs/generation.vsconfig25
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/AntennaGain.java242
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommSubsystem.java83
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommunicatingElement.java69
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/ConstellationMission.java69
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat3U.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat6U.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/DirectedCommunicationLink.java77
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/GroundStationNetwork.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryMission.java49
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryPayload.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Payload.java18
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatelliteFactory.java105
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatellitePackage.java1306
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SmallSat.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Spacecraft.java66
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SpacecraftKind.java241
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/TransceiverBand.java242
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommSubsystemImpl.java226
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommunicatingElementImpl.java237
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/ConstellationMissionImpl.java237
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat3UImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat6UImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSatImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/DirectedCommunicationLinkImpl.java227
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/GroundStationNetworkImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryMissionImpl.java166
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryPayloadImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/PayloadImpl.java39
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatelliteFactoryImpl.java294
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatellitePackageImpl.java684
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SmallSatImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SpacecraftImpl.java212
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteAdapterFactory.java347
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteSwitch.java404
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/AntennaGain.java242
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommSubsystem.java83
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommunicatingElement.java69
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/ConstellationMission.java69
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat3U.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat6U.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/DirectedCommunicationLink.java77
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/GroundStationNetwork.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryMission.java49
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryPayload.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Payload.java18
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatelliteFactory.java105
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatellitePackage.java1223
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SmallSat.java16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Spacecraft.java67
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SpacecraftKind.java242
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/TransceiverBand.java242
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommSubsystemImpl.java226
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommunicatingElementImpl.java237
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/ConstellationMissionImpl.java237
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat3UImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat6UImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/DirectedCommunicationLinkImpl.java227
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/GroundStationNetworkImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryMissionImpl.java166
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryPayloadImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/PayloadImpl.java39
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatelliteFactoryImpl.java294
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatellitePackageImpl.java690
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SmallSatImpl.java37
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SpacecraftImpl.java212
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteAdapterFactory.java328
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteSwitch.java374
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/inputs/SatelliteInstance.xmi16
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.aird2225
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore65
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel59
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated3564
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem2103
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel170
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/log.txt1
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.gml1627
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.pngbin0 -> 230838 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.xmi19
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/statistics.csv3
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.properties4
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.xml28
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.CommunicationLinkOfElement.java._tracebin0 -> 5550 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.MultipleCommunicationLinks.java._tracebin0 -> 3530 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.gitignore26
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLinkDoesNotStartAtContainingElement.java579
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLoop.java557
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CubeSatWithKaAntenna.java573
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetBand.java586
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetGain.java582
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/KaAntennaGainLow.java574
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoLinkToGroundStation.java575
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoPotentialLinkToGroundStation.java571
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NotEnoughInterferometryPayloads.java559
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.java196
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SmallSat.java533
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SpacecraftOfKind.java754
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/ThreeUCubeSatWithNonUhfCrossLink.java600
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/UhfAntennaGainNotLow.java576
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/XAntennaGainNotMedium.java570
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/.gitignore38
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AtLeastTwoInterferometryPayloads.java138
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBand.java140
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBandUhf.java138
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGain.java140
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainLow.java138
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainMedium.java138
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CubeSat3U.java127
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/DirectCommunicationLink.java162
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/GroundStationNetwork.java127
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectCommunicationLink.java134
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectLinkAllowed.java134
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/LinkAllowed.java185
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MatchingAntenna.java179
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SatelliteQueriesAll.java123
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithInterferometryPayload.java149
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql344
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend13
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.SatelliteGeneratorMain.xtendbinbin0 -> 2931 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.gitignore1
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.java15
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF18
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml206
151 files changed, 39406 insertions, 283 deletions
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/META-INF/MANIFEST.MF b/Domains/Examples/ModelGenExampleFAM_plugin/META-INF/MANIFEST.MF
index f1f5d18c..077e646b 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/META-INF/MANIFEST.MF
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/META-INF/MANIFEST.MF
@@ -7,16 +7,16 @@ Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: functionalarchitecture, 9Export-Package: functionalarchitecture,
10 functionalarchitecture.impl, 10 functionalarchitecture.impl,
11 functionalarchitecture.util, 11 functionalarchitecture.util,
12 hu.bme.mit.inf.dslreasoner.domains.transima.fam 12 hu.bme.mit.inf.dslreasoner.domains.transima.fam
13Require-Bundle: ModelGenExampleFAM_plugin, 13Require-Bundle: ModelGenExampleFAM_plugin,
14 org.eclipse.viatra.addon.querybasedfeatures.runtime, 14 org.eclipse.viatra.addon.querybasedfeatures.runtime,
15 org.eclipse.viatra.query.runtime, 15 org.eclipse.viatra.query.runtime,
16 org.apache.log4j;bundle-version="1.2.15", 16 org.apache.log4j;bundle-version="1.2.15",
17 com.google.guava;bundle-version="15.0.0", 17 com.google.guava;bundle-version="15.0.0",
18 org.eclipse.core.runtime, 18 org.eclipse.core.runtime,
19 org.eclipse.emf.ecore;visibility:=reexport 19 org.eclipse.emf.ecore;visibility:=reexport
20Bundle-RequiredExecutionEnvironment: JavaSE-1.8 20Bundle-RequiredExecutionEnvironment: JavaSE-1.8
21Bundle-ActivationPolicy: lazy 21Bundle-ActivationPolicy: lazy
22Automatic-Module-Name: ModelGenExampleFAM_plugin 22Automatic-Module-Name: ModelGenExampleFAM_plugin
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
index d8331ba8..9654ba41 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
@@ -1,69 +1,69 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="functionalarchitecture" nsURI="http://www.inf.mit.bme.hu/viatrasolver/example/fam" 3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="functionalarchitecture" nsURI="http://www.inf.mit.bme.hu/viatrasolver/example/fam"
4 nsPrefix="functionalarchitecture"> 4 nsPrefix="functionalarchitecture">
5 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> 5 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
6 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/> 6 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/>
7 </eAnnotations> 7 </eAnnotations>
8 <eClassifiers xsi:type="ecore:EClass" name="FunctionalElement" abstract="true"> 8 <eClassifiers xsi:type="ecore:EClass" name="FunctionalElement" abstract="true">
9 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface" 9 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
10 containment="true" eOpposite="#//FunctionalInterface/element"/> 10 containment="true" eOpposite="#//FunctionalInterface/element"/>
11 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel" 11 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel"
12 volatile="true" transient="true" derived="true"> 12 volatile="true" transient="true" derived="true">
13 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature"> 13 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
14 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/> 14 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/>
15 </eAnnotations> 15 </eAnnotations>
16 </eStructuralFeatures> 16 </eStructuralFeatures>
17 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function" 17 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function"
18 eOpposite="#//Function/subElements"/> 18 eOpposite="#//Function/subElements"/>
19 </eClassifiers> 19 </eClassifiers>
20 <eClassifiers xsi:type="ecore:EClass" name="FunctionalArchitectureModel"> 20 <eClassifiers xsi:type="ecore:EClass" name="FunctionalArchitectureModel">
21 <eStructuralFeatures xsi:type="ecore:EReference" name="rootElements" upperBound="-1" 21 <eStructuralFeatures xsi:type="ecore:EReference" name="rootElements" upperBound="-1"
22 eType="#//FunctionalElement" containment="true"/> 22 eType="#//FunctionalElement" containment="true"/>
23 </eClassifiers> 23 </eClassifiers>
24 <eClassifiers xsi:type="ecore:EClass" name="Function" eSuperTypes="#//FunctionalElement"> 24 <eClassifiers xsi:type="ecore:EClass" name="Function" eSuperTypes="#//FunctionalElement">
25 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1" 25 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1"
26 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/> 26 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType" 27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType"
28 changeable="false" volatile="true" transient="true" derived="true"> 28 changeable="false" volatile="true" transient="true" derived="true">
29 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature"> 29 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
30 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/> 30 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/>
31 </eAnnotations> 31 </eAnnotations>
32 </eStructuralFeatures> 32 </eStructuralFeatures>
33 </eClassifiers> 33 </eClassifiers>
34 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator"> 34 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator">
35 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData" 35 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData"
36 eOpposite="#//FunctionalData/terminator"/> 36 eOpposite="#//FunctionalData/terminator"/>
37 </eClassifiers> 37 </eClassifiers>
38 <eClassifiers xsi:type="ecore:EClass" name="InformationLink"> 38 <eClassifiers xsi:type="ecore:EClass" name="InformationLink">
39 <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//FunctionalOutput" 39 <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//FunctionalOutput"
40 eOpposite="#//FunctionalOutput/outgoingLinks"/> 40 eOpposite="#//FunctionalOutput/outgoingLinks"/>
41 <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//FunctionalInput" 41 <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//FunctionalInput"
42 eOpposite="#//FunctionalInput/IncomingLinks"/> 42 eOpposite="#//FunctionalInput/IncomingLinks"/>
43 </eClassifiers> 43 </eClassifiers>
44 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInterface"> 44 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInterface">
45 <eStructuralFeatures xsi:type="ecore:EReference" name="data" upperBound="-1" eType="#//FunctionalData" 45 <eStructuralFeatures xsi:type="ecore:EReference" name="data" upperBound="-1" eType="#//FunctionalData"
46 containment="true" eOpposite="#//FunctionalData/interface"/> 46 containment="true" eOpposite="#//FunctionalData/interface"/>
47 <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="#//FunctionalElement" 47 <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="#//FunctionalElement"
48 eOpposite="#//FunctionalElement/interface"/> 48 eOpposite="#//FunctionalElement/interface"/>
49 </eClassifiers> 49 </eClassifiers>
50 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInput" eSuperTypes="#//FunctionalData"> 50 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInput" eSuperTypes="#//FunctionalData">
51 <eStructuralFeatures xsi:type="ecore:EReference" name="IncomingLinks" upperBound="-1" 51 <eStructuralFeatures xsi:type="ecore:EReference" name="IncomingLinks" upperBound="-1"
52 eType="#//InformationLink" eOpposite="#//InformationLink/to"/> 52 eType="#//InformationLink" eOpposite="#//InformationLink/to"/>
53 </eClassifiers> 53 </eClassifiers>
54 <eClassifiers xsi:type="ecore:EClass" name="FunctionalOutput" eSuperTypes="#//FunctionalData"> 54 <eClassifiers xsi:type="ecore:EClass" name="FunctionalOutput" eSuperTypes="#//FunctionalData">
55 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingLinks" upperBound="-1" 55 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingLinks" upperBound="-1"
56 eType="#//InformationLink" containment="true" eOpposite="#//InformationLink/from"/> 56 eType="#//InformationLink" containment="true" eOpposite="#//InformationLink/from"/>
57 </eClassifiers> 57 </eClassifiers>
58 <eClassifiers xsi:type="ecore:EClass" name="FunctionalData" abstract="true"> 58 <eClassifiers xsi:type="ecore:EClass" name="FunctionalData" abstract="true">
59 <eStructuralFeatures xsi:type="ecore:EReference" name="terminator" eType="#//FAMTerminator" 59 <eStructuralFeatures xsi:type="ecore:EReference" name="terminator" eType="#//FAMTerminator"
60 containment="true" eOpposite="#//FAMTerminator/data"/> 60 containment="true" eOpposite="#//FAMTerminator/data"/>
61 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface" 61 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
62 eOpposite="#//FunctionalInterface/data"/> 62 eOpposite="#//FunctionalInterface/data"/>
63 </eClassifiers> 63 </eClassifiers>
64 <eClassifiers xsi:type="ecore:EEnum" name="FunctionType"> 64 <eClassifiers xsi:type="ecore:EEnum" name="FunctionType">
65 <eLiterals name="Root"/> 65 <eLiterals name="Root"/>
66 <eLiterals name="Intermediate" value="1"/> 66 <eLiterals name="Intermediate" value="1"/>
67 <eLiterals name="Leaf" value="2"/> 67 <eLiterals name="Leaf" value="2"/>
68 </eClassifiers> 68 </eClassifiers>
69</ecore:EPackage> 69</ecore:EPackage>
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
index 3dce57aa..213ec0ed 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
@@ -1,24 +1,24 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin> 1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 2 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
3 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/> 3 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
4 </extension> 4 </extension>
5 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.type" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 5 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.type" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
6 <wellbehaving-derived-feature classifier-name="Function" feature-name="type" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/> 6 <wellbehaving-derived-feature classifier-name="Function" feature-name="type" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
7 </extension> 7 </extension>
8 <extension point="org.eclipse.emf.ecore.generated_package"> 8 <extension point="org.eclipse.emf.ecore.generated_package">
9 <!-- @generated FamMetamodel --> 9 <!-- @generated FamMetamodel -->
10 <package class="functionalarchitecture.FunctionalarchitecturePackage" genModel="model/FamMetamodel.genmodel" uri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/> 10 <package class="functionalarchitecture.FunctionalarchitecturePackage" genModel="model/FamMetamodel.genmodel" uri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
11 </extension> 11 </extension>
12 <extension id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 12 <extension id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
13 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns"> 13 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns">
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.terminatorAndInformation"/> 14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.terminatorAndInformation"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/> 15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.rootElements"/> 16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.rootElements"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.parent"/> 17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.parent"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/> 18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasRoot"/> 19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasRoot"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasInt"/> 20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasInt"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasLeaf"/> 21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasLeaf"/>
22 </group> 22 </group>
23 </extension> 23 </extension>
24</plugin> 24</plugin>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/META-INF/MANIFEST.MF b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/META-INF/MANIFEST.MF
index 41726ae6..5fb85170 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/META-INF/MANIFEST.MF
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/META-INF/MANIFEST.MF
@@ -6,19 +6,19 @@ Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: . 6Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: hu.bme.mit.inf.dslreasoner.domains.alloyexamples, 9Export-Package: hu.bme.mit.inf.dslreasoner.domains.alloyexamples,
10 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem, 10 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem,
11 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.impl, 11 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.impl,
12 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.util, 12 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.util,
13 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.util 13 hu.bme.mit.inf.dslreasoner.domains.alloyexamples.util
14Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, 14Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime,
15 org.eclipse.viatra.query.runtime, 15 org.eclipse.viatra.query.runtime,
16 org.eclipse.core.runtime, 16 org.eclipse.core.runtime,
17 org.eclipse.emf.ecore;visibility:=reexport, 17 org.eclipse.emf.ecore;visibility:=reexport,
18 org.eclipse.emf.emfstore.common, 18 org.eclipse.emf.emfstore.common,
19 com.google.guava, 19 com.google.guava,
20 org.eclipse.xtext.xbase.lib, 20 org.eclipse.xtext.xbase.lib,
21 org.eclipse.xtend.lib, 21 org.eclipse.xtend.lib,
22 org.eclipse.xtend.lib.macro 22 org.eclipse.xtend.lib.macro
23Bundle-RequiredExecutionEnvironment: JavaSE-1.8 23Bundle-RequiredExecutionEnvironment: JavaSE-1.8
24Bundle-ActivationPolicy: lazy 24Bundle-ActivationPolicy: lazy
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/model/FileSytem.ecore b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/model/FileSytem.ecore
index c928d2b0..87ba7135 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/model/FileSytem.ecore
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/model/FileSytem.ecore
@@ -1,32 +1,32 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Filesystem" nsURI="FS" nsPrefix="FS"> 3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Filesystem" nsURI="FS" nsPrefix="FS">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> 4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
5 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/> 5 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/>
6 </eAnnotations> 6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EClass" name="FileSystem"> 7 <eClassifiers xsi:type="ecore:EClass" name="FileSystem">
8 <eStructuralFeatures xsi:type="ecore:EReference" name="root" lowerBound="1" eType="#//Dir" 8 <eStructuralFeatures xsi:type="ecore:EReference" name="root" lowerBound="1" eType="#//Dir"
9 containment="true"/> 9 containment="true"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="live" upperBound="-1" eType="#//FSObject" 10 <eStructuralFeatures xsi:type="ecore:EReference" name="live" upperBound="-1" eType="#//FSObject"
11 changeable="false" volatile="true" transient="true" derived="true"> 11 changeable="false" volatile="true" transient="true" derived="true">
12 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature"> 12 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
13 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"/> 13 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"/>
14 </eAnnotations> 14 </eAnnotations>
15 </eStructuralFeatures> 15 </eStructuralFeatures>
16 </eClassifiers> 16 </eClassifiers>
17 <eClassifiers xsi:type="ecore:EClass" name="FSObject" abstract="true"> 17 <eClassifiers xsi:type="ecore:EClass" name="FSObject" abstract="true">
18 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Dir" 18 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Dir"
19 eOpposite="#//Dir/contents"/> 19 eOpposite="#//Dir/contents"/>
20 </eClassifiers> 20 </eClassifiers>
21 <eClassifiers xsi:type="ecore:EClass" name="Dir" eSuperTypes="#//FSObject"> 21 <eClassifiers xsi:type="ecore:EClass" name="Dir" eSuperTypes="#//FSObject">
22 <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1" 22 <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
23 eType="#//FSObject" containment="true" eOpposite="#//FSObject/parent"/> 23 eType="#//FSObject" containment="true" eOpposite="#//FSObject/parent"/>
24 </eClassifiers> 24 </eClassifiers>
25 <eClassifiers xsi:type="ecore:EClass" name="File" eSuperTypes="#//FSObject"/> 25 <eClassifiers xsi:type="ecore:EClass" name="File" eSuperTypes="#//FSObject"/>
26 <eClassifiers xsi:type="ecore:EClass" name="Model"> 26 <eClassifiers xsi:type="ecore:EClass" name="Model">
27 <eStructuralFeatures xsi:type="ecore:EReference" name="filesystems" lowerBound="1" 27 <eStructuralFeatures xsi:type="ecore:EReference" name="filesystems" lowerBound="1"
28 eType="#//FileSystem" containment="true"/> 28 eType="#//FileSystem" containment="true"/>
29 <eStructuralFeatures xsi:type="ecore:EReference" name="otherFSObjects" upperBound="-1" 29 <eStructuralFeatures xsi:type="ecore:EReference" name="otherFSObjects" upperBound="-1"
30 eType="#//FSObject" containment="true"/> 30 eType="#//FSObject" containment="true"/>
31 </eClassifiers> 31 </eClassifiers>
32</ecore:EPackage> 32</ecore:EPackage>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/plugin.xml b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/plugin.xml
index 576aa06e..d7fd112a 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/plugin.xml
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/plugin.xml
@@ -1,26 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!-- 1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin> 2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package"> 3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated FileSytem --> 4 <!-- @generated FileSytem -->
5 <package class="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FilesystemPackage" genModel="model/FileSytem.genmodel" uri="FS"/> 5 <package class="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FilesystemPackage" genModel="model/FileSytem.genmodel" uri="FS"/>
6 </extension> 6 </extension>
7 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 7 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
8 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FS"/> 8 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FS"/>
9 </extension> 9 </extension>
10 <extension id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore" point="org.eclipse.viatra.query.runtime.queryspecification"> 10 <extension id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore" point="org.eclipse.viatra.query.runtime.queryspecification">
11 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore" id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore"> 11 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore" id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore">
12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype"/> 12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype"/>
13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence"/> 13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence"/>
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite"/> 14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass"/> 15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite"/> 16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite"/>
17 </group> 17 </group>
18 </extension> 18 </extension>
19 <extension id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem" point="org.eclipse.viatra.query.runtime.queryspecification"> 19 <extension id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem" point="org.eclipse.viatra.query.runtime.queryspecification">
20 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem" id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem"> 20 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem" id="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem">
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent"/> 21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"/> 22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"/>
23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive"/> 23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive"/>
24 </group> 24 </group>
25 </extension> 25 </extension>
26</plugin> 26</plugin>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/.gitignore
index 9d608403..52338993 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/.gitignore
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/.gitignore
@@ -34,3 +34,11 @@
34/OppositeMatcher.java 34/OppositeMatcher.java
35/PatternContentMatch.java 35/PatternContentMatch.java
36/PatternContentMatcher.java 36/PatternContentMatcher.java
37/.ContentInNotLive.java._trace
38/.DirectSupertype.java._trace
39/.Live.java._trace
40/.LoopInInheritence.java._trace
41/.NonSymmetricOpposite.java._trace
42/.Opposite.java._trace
43/.OppositeDifferentClass.java._trace
44/.PatternContent.java._trace
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/ContentInNotLive.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/ContentInNotLive.java
new file mode 100644
index 00000000..ffdc1a69
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/ContentInNotLive.java
@@ -0,0 +1,741 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/FileSystem.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.Dir;
7import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject;
8import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Live;
9import java.util.Arrays;
10import java.util.Collection;
11import java.util.LinkedHashSet;
12import java.util.List;
13import java.util.Objects;
14import java.util.Optional;
15import java.util.Set;
16import java.util.function.Consumer;
17import java.util.stream.Collectors;
18import java.util.stream.Stream;
19import org.apache.log4j.Logger;
20import org.eclipse.emf.ecore.EClass;
21import org.eclipse.viatra.query.runtime.api.IPatternMatch;
22import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
25import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
26import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
27import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
28import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * {@literal @}Constraint(key={child}, severity="error", message="error")
52 * pattern contentInNotLive(parent : Dir, child: FSObject) {
53 * Dir.contents(parent,child);
54 * neg find live(_,parent);
55 * } or {
56 * Dir.contents(parent,child);
57 * neg find live(_,child);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class ContentInNotLive extends BaseGeneratedEMFQuerySpecification<ContentInNotLive.Matcher> {
67 /**
68 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private Dir fParent;
81
82 private FSObject fChild;
83
84 private static List<String> parameterNames = makeImmutableList("parent", "child");
85
86 private Match(final Dir pParent, final FSObject pChild) {
87 this.fParent = pParent;
88 this.fChild = pChild;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 if ("parent".equals(parameterName)) return this.fParent;
94 if ("child".equals(parameterName)) return this.fChild;
95 return null;
96 }
97
98 public Dir getParent() {
99 return this.fParent;
100 }
101
102 public FSObject getChild() {
103 return this.fChild;
104 }
105
106 @Override
107 public boolean set(final String parameterName, final Object newValue) {
108 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
109 if ("parent".equals(parameterName) ) {
110 this.fParent = (Dir) newValue;
111 return true;
112 }
113 if ("child".equals(parameterName) ) {
114 this.fChild = (FSObject) newValue;
115 return true;
116 }
117 return false;
118 }
119
120 public void setParent(final Dir pParent) {
121 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
122 this.fParent = pParent;
123 }
124
125 public void setChild(final FSObject pChild) {
126 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
127 this.fChild = pChild;
128 }
129
130 @Override
131 public String patternName() {
132 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive";
133 }
134
135 @Override
136 public List<String> parameterNames() {
137 return ContentInNotLive.Match.parameterNames;
138 }
139
140 @Override
141 public Object[] toArray() {
142 return new Object[]{fParent, fChild};
143 }
144
145 @Override
146 public ContentInNotLive.Match toImmutable() {
147 return isMutable() ? newMatch(fParent, fChild) : this;
148 }
149
150 @Override
151 public String prettyPrint() {
152 StringBuilder result = new StringBuilder();
153 result.append("\"parent\"=" + prettyPrintValue(fParent) + ", ");
154 result.append("\"child\"=" + prettyPrintValue(fChild));
155 return result.toString();
156 }
157
158 @Override
159 public int hashCode() {
160 return Objects.hash(fParent, fChild);
161 }
162
163 @Override
164 public boolean equals(final Object obj) {
165 if (this == obj)
166 return true;
167 if (obj == null) {
168 return false;
169 }
170 if ((obj instanceof ContentInNotLive.Match)) {
171 ContentInNotLive.Match other = (ContentInNotLive.Match) obj;
172 return Objects.equals(fParent, other.fParent) && Objects.equals(fChild, other.fChild);
173 } else {
174 // this should be infrequent
175 if (!(obj instanceof IPatternMatch)) {
176 return false;
177 }
178 IPatternMatch otherSig = (IPatternMatch) obj;
179 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
180 }
181 }
182
183 @Override
184 public ContentInNotLive specification() {
185 return ContentInNotLive.instance();
186 }
187
188 /**
189 * Returns an empty, mutable match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @return the empty match.
193 *
194 */
195 public static ContentInNotLive.Match newEmptyMatch() {
196 return new Mutable(null, null);
197 }
198
199 /**
200 * Returns a mutable (partial) match.
201 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
202 *
203 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
204 * @param pChild the fixed value of pattern parameter child, or null if not bound.
205 * @return the new, mutable (partial) match object.
206 *
207 */
208 public static ContentInNotLive.Match newMutableMatch(final Dir pParent, final FSObject pChild) {
209 return new Mutable(pParent, pChild);
210 }
211
212 /**
213 * Returns a new (partial) match.
214 * This can be used e.g. to call the matcher with a partial match.
215 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
216 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
217 * @param pChild the fixed value of pattern parameter child, or null if not bound.
218 * @return the (partial) match object.
219 *
220 */
221 public static ContentInNotLive.Match newMatch(final Dir pParent, final FSObject pChild) {
222 return new Immutable(pParent, pChild);
223 }
224
225 private static final class Mutable extends ContentInNotLive.Match {
226 Mutable(final Dir pParent, final FSObject pChild) {
227 super(pParent, pChild);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return true;
233 }
234 }
235
236 private static final class Immutable extends ContentInNotLive.Match {
237 Immutable(final Dir pParent, final FSObject pChild) {
238 super(pParent, pChild);
239 }
240
241 @Override
242 public boolean isMutable() {
243 return false;
244 }
245 }
246 }
247
248 /**
249 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive pattern,
250 * providing pattern-specific query methods.
251 *
252 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
253 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
254 *
255 * <p>Matches of the pattern will be represented as {@link Match}.
256 *
257 * <p>Original source:
258 * <code><pre>
259 * {@literal @}Constraint(key={child}, severity="error", message="error")
260 * pattern contentInNotLive(parent : Dir, child: FSObject) {
261 * Dir.contents(parent,child);
262 * neg find live(_,parent);
263 * } or {
264 * Dir.contents(parent,child);
265 * neg find live(_,child);
266 * }
267 * </pre></code>
268 *
269 * @see Match
270 * @see ContentInNotLive
271 *
272 */
273 public static class Matcher extends BaseMatcher<ContentInNotLive.Match> {
274 /**
275 * Initializes the pattern matcher within an existing VIATRA Query engine.
276 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
277 *
278 * @param engine the existing VIATRA Query engine in which this matcher will be created.
279 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
280 *
281 */
282 public static ContentInNotLive.Matcher on(final ViatraQueryEngine engine) {
283 // check if matcher already exists
284 Matcher matcher = engine.getExistingMatcher(querySpecification());
285 if (matcher == null) {
286 matcher = (Matcher)engine.getMatcher(querySpecification());
287 }
288 return matcher;
289 }
290
291 /**
292 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
293 * @return an initialized matcher
294 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
295 *
296 */
297 public static ContentInNotLive.Matcher create() {
298 return new Matcher();
299 }
300
301 private static final int POSITION_PARENT = 0;
302
303 private static final int POSITION_CHILD = 1;
304
305 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(ContentInNotLive.Matcher.class);
306
307 /**
308 * Initializes the pattern matcher within an existing VIATRA Query engine.
309 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
310 *
311 * @param engine the existing VIATRA Query engine in which this matcher will be created.
312 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
313 *
314 */
315 private Matcher() {
316 super(querySpecification());
317 }
318
319 /**
320 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
321 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
322 * @param pChild the fixed value of pattern parameter child, or null if not bound.
323 * @return matches represented as a Match object.
324 *
325 */
326 public Collection<ContentInNotLive.Match> getAllMatches(final Dir pParent, final FSObject pChild) {
327 return rawStreamAllMatches(new Object[]{pParent, pChild}).collect(Collectors.toSet());
328 }
329
330 /**
331 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
332 * </p>
333 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
334 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
335 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
336 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
337 * @param pChild the fixed value of pattern parameter child, or null if not bound.
338 * @return a stream of matches represented as a Match object.
339 *
340 */
341 public Stream<ContentInNotLive.Match> streamAllMatches(final Dir pParent, final FSObject pChild) {
342 return rawStreamAllMatches(new Object[]{pParent, pChild});
343 }
344
345 /**
346 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
347 * Neither determinism nor randomness of selection is guaranteed.
348 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
349 * @param pChild the fixed value of pattern parameter child, or null if not bound.
350 * @return a match represented as a Match object, or null if no match is found.
351 *
352 */
353 public Optional<ContentInNotLive.Match> getOneArbitraryMatch(final Dir pParent, final FSObject pChild) {
354 return rawGetOneArbitraryMatch(new Object[]{pParent, pChild});
355 }
356
357 /**
358 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
359 * under any possible substitution of the unspecified parameters (if any).
360 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
361 * @param pChild the fixed value of pattern parameter child, or null if not bound.
362 * @return true if the input is a valid (partial) match of the pattern.
363 *
364 */
365 public boolean hasMatch(final Dir pParent, final FSObject pChild) {
366 return rawHasMatch(new Object[]{pParent, pChild});
367 }
368
369 /**
370 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
371 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
372 * @param pChild the fixed value of pattern parameter child, or null if not bound.
373 * @return the number of pattern matches found.
374 *
375 */
376 public int countMatches(final Dir pParent, final FSObject pChild) {
377 return rawCountMatches(new Object[]{pParent, pChild});
378 }
379
380 /**
381 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
382 * Neither determinism nor randomness of selection is guaranteed.
383 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
384 * @param pChild the fixed value of pattern parameter child, or null if not bound.
385 * @param processor the action that will process the selected match.
386 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
387 *
388 */
389 public boolean forOneArbitraryMatch(final Dir pParent, final FSObject pChild, final Consumer<? super ContentInNotLive.Match> processor) {
390 return rawForOneArbitraryMatch(new Object[]{pParent, pChild}, processor);
391 }
392
393 /**
394 * Returns a new (partial) match.
395 * This can be used e.g. to call the matcher with a partial match.
396 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
397 * @param pParent the fixed value of pattern parameter parent, or null if not bound.
398 * @param pChild the fixed value of pattern parameter child, or null if not bound.
399 * @return the (partial) match object.
400 *
401 */
402 public ContentInNotLive.Match newMatch(final Dir pParent, final FSObject pChild) {
403 return ContentInNotLive.Match.newMatch(pParent, pChild);
404 }
405
406 /**
407 * Retrieve the set of values that occur in matches for parent.
408 * @return the Set of all values or empty set if there are no matches
409 *
410 */
411 protected Stream<Dir> rawStreamAllValuesOfparent(final Object[] parameters) {
412 return rawStreamAllValues(POSITION_PARENT, parameters).map(Dir.class::cast);
413 }
414
415 /**
416 * Retrieve the set of values that occur in matches for parent.
417 * @return the Set of all values or empty set if there are no matches
418 *
419 */
420 public Set<Dir> getAllValuesOfparent() {
421 return rawStreamAllValuesOfparent(emptyArray()).collect(Collectors.toSet());
422 }
423
424 /**
425 * Retrieve the set of values that occur in matches for parent.
426 * @return the Set of all values or empty set if there are no matches
427 *
428 */
429 public Stream<Dir> streamAllValuesOfparent() {
430 return rawStreamAllValuesOfparent(emptyArray());
431 }
432
433 /**
434 * Retrieve the set of values that occur in matches for parent.
435 * </p>
436 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
437 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
438 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
439 *
440 * @return the Stream of all values or empty set if there are no matches
441 *
442 */
443 public Stream<Dir> streamAllValuesOfparent(final ContentInNotLive.Match partialMatch) {
444 return rawStreamAllValuesOfparent(partialMatch.toArray());
445 }
446
447 /**
448 * Retrieve the set of values that occur in matches for parent.
449 * </p>
450 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
451 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
452 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
453 *
454 * @return the Stream of all values or empty set if there are no matches
455 *
456 */
457 public Stream<Dir> streamAllValuesOfparent(final FSObject pChild) {
458 return rawStreamAllValuesOfparent(new Object[]{null, pChild});
459 }
460
461 /**
462 * Retrieve the set of values that occur in matches for parent.
463 * @return the Set of all values or empty set if there are no matches
464 *
465 */
466 public Set<Dir> getAllValuesOfparent(final ContentInNotLive.Match partialMatch) {
467 return rawStreamAllValuesOfparent(partialMatch.toArray()).collect(Collectors.toSet());
468 }
469
470 /**
471 * Retrieve the set of values that occur in matches for parent.
472 * @return the Set of all values or empty set if there are no matches
473 *
474 */
475 public Set<Dir> getAllValuesOfparent(final FSObject pChild) {
476 return rawStreamAllValuesOfparent(new Object[]{null, pChild}).collect(Collectors.toSet());
477 }
478
479 /**
480 * Retrieve the set of values that occur in matches for child.
481 * @return the Set of all values or empty set if there are no matches
482 *
483 */
484 protected Stream<FSObject> rawStreamAllValuesOfchild(final Object[] parameters) {
485 return rawStreamAllValues(POSITION_CHILD, parameters).map(FSObject.class::cast);
486 }
487
488 /**
489 * Retrieve the set of values that occur in matches for child.
490 * @return the Set of all values or empty set if there are no matches
491 *
492 */
493 public Set<FSObject> getAllValuesOfchild() {
494 return rawStreamAllValuesOfchild(emptyArray()).collect(Collectors.toSet());
495 }
496
497 /**
498 * Retrieve the set of values that occur in matches for child.
499 * @return the Set of all values or empty set if there are no matches
500 *
501 */
502 public Stream<FSObject> streamAllValuesOfchild() {
503 return rawStreamAllValuesOfchild(emptyArray());
504 }
505
506 /**
507 * Retrieve the set of values that occur in matches for child.
508 * </p>
509 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
510 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
511 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
512 *
513 * @return the Stream of all values or empty set if there are no matches
514 *
515 */
516 public Stream<FSObject> streamAllValuesOfchild(final ContentInNotLive.Match partialMatch) {
517 return rawStreamAllValuesOfchild(partialMatch.toArray());
518 }
519
520 /**
521 * Retrieve the set of values that occur in matches for child.
522 * </p>
523 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
524 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
525 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
526 *
527 * @return the Stream of all values or empty set if there are no matches
528 *
529 */
530 public Stream<FSObject> streamAllValuesOfchild(final Dir pParent) {
531 return rawStreamAllValuesOfchild(new Object[]{pParent, null});
532 }
533
534 /**
535 * Retrieve the set of values that occur in matches for child.
536 * @return the Set of all values or empty set if there are no matches
537 *
538 */
539 public Set<FSObject> getAllValuesOfchild(final ContentInNotLive.Match partialMatch) {
540 return rawStreamAllValuesOfchild(partialMatch.toArray()).collect(Collectors.toSet());
541 }
542
543 /**
544 * Retrieve the set of values that occur in matches for child.
545 * @return the Set of all values or empty set if there are no matches
546 *
547 */
548 public Set<FSObject> getAllValuesOfchild(final Dir pParent) {
549 return rawStreamAllValuesOfchild(new Object[]{pParent, null}).collect(Collectors.toSet());
550 }
551
552 @Override
553 protected ContentInNotLive.Match tupleToMatch(final Tuple t) {
554 try {
555 return ContentInNotLive.Match.newMatch((Dir) t.get(POSITION_PARENT), (FSObject) t.get(POSITION_CHILD));
556 } catch(ClassCastException e) {
557 LOGGER.error("Element(s) in tuple not properly typed!",e);
558 return null;
559 }
560 }
561
562 @Override
563 protected ContentInNotLive.Match arrayToMatch(final Object[] match) {
564 try {
565 return ContentInNotLive.Match.newMatch((Dir) match[POSITION_PARENT], (FSObject) match[POSITION_CHILD]);
566 } catch(ClassCastException e) {
567 LOGGER.error("Element(s) in array not properly typed!",e);
568 return null;
569 }
570 }
571
572 @Override
573 protected ContentInNotLive.Match arrayToMatchMutable(final Object[] match) {
574 try {
575 return ContentInNotLive.Match.newMutableMatch((Dir) match[POSITION_PARENT], (FSObject) match[POSITION_CHILD]);
576 } catch(ClassCastException e) {
577 LOGGER.error("Element(s) in array not properly typed!",e);
578 return null;
579 }
580 }
581
582 /**
583 * @return the singleton instance of the query specification of this pattern
584 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
585 *
586 */
587 public static IQuerySpecification<ContentInNotLive.Matcher> querySpecification() {
588 return ContentInNotLive.instance();
589 }
590 }
591
592 private ContentInNotLive() {
593 super(GeneratedPQuery.INSTANCE);
594 }
595
596 /**
597 * @return the singleton instance of the query specification
598 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
599 *
600 */
601 public static ContentInNotLive instance() {
602 try{
603 return LazyHolder.INSTANCE;
604 } catch (ExceptionInInitializerError err) {
605 throw processInitializerError(err);
606 }
607 }
608
609 @Override
610 protected ContentInNotLive.Matcher instantiate(final ViatraQueryEngine engine) {
611 return ContentInNotLive.Matcher.on(engine);
612 }
613
614 @Override
615 public ContentInNotLive.Matcher instantiate() {
616 return ContentInNotLive.Matcher.create();
617 }
618
619 @Override
620 public ContentInNotLive.Match newEmptyMatch() {
621 return ContentInNotLive.Match.newEmptyMatch();
622 }
623
624 @Override
625 public ContentInNotLive.Match newMatch(final Object... parameters) {
626 return ContentInNotLive.Match.newMatch((hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.Dir) parameters[0], (hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject) parameters[1]);
627 }
628
629 /**
630 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.ContentInNotLive (visibility: PUBLIC, simpleName: ContentInNotLive, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.ContentInNotLive, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
631 * <b>not</b> at the class load time of the outer class,
632 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.ContentInNotLive (visibility: PUBLIC, simpleName: ContentInNotLive, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.ContentInNotLive, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
633 *
634 * <p> This workaround is required e.g. to support recursion.
635 *
636 */
637 private static class LazyHolder {
638 private static final ContentInNotLive INSTANCE = new ContentInNotLive();
639
640 /**
641 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
642 * This initialization order is required to support indirect recursion.
643 *
644 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
645 *
646 */
647 private static final Object STATIC_INITIALIZER = ensureInitialized();
648
649 public static Object ensureInitialized() {
650 INSTANCE.ensureInitializedInternal();
651 return null;
652 }
653 }
654
655 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
656 private static final ContentInNotLive.GeneratedPQuery INSTANCE = new GeneratedPQuery();
657
658 private final PParameter parameter_parent = new PParameter("parent", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.Dir", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "Dir")), PParameterDirection.INOUT);
659
660 private final PParameter parameter_child = new PParameter("child", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "FSObject")), PParameterDirection.INOUT);
661
662 private final List<PParameter> parameters = Arrays.asList(parameter_parent, parameter_child);
663
664 private GeneratedPQuery() {
665 super(PVisibility.PUBLIC);
666 }
667
668 @Override
669 public String getFullyQualifiedName() {
670 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.contentInNotLive";
671 }
672
673 @Override
674 public List<String> getParameterNames() {
675 return Arrays.asList("parent","child");
676 }
677
678 @Override
679 public List<PParameter> getParameters() {
680 return parameters;
681 }
682
683 @Override
684 public Set<PBody> doGetContainedBodies() {
685 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
686 Set<PBody> bodies = new LinkedHashSet<>();
687 {
688 PBody body = new PBody(this);
689 PVariable var_parent = body.getOrCreateVariableByName("parent");
690 PVariable var_child = body.getOrCreateVariableByName("child");
691 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
692 new TypeConstraint(body, Tuples.flatTupleOf(var_parent), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
693 new TypeConstraint(body, Tuples.flatTupleOf(var_child), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
694 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
695 new ExportedParameter(body, var_parent, parameter_parent),
696 new ExportedParameter(body, var_child, parameter_child)
697 ));
698 // Dir.contents(parent,child)
699 new TypeConstraint(body, Tuples.flatTupleOf(var_parent), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
700 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
701 new TypeConstraint(body, Tuples.flatTupleOf(var_parent, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FS", "Dir", "contents")));
702 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
703 new Equality(body, var__virtual_0_, var_child);
704 // neg find live(_,parent)
705 new NegativePatternCall(body, Tuples.flatTupleOf(var___0_, var_parent), Live.instance().getInternalQueryRepresentation());
706 bodies.add(body);
707 }
708 {
709 PBody body = new PBody(this);
710 PVariable var_parent = body.getOrCreateVariableByName("parent");
711 PVariable var_child = body.getOrCreateVariableByName("child");
712 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
713 new TypeConstraint(body, Tuples.flatTupleOf(var_parent), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
714 new TypeConstraint(body, Tuples.flatTupleOf(var_child), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
715 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
716 new ExportedParameter(body, var_parent, parameter_parent),
717 new ExportedParameter(body, var_child, parameter_child)
718 ));
719 // Dir.contents(parent,child)
720 new TypeConstraint(body, Tuples.flatTupleOf(var_parent), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
721 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
722 new TypeConstraint(body, Tuples.flatTupleOf(var_parent, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FS", "Dir", "contents")));
723 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
724 new Equality(body, var__virtual_0_, var_child);
725 // neg find live(_,child)
726 new NegativePatternCall(body, Tuples.flatTupleOf(var___0_, var_child), Live.instance().getInternalQueryRepresentation());
727 bodies.add(body);
728 }
729 {
730 PAnnotation annotation = new PAnnotation("Constraint");
731 annotation.addAttribute("key", Arrays.asList(new Object[] {
732 new ParameterReference("child")
733 }));
734 annotation.addAttribute("severity", "error");
735 annotation.addAttribute("message", "error");
736 addAnnotation(annotation);
737 }
738 return bodies;
739 }
740 }
741}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/DirectSupertype.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/DirectSupertype.java
new file mode 100644
index 00000000..03020a7c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/DirectSupertype.java
@@ -0,0 +1,692 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.viatra.query.runtime.api.IPatternMatch;
19import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
24import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
25import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
26import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
38import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
39
40/**
41 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
42 *
43 * <p>Original source:
44 * <code><pre>
45 * pattern directSupertype(a: EClass, b:EClass) {
46 * EClass.eSuperTypes(a,b);
47 * }
48 * </pre></code>
49 *
50 * @see Matcher
51 * @see Match
52 *
53 */
54@SuppressWarnings("all")
55public final class DirectSupertype extends BaseGeneratedEMFQuerySpecification<DirectSupertype.Matcher> {
56 /**
57 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype pattern,
58 * to be used in conjunction with {@link Matcher}.
59 *
60 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
61 * Each instance is a (possibly partial) substitution of pattern parameters,
62 * usable to represent a match of the pattern in the result of a query,
63 * or to specify the bound (fixed) input parameters when issuing a query.
64 *
65 * @see Matcher
66 *
67 */
68 public static abstract class Match extends BasePatternMatch {
69 private EClass fA;
70
71 private EClass fB;
72
73 private static List<String> parameterNames = makeImmutableList("a", "b");
74
75 private Match(final EClass pA, final EClass pB) {
76 this.fA = pA;
77 this.fB = pB;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 if ("a".equals(parameterName)) return this.fA;
83 if ("b".equals(parameterName)) return this.fB;
84 return null;
85 }
86
87 public EClass getA() {
88 return this.fA;
89 }
90
91 public EClass getB() {
92 return this.fB;
93 }
94
95 @Override
96 public boolean set(final String parameterName, final Object newValue) {
97 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
98 if ("a".equals(parameterName) ) {
99 this.fA = (EClass) newValue;
100 return true;
101 }
102 if ("b".equals(parameterName) ) {
103 this.fB = (EClass) newValue;
104 return true;
105 }
106 return false;
107 }
108
109 public void setA(final EClass pA) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 this.fA = pA;
112 }
113
114 public void setB(final EClass pB) {
115 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
116 this.fB = pB;
117 }
118
119 @Override
120 public String patternName() {
121 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype";
122 }
123
124 @Override
125 public List<String> parameterNames() {
126 return DirectSupertype.Match.parameterNames;
127 }
128
129 @Override
130 public Object[] toArray() {
131 return new Object[]{fA, fB};
132 }
133
134 @Override
135 public DirectSupertype.Match toImmutable() {
136 return isMutable() ? newMatch(fA, fB) : this;
137 }
138
139 @Override
140 public String prettyPrint() {
141 StringBuilder result = new StringBuilder();
142 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
143 result.append("\"b\"=" + prettyPrintValue(fB));
144 return result.toString();
145 }
146
147 @Override
148 public int hashCode() {
149 return Objects.hash(fA, fB);
150 }
151
152 @Override
153 public boolean equals(final Object obj) {
154 if (this == obj)
155 return true;
156 if (obj == null) {
157 return false;
158 }
159 if ((obj instanceof DirectSupertype.Match)) {
160 DirectSupertype.Match other = (DirectSupertype.Match) obj;
161 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
162 } else {
163 // this should be infrequent
164 if (!(obj instanceof IPatternMatch)) {
165 return false;
166 }
167 IPatternMatch otherSig = (IPatternMatch) obj;
168 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
169 }
170 }
171
172 @Override
173 public DirectSupertype specification() {
174 return DirectSupertype.instance();
175 }
176
177 /**
178 * Returns an empty, mutable match.
179 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
180 *
181 * @return the empty match.
182 *
183 */
184 public static DirectSupertype.Match newEmptyMatch() {
185 return new Mutable(null, null);
186 }
187
188 /**
189 * Returns a mutable (partial) match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @param pA the fixed value of pattern parameter a, or null if not bound.
193 * @param pB the fixed value of pattern parameter b, or null if not bound.
194 * @return the new, mutable (partial) match object.
195 *
196 */
197 public static DirectSupertype.Match newMutableMatch(final EClass pA, final EClass pB) {
198 return new Mutable(pA, pB);
199 }
200
201 /**
202 * Returns a new (partial) match.
203 * This can be used e.g. to call the matcher with a partial match.
204 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
205 * @param pA the fixed value of pattern parameter a, or null if not bound.
206 * @param pB the fixed value of pattern parameter b, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static DirectSupertype.Match newMatch(final EClass pA, final EClass pB) {
211 return new Immutable(pA, pB);
212 }
213
214 private static final class Mutable extends DirectSupertype.Match {
215 Mutable(final EClass pA, final EClass pB) {
216 super(pA, pB);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends DirectSupertype.Match {
226 Immutable(final EClass pA, final EClass pB) {
227 super(pA, pB);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return false;
233 }
234 }
235 }
236
237 /**
238 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype pattern,
239 * providing pattern-specific query methods.
240 *
241 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
242 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
243 *
244 * <p>Matches of the pattern will be represented as {@link Match}.
245 *
246 * <p>Original source:
247 * <code><pre>
248 * pattern directSupertype(a: EClass, b:EClass) {
249 * EClass.eSuperTypes(a,b);
250 * }
251 * </pre></code>
252 *
253 * @see Match
254 * @see DirectSupertype
255 *
256 */
257 public static class Matcher extends BaseMatcher<DirectSupertype.Match> {
258 /**
259 * Initializes the pattern matcher within an existing VIATRA Query engine.
260 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
261 *
262 * @param engine the existing VIATRA Query engine in which this matcher will be created.
263 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
264 *
265 */
266 public static DirectSupertype.Matcher on(final ViatraQueryEngine engine) {
267 // check if matcher already exists
268 Matcher matcher = engine.getExistingMatcher(querySpecification());
269 if (matcher == null) {
270 matcher = (Matcher)engine.getMatcher(querySpecification());
271 }
272 return matcher;
273 }
274
275 /**
276 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
277 * @return an initialized matcher
278 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
279 *
280 */
281 public static DirectSupertype.Matcher create() {
282 return new Matcher();
283 }
284
285 private static final int POSITION_A = 0;
286
287 private static final int POSITION_B = 1;
288
289 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(DirectSupertype.Matcher.class);
290
291 /**
292 * Initializes the pattern matcher within an existing VIATRA Query engine.
293 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
294 *
295 * @param engine the existing VIATRA Query engine in which this matcher will be created.
296 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
297 *
298 */
299 private Matcher() {
300 super(querySpecification());
301 }
302
303 /**
304 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
305 * @param pA the fixed value of pattern parameter a, or null if not bound.
306 * @param pB the fixed value of pattern parameter b, or null if not bound.
307 * @return matches represented as a Match object.
308 *
309 */
310 public Collection<DirectSupertype.Match> getAllMatches(final EClass pA, final EClass pB) {
311 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
312 }
313
314 /**
315 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
316 * </p>
317 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
318 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
319 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
320 * @param pA the fixed value of pattern parameter a, or null if not bound.
321 * @param pB the fixed value of pattern parameter b, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<DirectSupertype.Match> streamAllMatches(final EClass pA, final EClass pB) {
326 return rawStreamAllMatches(new Object[]{pA, pB});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pA the fixed value of pattern parameter a, or null if not bound.
333 * @param pB the fixed value of pattern parameter b, or null if not bound.
334 * @return a match represented as a Match object, or null if no match is found.
335 *
336 */
337 public Optional<DirectSupertype.Match> getOneArbitraryMatch(final EClass pA, final EClass pB) {
338 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
339 }
340
341 /**
342 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
343 * under any possible substitution of the unspecified parameters (if any).
344 * @param pA the fixed value of pattern parameter a, or null if not bound.
345 * @param pB the fixed value of pattern parameter b, or null if not bound.
346 * @return true if the input is a valid (partial) match of the pattern.
347 *
348 */
349 public boolean hasMatch(final EClass pA, final EClass pB) {
350 return rawHasMatch(new Object[]{pA, pB});
351 }
352
353 /**
354 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
355 * @param pA the fixed value of pattern parameter a, or null if not bound.
356 * @param pB the fixed value of pattern parameter b, or null if not bound.
357 * @return the number of pattern matches found.
358 *
359 */
360 public int countMatches(final EClass pA, final EClass pB) {
361 return rawCountMatches(new Object[]{pA, pB});
362 }
363
364 /**
365 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
366 * Neither determinism nor randomness of selection is guaranteed.
367 * @param pA the fixed value of pattern parameter a, or null if not bound.
368 * @param pB the fixed value of pattern parameter b, or null if not bound.
369 * @param processor the action that will process the selected match.
370 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
371 *
372 */
373 public boolean forOneArbitraryMatch(final EClass pA, final EClass pB, final Consumer<? super DirectSupertype.Match> processor) {
374 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
375 }
376
377 /**
378 * Returns a new (partial) match.
379 * This can be used e.g. to call the matcher with a partial match.
380 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
381 * @param pA the fixed value of pattern parameter a, or null if not bound.
382 * @param pB the fixed value of pattern parameter b, or null if not bound.
383 * @return the (partial) match object.
384 *
385 */
386 public DirectSupertype.Match newMatch(final EClass pA, final EClass pB) {
387 return DirectSupertype.Match.newMatch(pA, pB);
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for a.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 protected Stream<EClass> rawStreamAllValuesOfa(final Object[] parameters) {
396 return rawStreamAllValues(POSITION_A, parameters).map(EClass.class::cast);
397 }
398
399 /**
400 * Retrieve the set of values that occur in matches for a.
401 * @return the Set of all values or empty set if there are no matches
402 *
403 */
404 public Set<EClass> getAllValuesOfa() {
405 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
406 }
407
408 /**
409 * Retrieve the set of values that occur in matches for a.
410 * @return the Set of all values or empty set if there are no matches
411 *
412 */
413 public Stream<EClass> streamAllValuesOfa() {
414 return rawStreamAllValuesOfa(emptyArray());
415 }
416
417 /**
418 * Retrieve the set of values that occur in matches for a.
419 * </p>
420 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
421 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
422 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
423 *
424 * @return the Stream of all values or empty set if there are no matches
425 *
426 */
427 public Stream<EClass> streamAllValuesOfa(final DirectSupertype.Match partialMatch) {
428 return rawStreamAllValuesOfa(partialMatch.toArray());
429 }
430
431 /**
432 * Retrieve the set of values that occur in matches for a.
433 * </p>
434 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
435 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
436 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
437 *
438 * @return the Stream of all values or empty set if there are no matches
439 *
440 */
441 public Stream<EClass> streamAllValuesOfa(final EClass pB) {
442 return rawStreamAllValuesOfa(new Object[]{null, pB});
443 }
444
445 /**
446 * Retrieve the set of values that occur in matches for a.
447 * @return the Set of all values or empty set if there are no matches
448 *
449 */
450 public Set<EClass> getAllValuesOfa(final DirectSupertype.Match partialMatch) {
451 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
452 }
453
454 /**
455 * Retrieve the set of values that occur in matches for a.
456 * @return the Set of all values or empty set if there are no matches
457 *
458 */
459 public Set<EClass> getAllValuesOfa(final EClass pB) {
460 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
461 }
462
463 /**
464 * Retrieve the set of values that occur in matches for b.
465 * @return the Set of all values or empty set if there are no matches
466 *
467 */
468 protected Stream<EClass> rawStreamAllValuesOfb(final Object[] parameters) {
469 return rawStreamAllValues(POSITION_B, parameters).map(EClass.class::cast);
470 }
471
472 /**
473 * Retrieve the set of values that occur in matches for b.
474 * @return the Set of all values or empty set if there are no matches
475 *
476 */
477 public Set<EClass> getAllValuesOfb() {
478 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
479 }
480
481 /**
482 * Retrieve the set of values that occur in matches for b.
483 * @return the Set of all values or empty set if there are no matches
484 *
485 */
486 public Stream<EClass> streamAllValuesOfb() {
487 return rawStreamAllValuesOfb(emptyArray());
488 }
489
490 /**
491 * Retrieve the set of values that occur in matches for b.
492 * </p>
493 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
494 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
495 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
496 *
497 * @return the Stream of all values or empty set if there are no matches
498 *
499 */
500 public Stream<EClass> streamAllValuesOfb(final DirectSupertype.Match partialMatch) {
501 return rawStreamAllValuesOfb(partialMatch.toArray());
502 }
503
504 /**
505 * Retrieve the set of values that occur in matches for b.
506 * </p>
507 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
508 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
509 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
510 *
511 * @return the Stream of all values or empty set if there are no matches
512 *
513 */
514 public Stream<EClass> streamAllValuesOfb(final EClass pA) {
515 return rawStreamAllValuesOfb(new Object[]{pA, null});
516 }
517
518 /**
519 * Retrieve the set of values that occur in matches for b.
520 * @return the Set of all values or empty set if there are no matches
521 *
522 */
523 public Set<EClass> getAllValuesOfb(final DirectSupertype.Match partialMatch) {
524 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
525 }
526
527 /**
528 * Retrieve the set of values that occur in matches for b.
529 * @return the Set of all values or empty set if there are no matches
530 *
531 */
532 public Set<EClass> getAllValuesOfb(final EClass pA) {
533 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
534 }
535
536 @Override
537 protected DirectSupertype.Match tupleToMatch(final Tuple t) {
538 try {
539 return DirectSupertype.Match.newMatch((EClass) t.get(POSITION_A), (EClass) t.get(POSITION_B));
540 } catch(ClassCastException e) {
541 LOGGER.error("Element(s) in tuple not properly typed!",e);
542 return null;
543 }
544 }
545
546 @Override
547 protected DirectSupertype.Match arrayToMatch(final Object[] match) {
548 try {
549 return DirectSupertype.Match.newMatch((EClass) match[POSITION_A], (EClass) match[POSITION_B]);
550 } catch(ClassCastException e) {
551 LOGGER.error("Element(s) in array not properly typed!",e);
552 return null;
553 }
554 }
555
556 @Override
557 protected DirectSupertype.Match arrayToMatchMutable(final Object[] match) {
558 try {
559 return DirectSupertype.Match.newMutableMatch((EClass) match[POSITION_A], (EClass) match[POSITION_B]);
560 } catch(ClassCastException e) {
561 LOGGER.error("Element(s) in array not properly typed!",e);
562 return null;
563 }
564 }
565
566 /**
567 * @return the singleton instance of the query specification of this pattern
568 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
569 *
570 */
571 public static IQuerySpecification<DirectSupertype.Matcher> querySpecification() {
572 return DirectSupertype.instance();
573 }
574 }
575
576 private DirectSupertype() {
577 super(GeneratedPQuery.INSTANCE);
578 }
579
580 /**
581 * @return the singleton instance of the query specification
582 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
583 *
584 */
585 public static DirectSupertype instance() {
586 try{
587 return LazyHolder.INSTANCE;
588 } catch (ExceptionInInitializerError err) {
589 throw processInitializerError(err);
590 }
591 }
592
593 @Override
594 protected DirectSupertype.Matcher instantiate(final ViatraQueryEngine engine) {
595 return DirectSupertype.Matcher.on(engine);
596 }
597
598 @Override
599 public DirectSupertype.Matcher instantiate() {
600 return DirectSupertype.Matcher.create();
601 }
602
603 @Override
604 public DirectSupertype.Match newEmptyMatch() {
605 return DirectSupertype.Match.newEmptyMatch();
606 }
607
608 @Override
609 public DirectSupertype.Match newMatch(final Object... parameters) {
610 return DirectSupertype.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0], (org.eclipse.emf.ecore.EClass) parameters[1]);
611 }
612
613 /**
614 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.DirectSupertype (visibility: PUBLIC, simpleName: DirectSupertype, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.DirectSupertype, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
615 * <b>not</b> at the class load time of the outer class,
616 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.DirectSupertype (visibility: PUBLIC, simpleName: DirectSupertype, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.DirectSupertype, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
617 *
618 * <p> This workaround is required e.g. to support recursion.
619 *
620 */
621 private static class LazyHolder {
622 private static final DirectSupertype INSTANCE = new DirectSupertype();
623
624 /**
625 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
626 * This initialization order is required to support indirect recursion.
627 *
628 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
629 *
630 */
631 private static final Object STATIC_INITIALIZER = ensureInitialized();
632
633 public static Object ensureInitialized() {
634 INSTANCE.ensureInitializedInternal();
635 return null;
636 }
637 }
638
639 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
640 private static final DirectSupertype.GeneratedPQuery INSTANCE = new GeneratedPQuery();
641
642 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
643
644 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
645
646 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
647
648 private GeneratedPQuery() {
649 super(PVisibility.PUBLIC);
650 }
651
652 @Override
653 public String getFullyQualifiedName() {
654 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.directSupertype";
655 }
656
657 @Override
658 public List<String> getParameterNames() {
659 return Arrays.asList("a","b");
660 }
661
662 @Override
663 public List<PParameter> getParameters() {
664 return parameters;
665 }
666
667 @Override
668 public Set<PBody> doGetContainedBodies() {
669 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
670 Set<PBody> bodies = new LinkedHashSet<>();
671 {
672 PBody body = new PBody(this);
673 PVariable var_a = body.getOrCreateVariableByName("a");
674 PVariable var_b = body.getOrCreateVariableByName("b");
675 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
676 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
677 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
678 new ExportedParameter(body, var_a, parameter_a),
679 new ExportedParameter(body, var_b, parameter_b)
680 ));
681 // EClass.eSuperTypes(a,b)
682 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
683 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
684 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes")));
685 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
686 new Equality(body, var__virtual_0_, var_b);
687 bodies.add(body);
688 }
689 return bodies;
690 }
691 }
692}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Live.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Live.java
new file mode 100644
index 00000000..ae0f0c58
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Live.java
@@ -0,0 +1,730 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/FileSystem.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject;
7import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FileSystem;
8import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.PatternContent;
9import java.util.Arrays;
10import java.util.Collection;
11import java.util.LinkedHashSet;
12import java.util.List;
13import java.util.Objects;
14import java.util.Optional;
15import java.util.Set;
16import java.util.function.Consumer;
17import java.util.stream.Collectors;
18import java.util.stream.Stream;
19import org.apache.log4j.Logger;
20import org.eclipse.emf.ecore.EClass;
21import org.eclipse.viatra.query.runtime.api.IPatternMatch;
22import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
25import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
26import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
27import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
28import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
43import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
44
45/**
46 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
47 *
48 * <p>Original source:
49 * <code><pre>
50 * {@literal @}QueryBasedFeature
51 * pattern live(this: FileSystem, l: FSObject) {
52 * FileSystem.root(this,l);
53 * } or {
54 * FileSystem.root(this,root);
55 * find patternContent+(root,l);
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class Live extends BaseGeneratedEMFQuerySpecification<Live.Matcher> {
65 /**
66 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private FileSystem fThis;
79
80 private FSObject fL;
81
82 private static List<String> parameterNames = makeImmutableList("this", "l");
83
84 private Match(final FileSystem pThis, final FSObject pL) {
85 this.fThis = pThis;
86 this.fL = pL;
87 }
88
89 @Override
90 public Object get(final String parameterName) {
91 if ("this".equals(parameterName)) return this.fThis;
92 if ("l".equals(parameterName)) return this.fL;
93 return null;
94 }
95
96 public FileSystem getThis() {
97 return this.fThis;
98 }
99
100 public FSObject getL() {
101 return this.fL;
102 }
103
104 @Override
105 public boolean set(final String parameterName, final Object newValue) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 if ("this".equals(parameterName) ) {
108 this.fThis = (FileSystem) newValue;
109 return true;
110 }
111 if ("l".equals(parameterName) ) {
112 this.fL = (FSObject) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setThis(final FileSystem pThis) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fThis = pThis;
121 }
122
123 public void setL(final FSObject pL) {
124 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
125 this.fL = pL;
126 }
127
128 @Override
129 public String patternName() {
130 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live";
131 }
132
133 @Override
134 public List<String> parameterNames() {
135 return Live.Match.parameterNames;
136 }
137
138 @Override
139 public Object[] toArray() {
140 return new Object[]{fThis, fL};
141 }
142
143 @Override
144 public Live.Match toImmutable() {
145 return isMutable() ? newMatch(fThis, fL) : this;
146 }
147
148 @Override
149 public String prettyPrint() {
150 StringBuilder result = new StringBuilder();
151 result.append("\"this\"=" + prettyPrintValue(fThis) + ", ");
152 result.append("\"l\"=" + prettyPrintValue(fL));
153 return result.toString();
154 }
155
156 @Override
157 public int hashCode() {
158 return Objects.hash(fThis, fL);
159 }
160
161 @Override
162 public boolean equals(final Object obj) {
163 if (this == obj)
164 return true;
165 if (obj == null) {
166 return false;
167 }
168 if ((obj instanceof Live.Match)) {
169 Live.Match other = (Live.Match) obj;
170 return Objects.equals(fThis, other.fThis) && Objects.equals(fL, other.fL);
171 } else {
172 // this should be infrequent
173 if (!(obj instanceof IPatternMatch)) {
174 return false;
175 }
176 IPatternMatch otherSig = (IPatternMatch) obj;
177 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
178 }
179 }
180
181 @Override
182 public Live specification() {
183 return Live.instance();
184 }
185
186 /**
187 * Returns an empty, mutable match.
188 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
189 *
190 * @return the empty match.
191 *
192 */
193 public static Live.Match newEmptyMatch() {
194 return new Mutable(null, null);
195 }
196
197 /**
198 * Returns a mutable (partial) match.
199 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
200 *
201 * @param pThis the fixed value of pattern parameter this, or null if not bound.
202 * @param pL the fixed value of pattern parameter l, or null if not bound.
203 * @return the new, mutable (partial) match object.
204 *
205 */
206 public static Live.Match newMutableMatch(final FileSystem pThis, final FSObject pL) {
207 return new Mutable(pThis, pL);
208 }
209
210 /**
211 * Returns a new (partial) match.
212 * This can be used e.g. to call the matcher with a partial match.
213 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
214 * @param pThis the fixed value of pattern parameter this, or null if not bound.
215 * @param pL the fixed value of pattern parameter l, or null if not bound.
216 * @return the (partial) match object.
217 *
218 */
219 public static Live.Match newMatch(final FileSystem pThis, final FSObject pL) {
220 return new Immutable(pThis, pL);
221 }
222
223 private static final class Mutable extends Live.Match {
224 Mutable(final FileSystem pThis, final FSObject pL) {
225 super(pThis, pL);
226 }
227
228 @Override
229 public boolean isMutable() {
230 return true;
231 }
232 }
233
234 private static final class Immutable extends Live.Match {
235 Immutable(final FileSystem pThis, final FSObject pL) {
236 super(pThis, pL);
237 }
238
239 @Override
240 public boolean isMutable() {
241 return false;
242 }
243 }
244 }
245
246 /**
247 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live pattern,
248 * providing pattern-specific query methods.
249 *
250 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
251 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
252 *
253 * <p>Matches of the pattern will be represented as {@link Match}.
254 *
255 * <p>Original source:
256 * <code><pre>
257 * {@literal @}QueryBasedFeature
258 * pattern live(this: FileSystem, l: FSObject) {
259 * FileSystem.root(this,l);
260 * } or {
261 * FileSystem.root(this,root);
262 * find patternContent+(root,l);
263 * }
264 * </pre></code>
265 *
266 * @see Match
267 * @see Live
268 *
269 */
270 public static class Matcher extends BaseMatcher<Live.Match> {
271 /**
272 * Initializes the pattern matcher within an existing VIATRA Query engine.
273 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
274 *
275 * @param engine the existing VIATRA Query engine in which this matcher will be created.
276 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
277 *
278 */
279 public static Live.Matcher on(final ViatraQueryEngine engine) {
280 // check if matcher already exists
281 Matcher matcher = engine.getExistingMatcher(querySpecification());
282 if (matcher == null) {
283 matcher = (Matcher)engine.getMatcher(querySpecification());
284 }
285 return matcher;
286 }
287
288 /**
289 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
290 * @return an initialized matcher
291 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
292 *
293 */
294 public static Live.Matcher create() {
295 return new Matcher();
296 }
297
298 private static final int POSITION_THIS = 0;
299
300 private static final int POSITION_L = 1;
301
302 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Live.Matcher.class);
303
304 /**
305 * Initializes the pattern matcher within an existing VIATRA Query engine.
306 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
307 *
308 * @param engine the existing VIATRA Query engine in which this matcher will be created.
309 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
310 *
311 */
312 private Matcher() {
313 super(querySpecification());
314 }
315
316 /**
317 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
318 * @param pThis the fixed value of pattern parameter this, or null if not bound.
319 * @param pL the fixed value of pattern parameter l, or null if not bound.
320 * @return matches represented as a Match object.
321 *
322 */
323 public Collection<Live.Match> getAllMatches(final FileSystem pThis, final FSObject pL) {
324 return rawStreamAllMatches(new Object[]{pThis, pL}).collect(Collectors.toSet());
325 }
326
327 /**
328 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
329 * </p>
330 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
331 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
332 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
333 * @param pThis the fixed value of pattern parameter this, or null if not bound.
334 * @param pL the fixed value of pattern parameter l, or null if not bound.
335 * @return a stream of matches represented as a Match object.
336 *
337 */
338 public Stream<Live.Match> streamAllMatches(final FileSystem pThis, final FSObject pL) {
339 return rawStreamAllMatches(new Object[]{pThis, pL});
340 }
341
342 /**
343 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
344 * Neither determinism nor randomness of selection is guaranteed.
345 * @param pThis the fixed value of pattern parameter this, or null if not bound.
346 * @param pL the fixed value of pattern parameter l, or null if not bound.
347 * @return a match represented as a Match object, or null if no match is found.
348 *
349 */
350 public Optional<Live.Match> getOneArbitraryMatch(final FileSystem pThis, final FSObject pL) {
351 return rawGetOneArbitraryMatch(new Object[]{pThis, pL});
352 }
353
354 /**
355 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
356 * under any possible substitution of the unspecified parameters (if any).
357 * @param pThis the fixed value of pattern parameter this, or null if not bound.
358 * @param pL the fixed value of pattern parameter l, or null if not bound.
359 * @return true if the input is a valid (partial) match of the pattern.
360 *
361 */
362 public boolean hasMatch(final FileSystem pThis, final FSObject pL) {
363 return rawHasMatch(new Object[]{pThis, pL});
364 }
365
366 /**
367 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
368 * @param pThis the fixed value of pattern parameter this, or null if not bound.
369 * @param pL the fixed value of pattern parameter l, or null if not bound.
370 * @return the number of pattern matches found.
371 *
372 */
373 public int countMatches(final FileSystem pThis, final FSObject pL) {
374 return rawCountMatches(new Object[]{pThis, pL});
375 }
376
377 /**
378 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
379 * Neither determinism nor randomness of selection is guaranteed.
380 * @param pThis the fixed value of pattern parameter this, or null if not bound.
381 * @param pL the fixed value of pattern parameter l, or null if not bound.
382 * @param processor the action that will process the selected match.
383 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
384 *
385 */
386 public boolean forOneArbitraryMatch(final FileSystem pThis, final FSObject pL, final Consumer<? super Live.Match> processor) {
387 return rawForOneArbitraryMatch(new Object[]{pThis, pL}, processor);
388 }
389
390 /**
391 * Returns a new (partial) match.
392 * This can be used e.g. to call the matcher with a partial match.
393 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
394 * @param pThis the fixed value of pattern parameter this, or null if not bound.
395 * @param pL the fixed value of pattern parameter l, or null if not bound.
396 * @return the (partial) match object.
397 *
398 */
399 public Live.Match newMatch(final FileSystem pThis, final FSObject pL) {
400 return Live.Match.newMatch(pThis, pL);
401 }
402
403 /**
404 * Retrieve the set of values that occur in matches for this.
405 * @return the Set of all values or empty set if there are no matches
406 *
407 */
408 protected Stream<FileSystem> rawStreamAllValuesOfthis(final Object[] parameters) {
409 return rawStreamAllValues(POSITION_THIS, parameters).map(FileSystem.class::cast);
410 }
411
412 /**
413 * Retrieve the set of values that occur in matches for this.
414 * @return the Set of all values or empty set if there are no matches
415 *
416 */
417 public Set<FileSystem> getAllValuesOfthis() {
418 return rawStreamAllValuesOfthis(emptyArray()).collect(Collectors.toSet());
419 }
420
421 /**
422 * Retrieve the set of values that occur in matches for this.
423 * @return the Set of all values or empty set if there are no matches
424 *
425 */
426 public Stream<FileSystem> streamAllValuesOfthis() {
427 return rawStreamAllValuesOfthis(emptyArray());
428 }
429
430 /**
431 * Retrieve the set of values that occur in matches for this.
432 * </p>
433 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
434 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
435 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
436 *
437 * @return the Stream of all values or empty set if there are no matches
438 *
439 */
440 public Stream<FileSystem> streamAllValuesOfthis(final Live.Match partialMatch) {
441 return rawStreamAllValuesOfthis(partialMatch.toArray());
442 }
443
444 /**
445 * Retrieve the set of values that occur in matches for this.
446 * </p>
447 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
448 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
449 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
450 *
451 * @return the Stream of all values or empty set if there are no matches
452 *
453 */
454 public Stream<FileSystem> streamAllValuesOfthis(final FSObject pL) {
455 return rawStreamAllValuesOfthis(new Object[]{null, pL});
456 }
457
458 /**
459 * Retrieve the set of values that occur in matches for this.
460 * @return the Set of all values or empty set if there are no matches
461 *
462 */
463 public Set<FileSystem> getAllValuesOfthis(final Live.Match partialMatch) {
464 return rawStreamAllValuesOfthis(partialMatch.toArray()).collect(Collectors.toSet());
465 }
466
467 /**
468 * Retrieve the set of values that occur in matches for this.
469 * @return the Set of all values or empty set if there are no matches
470 *
471 */
472 public Set<FileSystem> getAllValuesOfthis(final FSObject pL) {
473 return rawStreamAllValuesOfthis(new Object[]{null, pL}).collect(Collectors.toSet());
474 }
475
476 /**
477 * Retrieve the set of values that occur in matches for l.
478 * @return the Set of all values or empty set if there are no matches
479 *
480 */
481 protected Stream<FSObject> rawStreamAllValuesOfl(final Object[] parameters) {
482 return rawStreamAllValues(POSITION_L, parameters).map(FSObject.class::cast);
483 }
484
485 /**
486 * Retrieve the set of values that occur in matches for l.
487 * @return the Set of all values or empty set if there are no matches
488 *
489 */
490 public Set<FSObject> getAllValuesOfl() {
491 return rawStreamAllValuesOfl(emptyArray()).collect(Collectors.toSet());
492 }
493
494 /**
495 * Retrieve the set of values that occur in matches for l.
496 * @return the Set of all values or empty set if there are no matches
497 *
498 */
499 public Stream<FSObject> streamAllValuesOfl() {
500 return rawStreamAllValuesOfl(emptyArray());
501 }
502
503 /**
504 * Retrieve the set of values that occur in matches for l.
505 * </p>
506 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
507 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
508 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
509 *
510 * @return the Stream of all values or empty set if there are no matches
511 *
512 */
513 public Stream<FSObject> streamAllValuesOfl(final Live.Match partialMatch) {
514 return rawStreamAllValuesOfl(partialMatch.toArray());
515 }
516
517 /**
518 * Retrieve the set of values that occur in matches for l.
519 * </p>
520 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
521 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
522 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
523 *
524 * @return the Stream of all values or empty set if there are no matches
525 *
526 */
527 public Stream<FSObject> streamAllValuesOfl(final FileSystem pThis) {
528 return rawStreamAllValuesOfl(new Object[]{pThis, null});
529 }
530
531 /**
532 * Retrieve the set of values that occur in matches for l.
533 * @return the Set of all values or empty set if there are no matches
534 *
535 */
536 public Set<FSObject> getAllValuesOfl(final Live.Match partialMatch) {
537 return rawStreamAllValuesOfl(partialMatch.toArray()).collect(Collectors.toSet());
538 }
539
540 /**
541 * Retrieve the set of values that occur in matches for l.
542 * @return the Set of all values or empty set if there are no matches
543 *
544 */
545 public Set<FSObject> getAllValuesOfl(final FileSystem pThis) {
546 return rawStreamAllValuesOfl(new Object[]{pThis, null}).collect(Collectors.toSet());
547 }
548
549 @Override
550 protected Live.Match tupleToMatch(final Tuple t) {
551 try {
552 return Live.Match.newMatch((FileSystem) t.get(POSITION_THIS), (FSObject) t.get(POSITION_L));
553 } catch(ClassCastException e) {
554 LOGGER.error("Element(s) in tuple not properly typed!",e);
555 return null;
556 }
557 }
558
559 @Override
560 protected Live.Match arrayToMatch(final Object[] match) {
561 try {
562 return Live.Match.newMatch((FileSystem) match[POSITION_THIS], (FSObject) match[POSITION_L]);
563 } catch(ClassCastException e) {
564 LOGGER.error("Element(s) in array not properly typed!",e);
565 return null;
566 }
567 }
568
569 @Override
570 protected Live.Match arrayToMatchMutable(final Object[] match) {
571 try {
572 return Live.Match.newMutableMatch((FileSystem) match[POSITION_THIS], (FSObject) match[POSITION_L]);
573 } catch(ClassCastException e) {
574 LOGGER.error("Element(s) in array not properly typed!",e);
575 return null;
576 }
577 }
578
579 /**
580 * @return the singleton instance of the query specification of this pattern
581 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
582 *
583 */
584 public static IQuerySpecification<Live.Matcher> querySpecification() {
585 return Live.instance();
586 }
587 }
588
589 private Live() {
590 super(GeneratedPQuery.INSTANCE);
591 }
592
593 /**
594 * @return the singleton instance of the query specification
595 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
596 *
597 */
598 public static Live instance() {
599 try{
600 return LazyHolder.INSTANCE;
601 } catch (ExceptionInInitializerError err) {
602 throw processInitializerError(err);
603 }
604 }
605
606 @Override
607 protected Live.Matcher instantiate(final ViatraQueryEngine engine) {
608 return Live.Matcher.on(engine);
609 }
610
611 @Override
612 public Live.Matcher instantiate() {
613 return Live.Matcher.create();
614 }
615
616 @Override
617 public Live.Match newEmptyMatch() {
618 return Live.Match.newEmptyMatch();
619 }
620
621 @Override
622 public Live.Match newMatch(final Object... parameters) {
623 return Live.Match.newMatch((hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FileSystem) parameters[0], (hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject) parameters[1]);
624 }
625
626 /**
627 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Live (visibility: PUBLIC, simpleName: Live, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Live, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
628 * <b>not</b> at the class load time of the outer class,
629 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Live (visibility: PUBLIC, simpleName: Live, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Live, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
630 *
631 * <p> This workaround is required e.g. to support recursion.
632 *
633 */
634 private static class LazyHolder {
635 private static final Live INSTANCE = new Live();
636
637 /**
638 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
639 * This initialization order is required to support indirect recursion.
640 *
641 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
642 *
643 */
644 private static final Object STATIC_INITIALIZER = ensureInitialized();
645
646 public static Object ensureInitialized() {
647 INSTANCE.ensureInitializedInternal();
648 return null;
649 }
650 }
651
652 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
653 private static final Live.GeneratedPQuery INSTANCE = new GeneratedPQuery();
654
655 private final PParameter parameter_this = new PParameter("this", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FileSystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "FileSystem")), PParameterDirection.INOUT);
656
657 private final PParameter parameter_l = new PParameter("l", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "FSObject")), PParameterDirection.INOUT);
658
659 private final List<PParameter> parameters = Arrays.asList(parameter_this, parameter_l);
660
661 private GeneratedPQuery() {
662 super(PVisibility.PUBLIC);
663 }
664
665 @Override
666 public String getFullyQualifiedName() {
667 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live";
668 }
669
670 @Override
671 public List<String> getParameterNames() {
672 return Arrays.asList("this","l");
673 }
674
675 @Override
676 public List<PParameter> getParameters() {
677 return parameters;
678 }
679
680 @Override
681 public Set<PBody> doGetContainedBodies() {
682 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
683 Set<PBody> bodies = new LinkedHashSet<>();
684 {
685 PBody body = new PBody(this);
686 PVariable var_this = body.getOrCreateVariableByName("this");
687 PVariable var_l = body.getOrCreateVariableByName("l");
688 new TypeConstraint(body, Tuples.flatTupleOf(var_this), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FileSystem")));
689 new TypeConstraint(body, Tuples.flatTupleOf(var_l), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
690 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
691 new ExportedParameter(body, var_this, parameter_this),
692 new ExportedParameter(body, var_l, parameter_l)
693 ));
694 // FileSystem.root(this,l)
695 new TypeConstraint(body, Tuples.flatTupleOf(var_this), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FileSystem")));
696 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
697 new TypeConstraint(body, Tuples.flatTupleOf(var_this, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FS", "FileSystem", "root")));
698 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
699 new Equality(body, var__virtual_0_, var_l);
700 bodies.add(body);
701 }
702 {
703 PBody body = new PBody(this);
704 PVariable var_this = body.getOrCreateVariableByName("this");
705 PVariable var_l = body.getOrCreateVariableByName("l");
706 PVariable var_root = body.getOrCreateVariableByName("root");
707 new TypeConstraint(body, Tuples.flatTupleOf(var_this), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FileSystem")));
708 new TypeConstraint(body, Tuples.flatTupleOf(var_l), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
709 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
710 new ExportedParameter(body, var_this, parameter_this),
711 new ExportedParameter(body, var_l, parameter_l)
712 ));
713 // FileSystem.root(this,root)
714 new TypeConstraint(body, Tuples.flatTupleOf(var_this), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FileSystem")));
715 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
716 new TypeConstraint(body, Tuples.flatTupleOf(var_this, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FS", "FileSystem", "root")));
717 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
718 new Equality(body, var__virtual_0_, var_root);
719 // find patternContent+(root,l)
720 new BinaryTransitiveClosure(body, Tuples.flatTupleOf(var_root, var_l), PatternContent.instance().getInternalQueryRepresentation());
721 bodies.add(body);
722 }
723 {
724 PAnnotation annotation = new PAnnotation("QueryBasedFeature");
725 addAnnotation(annotation);
726 }
727 return bodies;
728 }
729 }
730}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/LoopInInheritence.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/LoopInInheritence.java
new file mode 100644
index 00000000..51bd83a9
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/LoopInInheritence.java
@@ -0,0 +1,548 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.DirectSupertype;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41
42/**
43 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
44 *
45 * <p>Original source:
46 * <code><pre>
47 * {@literal @}Constraint(key={a}, severity="error", message="error")
48 * pattern loopInInheritence(a: EClass) {
49 * find directSupertype+(a,a);
50 * }
51 * </pre></code>
52 *
53 * @see Matcher
54 * @see Match
55 *
56 */
57@SuppressWarnings("all")
58public final class LoopInInheritence extends BaseGeneratedEMFQuerySpecification<LoopInInheritence.Matcher> {
59 /**
60 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence pattern,
61 * to be used in conjunction with {@link Matcher}.
62 *
63 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
64 * Each instance is a (possibly partial) substitution of pattern parameters,
65 * usable to represent a match of the pattern in the result of a query,
66 * or to specify the bound (fixed) input parameters when issuing a query.
67 *
68 * @see Matcher
69 *
70 */
71 public static abstract class Match extends BasePatternMatch {
72 private EClass fA;
73
74 private static List<String> parameterNames = makeImmutableList("a");
75
76 private Match(final EClass pA) {
77 this.fA = pA;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 if ("a".equals(parameterName)) return this.fA;
83 return null;
84 }
85
86 public EClass getA() {
87 return this.fA;
88 }
89
90 @Override
91 public boolean set(final String parameterName, final Object newValue) {
92 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
93 if ("a".equals(parameterName) ) {
94 this.fA = (EClass) newValue;
95 return true;
96 }
97 return false;
98 }
99
100 public void setA(final EClass pA) {
101 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
102 this.fA = pA;
103 }
104
105 @Override
106 public String patternName() {
107 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence";
108 }
109
110 @Override
111 public List<String> parameterNames() {
112 return LoopInInheritence.Match.parameterNames;
113 }
114
115 @Override
116 public Object[] toArray() {
117 return new Object[]{fA};
118 }
119
120 @Override
121 public LoopInInheritence.Match toImmutable() {
122 return isMutable() ? newMatch(fA) : this;
123 }
124
125 @Override
126 public String prettyPrint() {
127 StringBuilder result = new StringBuilder();
128 result.append("\"a\"=" + prettyPrintValue(fA));
129 return result.toString();
130 }
131
132 @Override
133 public int hashCode() {
134 return Objects.hash(fA);
135 }
136
137 @Override
138 public boolean equals(final Object obj) {
139 if (this == obj)
140 return true;
141 if (obj == null) {
142 return false;
143 }
144 if ((obj instanceof LoopInInheritence.Match)) {
145 LoopInInheritence.Match other = (LoopInInheritence.Match) obj;
146 return Objects.equals(fA, other.fA);
147 } else {
148 // this should be infrequent
149 if (!(obj instanceof IPatternMatch)) {
150 return false;
151 }
152 IPatternMatch otherSig = (IPatternMatch) obj;
153 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
154 }
155 }
156
157 @Override
158 public LoopInInheritence specification() {
159 return LoopInInheritence.instance();
160 }
161
162 /**
163 * Returns an empty, mutable match.
164 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
165 *
166 * @return the empty match.
167 *
168 */
169 public static LoopInInheritence.Match newEmptyMatch() {
170 return new Mutable(null);
171 }
172
173 /**
174 * Returns a mutable (partial) match.
175 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
176 *
177 * @param pA the fixed value of pattern parameter a, or null if not bound.
178 * @return the new, mutable (partial) match object.
179 *
180 */
181 public static LoopInInheritence.Match newMutableMatch(final EClass pA) {
182 return new Mutable(pA);
183 }
184
185 /**
186 * Returns a new (partial) match.
187 * This can be used e.g. to call the matcher with a partial match.
188 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
189 * @param pA the fixed value of pattern parameter a, or null if not bound.
190 * @return the (partial) match object.
191 *
192 */
193 public static LoopInInheritence.Match newMatch(final EClass pA) {
194 return new Immutable(pA);
195 }
196
197 private static final class Mutable extends LoopInInheritence.Match {
198 Mutable(final EClass pA) {
199 super(pA);
200 }
201
202 @Override
203 public boolean isMutable() {
204 return true;
205 }
206 }
207
208 private static final class Immutable extends LoopInInheritence.Match {
209 Immutable(final EClass pA) {
210 super(pA);
211 }
212
213 @Override
214 public boolean isMutable() {
215 return false;
216 }
217 }
218 }
219
220 /**
221 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence pattern,
222 * providing pattern-specific query methods.
223 *
224 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
225 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
226 *
227 * <p>Matches of the pattern will be represented as {@link Match}.
228 *
229 * <p>Original source:
230 * <code><pre>
231 * {@literal @}Constraint(key={a}, severity="error", message="error")
232 * pattern loopInInheritence(a: EClass) {
233 * find directSupertype+(a,a);
234 * }
235 * </pre></code>
236 *
237 * @see Match
238 * @see LoopInInheritence
239 *
240 */
241 public static class Matcher extends BaseMatcher<LoopInInheritence.Match> {
242 /**
243 * Initializes the pattern matcher within an existing VIATRA Query engine.
244 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
245 *
246 * @param engine the existing VIATRA Query engine in which this matcher will be created.
247 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
248 *
249 */
250 public static LoopInInheritence.Matcher on(final ViatraQueryEngine engine) {
251 // check if matcher already exists
252 Matcher matcher = engine.getExistingMatcher(querySpecification());
253 if (matcher == null) {
254 matcher = (Matcher)engine.getMatcher(querySpecification());
255 }
256 return matcher;
257 }
258
259 /**
260 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
261 * @return an initialized matcher
262 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
263 *
264 */
265 public static LoopInInheritence.Matcher create() {
266 return new Matcher();
267 }
268
269 private static final int POSITION_A = 0;
270
271 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(LoopInInheritence.Matcher.class);
272
273 /**
274 * Initializes the pattern matcher within an existing VIATRA Query engine.
275 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
276 *
277 * @param engine the existing VIATRA Query engine in which this matcher will be created.
278 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
279 *
280 */
281 private Matcher() {
282 super(querySpecification());
283 }
284
285 /**
286 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
287 * @param pA the fixed value of pattern parameter a, or null if not bound.
288 * @return matches represented as a Match object.
289 *
290 */
291 public Collection<LoopInInheritence.Match> getAllMatches(final EClass pA) {
292 return rawStreamAllMatches(new Object[]{pA}).collect(Collectors.toSet());
293 }
294
295 /**
296 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
297 * </p>
298 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
299 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
300 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
301 * @param pA the fixed value of pattern parameter a, or null if not bound.
302 * @return a stream of matches represented as a Match object.
303 *
304 */
305 public Stream<LoopInInheritence.Match> streamAllMatches(final EClass pA) {
306 return rawStreamAllMatches(new Object[]{pA});
307 }
308
309 /**
310 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
311 * Neither determinism nor randomness of selection is guaranteed.
312 * @param pA the fixed value of pattern parameter a, or null if not bound.
313 * @return a match represented as a Match object, or null if no match is found.
314 *
315 */
316 public Optional<LoopInInheritence.Match> getOneArbitraryMatch(final EClass pA) {
317 return rawGetOneArbitraryMatch(new Object[]{pA});
318 }
319
320 /**
321 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
322 * under any possible substitution of the unspecified parameters (if any).
323 * @param pA the fixed value of pattern parameter a, or null if not bound.
324 * @return true if the input is a valid (partial) match of the pattern.
325 *
326 */
327 public boolean hasMatch(final EClass pA) {
328 return rawHasMatch(new Object[]{pA});
329 }
330
331 /**
332 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
333 * @param pA the fixed value of pattern parameter a, or null if not bound.
334 * @return the number of pattern matches found.
335 *
336 */
337 public int countMatches(final EClass pA) {
338 return rawCountMatches(new Object[]{pA});
339 }
340
341 /**
342 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
343 * Neither determinism nor randomness of selection is guaranteed.
344 * @param pA the fixed value of pattern parameter a, or null if not bound.
345 * @param processor the action that will process the selected match.
346 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
347 *
348 */
349 public boolean forOneArbitraryMatch(final EClass pA, final Consumer<? super LoopInInheritence.Match> processor) {
350 return rawForOneArbitraryMatch(new Object[]{pA}, processor);
351 }
352
353 /**
354 * Returns a new (partial) match.
355 * This can be used e.g. to call the matcher with a partial match.
356 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
357 * @param pA the fixed value of pattern parameter a, or null if not bound.
358 * @return the (partial) match object.
359 *
360 */
361 public LoopInInheritence.Match newMatch(final EClass pA) {
362 return LoopInInheritence.Match.newMatch(pA);
363 }
364
365 /**
366 * Retrieve the set of values that occur in matches for a.
367 * @return the Set of all values or empty set if there are no matches
368 *
369 */
370 protected Stream<EClass> rawStreamAllValuesOfa(final Object[] parameters) {
371 return rawStreamAllValues(POSITION_A, parameters).map(EClass.class::cast);
372 }
373
374 /**
375 * Retrieve the set of values that occur in matches for a.
376 * @return the Set of all values or empty set if there are no matches
377 *
378 */
379 public Set<EClass> getAllValuesOfa() {
380 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for a.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 public Stream<EClass> streamAllValuesOfa() {
389 return rawStreamAllValuesOfa(emptyArray());
390 }
391
392 @Override
393 protected LoopInInheritence.Match tupleToMatch(final Tuple t) {
394 try {
395 return LoopInInheritence.Match.newMatch((EClass) t.get(POSITION_A));
396 } catch(ClassCastException e) {
397 LOGGER.error("Element(s) in tuple not properly typed!",e);
398 return null;
399 }
400 }
401
402 @Override
403 protected LoopInInheritence.Match arrayToMatch(final Object[] match) {
404 try {
405 return LoopInInheritence.Match.newMatch((EClass) match[POSITION_A]);
406 } catch(ClassCastException e) {
407 LOGGER.error("Element(s) in array not properly typed!",e);
408 return null;
409 }
410 }
411
412 @Override
413 protected LoopInInheritence.Match arrayToMatchMutable(final Object[] match) {
414 try {
415 return LoopInInheritence.Match.newMutableMatch((EClass) match[POSITION_A]);
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in array not properly typed!",e);
418 return null;
419 }
420 }
421
422 /**
423 * @return the singleton instance of the query specification of this pattern
424 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
425 *
426 */
427 public static IQuerySpecification<LoopInInheritence.Matcher> querySpecification() {
428 return LoopInInheritence.instance();
429 }
430 }
431
432 private LoopInInheritence() {
433 super(GeneratedPQuery.INSTANCE);
434 }
435
436 /**
437 * @return the singleton instance of the query specification
438 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
439 *
440 */
441 public static LoopInInheritence instance() {
442 try{
443 return LazyHolder.INSTANCE;
444 } catch (ExceptionInInitializerError err) {
445 throw processInitializerError(err);
446 }
447 }
448
449 @Override
450 protected LoopInInheritence.Matcher instantiate(final ViatraQueryEngine engine) {
451 return LoopInInheritence.Matcher.on(engine);
452 }
453
454 @Override
455 public LoopInInheritence.Matcher instantiate() {
456 return LoopInInheritence.Matcher.create();
457 }
458
459 @Override
460 public LoopInInheritence.Match newEmptyMatch() {
461 return LoopInInheritence.Match.newEmptyMatch();
462 }
463
464 @Override
465 public LoopInInheritence.Match newMatch(final Object... parameters) {
466 return LoopInInheritence.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0]);
467 }
468
469 /**
470 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.LoopInInheritence (visibility: PUBLIC, simpleName: LoopInInheritence, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.LoopInInheritence, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
471 * <b>not</b> at the class load time of the outer class,
472 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.LoopInInheritence (visibility: PUBLIC, simpleName: LoopInInheritence, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.LoopInInheritence, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
473 *
474 * <p> This workaround is required e.g. to support recursion.
475 *
476 */
477 private static class LazyHolder {
478 private static final LoopInInheritence INSTANCE = new LoopInInheritence();
479
480 /**
481 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
482 * This initialization order is required to support indirect recursion.
483 *
484 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
485 *
486 */
487 private static final Object STATIC_INITIALIZER = ensureInitialized();
488
489 public static Object ensureInitialized() {
490 INSTANCE.ensureInitializedInternal();
491 return null;
492 }
493 }
494
495 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
496 private static final LoopInInheritence.GeneratedPQuery INSTANCE = new GeneratedPQuery();
497
498 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
499
500 private final List<PParameter> parameters = Arrays.asList(parameter_a);
501
502 private GeneratedPQuery() {
503 super(PVisibility.PUBLIC);
504 }
505
506 @Override
507 public String getFullyQualifiedName() {
508 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.loopInInheritence";
509 }
510
511 @Override
512 public List<String> getParameterNames() {
513 return Arrays.asList("a");
514 }
515
516 @Override
517 public List<PParameter> getParameters() {
518 return parameters;
519 }
520
521 @Override
522 public Set<PBody> doGetContainedBodies() {
523 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
524 Set<PBody> bodies = new LinkedHashSet<>();
525 {
526 PBody body = new PBody(this);
527 PVariable var_a = body.getOrCreateVariableByName("a");
528 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
529 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
530 new ExportedParameter(body, var_a, parameter_a)
531 ));
532 // find directSupertype+(a,a)
533 new BinaryTransitiveClosure(body, Tuples.flatTupleOf(var_a, var_a), DirectSupertype.instance().getInternalQueryRepresentation());
534 bodies.add(body);
535 }
536 {
537 PAnnotation annotation = new PAnnotation("Constraint");
538 annotation.addAttribute("key", Arrays.asList(new Object[] {
539 new ParameterReference("a")
540 }));
541 annotation.addAttribute("severity", "error");
542 annotation.addAttribute("message", "error");
543 addAnnotation(annotation);
544 }
545 return bodies;
546 }
547 }
548}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/NonSymmetricOpposite.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/NonSymmetricOpposite.java
new file mode 100644
index 00000000..bd2833a7
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/NonSymmetricOpposite.java
@@ -0,0 +1,707 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Opposite;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EReference;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(key={a}, severity="error", message="error")
50 * pattern nonSymmetricOpposite(a:EReference, b:EReference) {
51 * find opposite(a,b);
52 * neg find opposite(b,a);
53 * }
54 * </pre></code>
55 *
56 * @see Matcher
57 * @see Match
58 *
59 */
60@SuppressWarnings("all")
61public final class NonSymmetricOpposite extends BaseGeneratedEMFQuerySpecification<NonSymmetricOpposite.Matcher> {
62 /**
63 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite pattern,
64 * to be used in conjunction with {@link Matcher}.
65 *
66 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
67 * Each instance is a (possibly partial) substitution of pattern parameters,
68 * usable to represent a match of the pattern in the result of a query,
69 * or to specify the bound (fixed) input parameters when issuing a query.
70 *
71 * @see Matcher
72 *
73 */
74 public static abstract class Match extends BasePatternMatch {
75 private EReference fA;
76
77 private EReference fB;
78
79 private static List<String> parameterNames = makeImmutableList("a", "b");
80
81 private Match(final EReference pA, final EReference pB) {
82 this.fA = pA;
83 this.fB = pB;
84 }
85
86 @Override
87 public Object get(final String parameterName) {
88 if ("a".equals(parameterName)) return this.fA;
89 if ("b".equals(parameterName)) return this.fB;
90 return null;
91 }
92
93 public EReference getA() {
94 return this.fA;
95 }
96
97 public EReference getB() {
98 return this.fB;
99 }
100
101 @Override
102 public boolean set(final String parameterName, final Object newValue) {
103 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
104 if ("a".equals(parameterName) ) {
105 this.fA = (EReference) newValue;
106 return true;
107 }
108 if ("b".equals(parameterName) ) {
109 this.fB = (EReference) newValue;
110 return true;
111 }
112 return false;
113 }
114
115 public void setA(final EReference pA) {
116 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
117 this.fA = pA;
118 }
119
120 public void setB(final EReference pB) {
121 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
122 this.fB = pB;
123 }
124
125 @Override
126 public String patternName() {
127 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite";
128 }
129
130 @Override
131 public List<String> parameterNames() {
132 return NonSymmetricOpposite.Match.parameterNames;
133 }
134
135 @Override
136 public Object[] toArray() {
137 return new Object[]{fA, fB};
138 }
139
140 @Override
141 public NonSymmetricOpposite.Match toImmutable() {
142 return isMutable() ? newMatch(fA, fB) : this;
143 }
144
145 @Override
146 public String prettyPrint() {
147 StringBuilder result = new StringBuilder();
148 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
149 result.append("\"b\"=" + prettyPrintValue(fB));
150 return result.toString();
151 }
152
153 @Override
154 public int hashCode() {
155 return Objects.hash(fA, fB);
156 }
157
158 @Override
159 public boolean equals(final Object obj) {
160 if (this == obj)
161 return true;
162 if (obj == null) {
163 return false;
164 }
165 if ((obj instanceof NonSymmetricOpposite.Match)) {
166 NonSymmetricOpposite.Match other = (NonSymmetricOpposite.Match) obj;
167 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
168 } else {
169 // this should be infrequent
170 if (!(obj instanceof IPatternMatch)) {
171 return false;
172 }
173 IPatternMatch otherSig = (IPatternMatch) obj;
174 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
175 }
176 }
177
178 @Override
179 public NonSymmetricOpposite specification() {
180 return NonSymmetricOpposite.instance();
181 }
182
183 /**
184 * Returns an empty, mutable match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @return the empty match.
188 *
189 */
190 public static NonSymmetricOpposite.Match newEmptyMatch() {
191 return new Mutable(null, null);
192 }
193
194 /**
195 * Returns a mutable (partial) match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @param pA the fixed value of pattern parameter a, or null if not bound.
199 * @param pB the fixed value of pattern parameter b, or null if not bound.
200 * @return the new, mutable (partial) match object.
201 *
202 */
203 public static NonSymmetricOpposite.Match newMutableMatch(final EReference pA, final EReference pB) {
204 return new Mutable(pA, pB);
205 }
206
207 /**
208 * Returns a new (partial) match.
209 * This can be used e.g. to call the matcher with a partial match.
210 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
211 * @param pA the fixed value of pattern parameter a, or null if not bound.
212 * @param pB the fixed value of pattern parameter b, or null if not bound.
213 * @return the (partial) match object.
214 *
215 */
216 public static NonSymmetricOpposite.Match newMatch(final EReference pA, final EReference pB) {
217 return new Immutable(pA, pB);
218 }
219
220 private static final class Mutable extends NonSymmetricOpposite.Match {
221 Mutable(final EReference pA, final EReference pB) {
222 super(pA, pB);
223 }
224
225 @Override
226 public boolean isMutable() {
227 return true;
228 }
229 }
230
231 private static final class Immutable extends NonSymmetricOpposite.Match {
232 Immutable(final EReference pA, final EReference pB) {
233 super(pA, pB);
234 }
235
236 @Override
237 public boolean isMutable() {
238 return false;
239 }
240 }
241 }
242
243 /**
244 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite pattern,
245 * providing pattern-specific query methods.
246 *
247 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
248 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
249 *
250 * <p>Matches of the pattern will be represented as {@link Match}.
251 *
252 * <p>Original source:
253 * <code><pre>
254 * {@literal @}Constraint(key={a}, severity="error", message="error")
255 * pattern nonSymmetricOpposite(a:EReference, b:EReference) {
256 * find opposite(a,b);
257 * neg find opposite(b,a);
258 * }
259 * </pre></code>
260 *
261 * @see Match
262 * @see NonSymmetricOpposite
263 *
264 */
265 public static class Matcher extends BaseMatcher<NonSymmetricOpposite.Match> {
266 /**
267 * Initializes the pattern matcher within an existing VIATRA Query engine.
268 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
269 *
270 * @param engine the existing VIATRA Query engine in which this matcher will be created.
271 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
272 *
273 */
274 public static NonSymmetricOpposite.Matcher on(final ViatraQueryEngine engine) {
275 // check if matcher already exists
276 Matcher matcher = engine.getExistingMatcher(querySpecification());
277 if (matcher == null) {
278 matcher = (Matcher)engine.getMatcher(querySpecification());
279 }
280 return matcher;
281 }
282
283 /**
284 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
285 * @return an initialized matcher
286 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
287 *
288 */
289 public static NonSymmetricOpposite.Matcher create() {
290 return new Matcher();
291 }
292
293 private static final int POSITION_A = 0;
294
295 private static final int POSITION_B = 1;
296
297 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NonSymmetricOpposite.Matcher.class);
298
299 /**
300 * Initializes the pattern matcher within an existing VIATRA Query engine.
301 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
302 *
303 * @param engine the existing VIATRA Query engine in which this matcher will be created.
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 *
306 */
307 private Matcher() {
308 super(querySpecification());
309 }
310
311 /**
312 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
313 * @param pA the fixed value of pattern parameter a, or null if not bound.
314 * @param pB the fixed value of pattern parameter b, or null if not bound.
315 * @return matches represented as a Match object.
316 *
317 */
318 public Collection<NonSymmetricOpposite.Match> getAllMatches(final EReference pA, final EReference pB) {
319 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
320 }
321
322 /**
323 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
324 * </p>
325 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
326 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
327 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
328 * @param pA the fixed value of pattern parameter a, or null if not bound.
329 * @param pB the fixed value of pattern parameter b, or null if not bound.
330 * @return a stream of matches represented as a Match object.
331 *
332 */
333 public Stream<NonSymmetricOpposite.Match> streamAllMatches(final EReference pA, final EReference pB) {
334 return rawStreamAllMatches(new Object[]{pA, pB});
335 }
336
337 /**
338 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
339 * Neither determinism nor randomness of selection is guaranteed.
340 * @param pA the fixed value of pattern parameter a, or null if not bound.
341 * @param pB the fixed value of pattern parameter b, or null if not bound.
342 * @return a match represented as a Match object, or null if no match is found.
343 *
344 */
345 public Optional<NonSymmetricOpposite.Match> getOneArbitraryMatch(final EReference pA, final EReference pB) {
346 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
347 }
348
349 /**
350 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
351 * under any possible substitution of the unspecified parameters (if any).
352 * @param pA the fixed value of pattern parameter a, or null if not bound.
353 * @param pB the fixed value of pattern parameter b, or null if not bound.
354 * @return true if the input is a valid (partial) match of the pattern.
355 *
356 */
357 public boolean hasMatch(final EReference pA, final EReference pB) {
358 return rawHasMatch(new Object[]{pA, pB});
359 }
360
361 /**
362 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
363 * @param pA the fixed value of pattern parameter a, or null if not bound.
364 * @param pB the fixed value of pattern parameter b, or null if not bound.
365 * @return the number of pattern matches found.
366 *
367 */
368 public int countMatches(final EReference pA, final EReference pB) {
369 return rawCountMatches(new Object[]{pA, pB});
370 }
371
372 /**
373 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
374 * Neither determinism nor randomness of selection is guaranteed.
375 * @param pA the fixed value of pattern parameter a, or null if not bound.
376 * @param pB the fixed value of pattern parameter b, or null if not bound.
377 * @param processor the action that will process the selected match.
378 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
379 *
380 */
381 public boolean forOneArbitraryMatch(final EReference pA, final EReference pB, final Consumer<? super NonSymmetricOpposite.Match> processor) {
382 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
383 }
384
385 /**
386 * Returns a new (partial) match.
387 * This can be used e.g. to call the matcher with a partial match.
388 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
389 * @param pA the fixed value of pattern parameter a, or null if not bound.
390 * @param pB the fixed value of pattern parameter b, or null if not bound.
391 * @return the (partial) match object.
392 *
393 */
394 public NonSymmetricOpposite.Match newMatch(final EReference pA, final EReference pB) {
395 return NonSymmetricOpposite.Match.newMatch(pA, pB);
396 }
397
398 /**
399 * Retrieve the set of values that occur in matches for a.
400 * @return the Set of all values or empty set if there are no matches
401 *
402 */
403 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
404 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
405 }
406
407 /**
408 * Retrieve the set of values that occur in matches for a.
409 * @return the Set of all values or empty set if there are no matches
410 *
411 */
412 public Set<EReference> getAllValuesOfa() {
413 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
414 }
415
416 /**
417 * Retrieve the set of values that occur in matches for a.
418 * @return the Set of all values or empty set if there are no matches
419 *
420 */
421 public Stream<EReference> streamAllValuesOfa() {
422 return rawStreamAllValuesOfa(emptyArray());
423 }
424
425 /**
426 * Retrieve the set of values that occur in matches for a.
427 * </p>
428 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
429 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
430 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
431 *
432 * @return the Stream of all values or empty set if there are no matches
433 *
434 */
435 public Stream<EReference> streamAllValuesOfa(final NonSymmetricOpposite.Match partialMatch) {
436 return rawStreamAllValuesOfa(partialMatch.toArray());
437 }
438
439 /**
440 * Retrieve the set of values that occur in matches for a.
441 * </p>
442 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
443 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
444 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
445 *
446 * @return the Stream of all values or empty set if there are no matches
447 *
448 */
449 public Stream<EReference> streamAllValuesOfa(final EReference pB) {
450 return rawStreamAllValuesOfa(new Object[]{null, pB});
451 }
452
453 /**
454 * Retrieve the set of values that occur in matches for a.
455 * @return the Set of all values or empty set if there are no matches
456 *
457 */
458 public Set<EReference> getAllValuesOfa(final NonSymmetricOpposite.Match partialMatch) {
459 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
460 }
461
462 /**
463 * Retrieve the set of values that occur in matches for a.
464 * @return the Set of all values or empty set if there are no matches
465 *
466 */
467 public Set<EReference> getAllValuesOfa(final EReference pB) {
468 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
469 }
470
471 /**
472 * Retrieve the set of values that occur in matches for b.
473 * @return the Set of all values or empty set if there are no matches
474 *
475 */
476 protected Stream<EReference> rawStreamAllValuesOfb(final Object[] parameters) {
477 return rawStreamAllValues(POSITION_B, parameters).map(EReference.class::cast);
478 }
479
480 /**
481 * Retrieve the set of values that occur in matches for b.
482 * @return the Set of all values or empty set if there are no matches
483 *
484 */
485 public Set<EReference> getAllValuesOfb() {
486 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
487 }
488
489 /**
490 * Retrieve the set of values that occur in matches for b.
491 * @return the Set of all values or empty set if there are no matches
492 *
493 */
494 public Stream<EReference> streamAllValuesOfb() {
495 return rawStreamAllValuesOfb(emptyArray());
496 }
497
498 /**
499 * Retrieve the set of values that occur in matches for b.
500 * </p>
501 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
502 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
503 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
504 *
505 * @return the Stream of all values or empty set if there are no matches
506 *
507 */
508 public Stream<EReference> streamAllValuesOfb(final NonSymmetricOpposite.Match partialMatch) {
509 return rawStreamAllValuesOfb(partialMatch.toArray());
510 }
511
512 /**
513 * Retrieve the set of values that occur in matches for b.
514 * </p>
515 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
516 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
517 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
518 *
519 * @return the Stream of all values or empty set if there are no matches
520 *
521 */
522 public Stream<EReference> streamAllValuesOfb(final EReference pA) {
523 return rawStreamAllValuesOfb(new Object[]{pA, null});
524 }
525
526 /**
527 * Retrieve the set of values that occur in matches for b.
528 * @return the Set of all values or empty set if there are no matches
529 *
530 */
531 public Set<EReference> getAllValuesOfb(final NonSymmetricOpposite.Match partialMatch) {
532 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
533 }
534
535 /**
536 * Retrieve the set of values that occur in matches for b.
537 * @return the Set of all values or empty set if there are no matches
538 *
539 */
540 public Set<EReference> getAllValuesOfb(final EReference pA) {
541 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
542 }
543
544 @Override
545 protected NonSymmetricOpposite.Match tupleToMatch(final Tuple t) {
546 try {
547 return NonSymmetricOpposite.Match.newMatch((EReference) t.get(POSITION_A), (EReference) t.get(POSITION_B));
548 } catch(ClassCastException e) {
549 LOGGER.error("Element(s) in tuple not properly typed!",e);
550 return null;
551 }
552 }
553
554 @Override
555 protected NonSymmetricOpposite.Match arrayToMatch(final Object[] match) {
556 try {
557 return NonSymmetricOpposite.Match.newMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
558 } catch(ClassCastException e) {
559 LOGGER.error("Element(s) in array not properly typed!",e);
560 return null;
561 }
562 }
563
564 @Override
565 protected NonSymmetricOpposite.Match arrayToMatchMutable(final Object[] match) {
566 try {
567 return NonSymmetricOpposite.Match.newMutableMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
568 } catch(ClassCastException e) {
569 LOGGER.error("Element(s) in array not properly typed!",e);
570 return null;
571 }
572 }
573
574 /**
575 * @return the singleton instance of the query specification of this pattern
576 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
577 *
578 */
579 public static IQuerySpecification<NonSymmetricOpposite.Matcher> querySpecification() {
580 return NonSymmetricOpposite.instance();
581 }
582 }
583
584 private NonSymmetricOpposite() {
585 super(GeneratedPQuery.INSTANCE);
586 }
587
588 /**
589 * @return the singleton instance of the query specification
590 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
591 *
592 */
593 public static NonSymmetricOpposite instance() {
594 try{
595 return LazyHolder.INSTANCE;
596 } catch (ExceptionInInitializerError err) {
597 throw processInitializerError(err);
598 }
599 }
600
601 @Override
602 protected NonSymmetricOpposite.Matcher instantiate(final ViatraQueryEngine engine) {
603 return NonSymmetricOpposite.Matcher.on(engine);
604 }
605
606 @Override
607 public NonSymmetricOpposite.Matcher instantiate() {
608 return NonSymmetricOpposite.Matcher.create();
609 }
610
611 @Override
612 public NonSymmetricOpposite.Match newEmptyMatch() {
613 return NonSymmetricOpposite.Match.newEmptyMatch();
614 }
615
616 @Override
617 public NonSymmetricOpposite.Match newMatch(final Object... parameters) {
618 return NonSymmetricOpposite.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0], (org.eclipse.emf.ecore.EReference) parameters[1]);
619 }
620
621 /**
622 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.NonSymmetricOpposite (visibility: PUBLIC, simpleName: NonSymmetricOpposite, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.NonSymmetricOpposite, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
623 * <b>not</b> at the class load time of the outer class,
624 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.NonSymmetricOpposite (visibility: PUBLIC, simpleName: NonSymmetricOpposite, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.NonSymmetricOpposite, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
625 *
626 * <p> This workaround is required e.g. to support recursion.
627 *
628 */
629 private static class LazyHolder {
630 private static final NonSymmetricOpposite INSTANCE = new NonSymmetricOpposite();
631
632 /**
633 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
634 * This initialization order is required to support indirect recursion.
635 *
636 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
637 *
638 */
639 private static final Object STATIC_INITIALIZER = ensureInitialized();
640
641 public static Object ensureInitialized() {
642 INSTANCE.ensureInitializedInternal();
643 return null;
644 }
645 }
646
647 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
648 private static final NonSymmetricOpposite.GeneratedPQuery INSTANCE = new GeneratedPQuery();
649
650 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
651
652 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
653
654 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
655
656 private GeneratedPQuery() {
657 super(PVisibility.PUBLIC);
658 }
659
660 @Override
661 public String getFullyQualifiedName() {
662 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.nonSymmetricOpposite";
663 }
664
665 @Override
666 public List<String> getParameterNames() {
667 return Arrays.asList("a","b");
668 }
669
670 @Override
671 public List<PParameter> getParameters() {
672 return parameters;
673 }
674
675 @Override
676 public Set<PBody> doGetContainedBodies() {
677 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
678 Set<PBody> bodies = new LinkedHashSet<>();
679 {
680 PBody body = new PBody(this);
681 PVariable var_a = body.getOrCreateVariableByName("a");
682 PVariable var_b = body.getOrCreateVariableByName("b");
683 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
684 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
685 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
686 new ExportedParameter(body, var_a, parameter_a),
687 new ExportedParameter(body, var_b, parameter_b)
688 ));
689 // find opposite(a,b)
690 new PositivePatternCall(body, Tuples.flatTupleOf(var_a, var_b), Opposite.instance().getInternalQueryRepresentation());
691 // neg find opposite(b,a)
692 new NegativePatternCall(body, Tuples.flatTupleOf(var_b, var_a), Opposite.instance().getInternalQueryRepresentation());
693 bodies.add(body);
694 }
695 {
696 PAnnotation annotation = new PAnnotation("Constraint");
697 annotation.addAttribute("key", Arrays.asList(new Object[] {
698 new ParameterReference("a")
699 }));
700 annotation.addAttribute("severity", "error");
701 annotation.addAttribute("message", "error");
702 addAnnotation(annotation);
703 }
704 return bodies;
705 }
706 }
707}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Opposite.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Opposite.java
new file mode 100644
index 00000000..c4832370
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Opposite.java
@@ -0,0 +1,693 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.EReference;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern opposite(a:EReference, b: EReference) {
47 * EReference.eOpposite(a,b);
48 * }
49 * </pre></code>
50 *
51 * @see Matcher
52 * @see Match
53 *
54 */
55@SuppressWarnings("all")
56public final class Opposite extends BaseGeneratedEMFQuerySpecification<Opposite.Matcher> {
57 /**
58 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite pattern,
59 * to be used in conjunction with {@link Matcher}.
60 *
61 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
62 * Each instance is a (possibly partial) substitution of pattern parameters,
63 * usable to represent a match of the pattern in the result of a query,
64 * or to specify the bound (fixed) input parameters when issuing a query.
65 *
66 * @see Matcher
67 *
68 */
69 public static abstract class Match extends BasePatternMatch {
70 private EReference fA;
71
72 private EReference fB;
73
74 private static List<String> parameterNames = makeImmutableList("a", "b");
75
76 private Match(final EReference pA, final EReference pB) {
77 this.fA = pA;
78 this.fB = pB;
79 }
80
81 @Override
82 public Object get(final String parameterName) {
83 if ("a".equals(parameterName)) return this.fA;
84 if ("b".equals(parameterName)) return this.fB;
85 return null;
86 }
87
88 public EReference getA() {
89 return this.fA;
90 }
91
92 public EReference getB() {
93 return this.fB;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("a".equals(parameterName) ) {
100 this.fA = (EReference) newValue;
101 return true;
102 }
103 if ("b".equals(parameterName) ) {
104 this.fB = (EReference) newValue;
105 return true;
106 }
107 return false;
108 }
109
110 public void setA(final EReference pA) {
111 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
112 this.fA = pA;
113 }
114
115 public void setB(final EReference pB) {
116 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
117 this.fB = pB;
118 }
119
120 @Override
121 public String patternName() {
122 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite";
123 }
124
125 @Override
126 public List<String> parameterNames() {
127 return Opposite.Match.parameterNames;
128 }
129
130 @Override
131 public Object[] toArray() {
132 return new Object[]{fA, fB};
133 }
134
135 @Override
136 public Opposite.Match toImmutable() {
137 return isMutable() ? newMatch(fA, fB) : this;
138 }
139
140 @Override
141 public String prettyPrint() {
142 StringBuilder result = new StringBuilder();
143 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
144 result.append("\"b\"=" + prettyPrintValue(fB));
145 return result.toString();
146 }
147
148 @Override
149 public int hashCode() {
150 return Objects.hash(fA, fB);
151 }
152
153 @Override
154 public boolean equals(final Object obj) {
155 if (this == obj)
156 return true;
157 if (obj == null) {
158 return false;
159 }
160 if ((obj instanceof Opposite.Match)) {
161 Opposite.Match other = (Opposite.Match) obj;
162 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
163 } else {
164 // this should be infrequent
165 if (!(obj instanceof IPatternMatch)) {
166 return false;
167 }
168 IPatternMatch otherSig = (IPatternMatch) obj;
169 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
170 }
171 }
172
173 @Override
174 public Opposite specification() {
175 return Opposite.instance();
176 }
177
178 /**
179 * Returns an empty, mutable match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @return the empty match.
183 *
184 */
185 public static Opposite.Match newEmptyMatch() {
186 return new Mutable(null, null);
187 }
188
189 /**
190 * Returns a mutable (partial) match.
191 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
192 *
193 * @param pA the fixed value of pattern parameter a, or null if not bound.
194 * @param pB the fixed value of pattern parameter b, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static Opposite.Match newMutableMatch(final EReference pA, final EReference pB) {
199 return new Mutable(pA, pB);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pA the fixed value of pattern parameter a, or null if not bound.
207 * @param pB the fixed value of pattern parameter b, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static Opposite.Match newMatch(final EReference pA, final EReference pB) {
212 return new Immutable(pA, pB);
213 }
214
215 private static final class Mutable extends Opposite.Match {
216 Mutable(final EReference pA, final EReference pB) {
217 super(pA, pB);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends Opposite.Match {
227 Immutable(final EReference pA, final EReference pB) {
228 super(pA, pB);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * pattern opposite(a:EReference, b: EReference) {
250 * EReference.eOpposite(a,b);
251 * }
252 * </pre></code>
253 *
254 * @see Match
255 * @see Opposite
256 *
257 */
258 public static class Matcher extends BaseMatcher<Opposite.Match> {
259 /**
260 * Initializes the pattern matcher within an existing VIATRA Query engine.
261 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
262 *
263 * @param engine the existing VIATRA Query engine in which this matcher will be created.
264 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
265 *
266 */
267 public static Opposite.Matcher on(final ViatraQueryEngine engine) {
268 // check if matcher already exists
269 Matcher matcher = engine.getExistingMatcher(querySpecification());
270 if (matcher == null) {
271 matcher = (Matcher)engine.getMatcher(querySpecification());
272 }
273 return matcher;
274 }
275
276 /**
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 * @return an initialized matcher
279 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
280 *
281 */
282 public static Opposite.Matcher create() {
283 return new Matcher();
284 }
285
286 private static final int POSITION_A = 0;
287
288 private static final int POSITION_B = 1;
289
290 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Opposite.Matcher.class);
291
292 /**
293 * Initializes the pattern matcher within an existing VIATRA Query engine.
294 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
295 *
296 * @param engine the existing VIATRA Query engine in which this matcher will be created.
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 *
299 */
300 private Matcher() {
301 super(querySpecification());
302 }
303
304 /**
305 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
306 * @param pA the fixed value of pattern parameter a, or null if not bound.
307 * @param pB the fixed value of pattern parameter b, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<Opposite.Match> getAllMatches(final EReference pA, final EReference pB) {
312 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pA the fixed value of pattern parameter a, or null if not bound.
322 * @param pB the fixed value of pattern parameter b, or null if not bound.
323 * @return a stream of matches represented as a Match object.
324 *
325 */
326 public Stream<Opposite.Match> streamAllMatches(final EReference pA, final EReference pB) {
327 return rawStreamAllMatches(new Object[]{pA, pB});
328 }
329
330 /**
331 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
332 * Neither determinism nor randomness of selection is guaranteed.
333 * @param pA the fixed value of pattern parameter a, or null if not bound.
334 * @param pB the fixed value of pattern parameter b, or null if not bound.
335 * @return a match represented as a Match object, or null if no match is found.
336 *
337 */
338 public Optional<Opposite.Match> getOneArbitraryMatch(final EReference pA, final EReference pB) {
339 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
340 }
341
342 /**
343 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
344 * under any possible substitution of the unspecified parameters (if any).
345 * @param pA the fixed value of pattern parameter a, or null if not bound.
346 * @param pB the fixed value of pattern parameter b, or null if not bound.
347 * @return true if the input is a valid (partial) match of the pattern.
348 *
349 */
350 public boolean hasMatch(final EReference pA, final EReference pB) {
351 return rawHasMatch(new Object[]{pA, pB});
352 }
353
354 /**
355 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
356 * @param pA the fixed value of pattern parameter a, or null if not bound.
357 * @param pB the fixed value of pattern parameter b, or null if not bound.
358 * @return the number of pattern matches found.
359 *
360 */
361 public int countMatches(final EReference pA, final EReference pB) {
362 return rawCountMatches(new Object[]{pA, pB});
363 }
364
365 /**
366 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
367 * Neither determinism nor randomness of selection is guaranteed.
368 * @param pA the fixed value of pattern parameter a, or null if not bound.
369 * @param pB the fixed value of pattern parameter b, or null if not bound.
370 * @param processor the action that will process the selected match.
371 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
372 *
373 */
374 public boolean forOneArbitraryMatch(final EReference pA, final EReference pB, final Consumer<? super Opposite.Match> processor) {
375 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
376 }
377
378 /**
379 * Returns a new (partial) match.
380 * This can be used e.g. to call the matcher with a partial match.
381 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
382 * @param pA the fixed value of pattern parameter a, or null if not bound.
383 * @param pB the fixed value of pattern parameter b, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public Opposite.Match newMatch(final EReference pA, final EReference pB) {
388 return Opposite.Match.newMatch(pA, pB);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for a.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for a.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<EReference> getAllValuesOfa() {
406 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for a.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<EReference> streamAllValuesOfa() {
415 return rawStreamAllValuesOfa(emptyArray());
416 }
417
418 /**
419 * Retrieve the set of values that occur in matches for a.
420 * </p>
421 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
422 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
423 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
424 *
425 * @return the Stream of all values or empty set if there are no matches
426 *
427 */
428 public Stream<EReference> streamAllValuesOfa(final Opposite.Match partialMatch) {
429 return rawStreamAllValuesOfa(partialMatch.toArray());
430 }
431
432 /**
433 * Retrieve the set of values that occur in matches for a.
434 * </p>
435 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
436 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
437 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
438 *
439 * @return the Stream of all values or empty set if there are no matches
440 *
441 */
442 public Stream<EReference> streamAllValuesOfa(final EReference pB) {
443 return rawStreamAllValuesOfa(new Object[]{null, pB});
444 }
445
446 /**
447 * Retrieve the set of values that occur in matches for a.
448 * @return the Set of all values or empty set if there are no matches
449 *
450 */
451 public Set<EReference> getAllValuesOfa(final Opposite.Match partialMatch) {
452 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
453 }
454
455 /**
456 * Retrieve the set of values that occur in matches for a.
457 * @return the Set of all values or empty set if there are no matches
458 *
459 */
460 public Set<EReference> getAllValuesOfa(final EReference pB) {
461 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
462 }
463
464 /**
465 * Retrieve the set of values that occur in matches for b.
466 * @return the Set of all values or empty set if there are no matches
467 *
468 */
469 protected Stream<EReference> rawStreamAllValuesOfb(final Object[] parameters) {
470 return rawStreamAllValues(POSITION_B, parameters).map(EReference.class::cast);
471 }
472
473 /**
474 * Retrieve the set of values that occur in matches for b.
475 * @return the Set of all values or empty set if there are no matches
476 *
477 */
478 public Set<EReference> getAllValuesOfb() {
479 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
480 }
481
482 /**
483 * Retrieve the set of values that occur in matches for b.
484 * @return the Set of all values or empty set if there are no matches
485 *
486 */
487 public Stream<EReference> streamAllValuesOfb() {
488 return rawStreamAllValuesOfb(emptyArray());
489 }
490
491 /**
492 * Retrieve the set of values that occur in matches for b.
493 * </p>
494 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
495 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
496 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
497 *
498 * @return the Stream of all values or empty set if there are no matches
499 *
500 */
501 public Stream<EReference> streamAllValuesOfb(final Opposite.Match partialMatch) {
502 return rawStreamAllValuesOfb(partialMatch.toArray());
503 }
504
505 /**
506 * Retrieve the set of values that occur in matches for b.
507 * </p>
508 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
509 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
510 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
511 *
512 * @return the Stream of all values or empty set if there are no matches
513 *
514 */
515 public Stream<EReference> streamAllValuesOfb(final EReference pA) {
516 return rawStreamAllValuesOfb(new Object[]{pA, null});
517 }
518
519 /**
520 * Retrieve the set of values that occur in matches for b.
521 * @return the Set of all values or empty set if there are no matches
522 *
523 */
524 public Set<EReference> getAllValuesOfb(final Opposite.Match partialMatch) {
525 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
526 }
527
528 /**
529 * Retrieve the set of values that occur in matches for b.
530 * @return the Set of all values or empty set if there are no matches
531 *
532 */
533 public Set<EReference> getAllValuesOfb(final EReference pA) {
534 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
535 }
536
537 @Override
538 protected Opposite.Match tupleToMatch(final Tuple t) {
539 try {
540 return Opposite.Match.newMatch((EReference) t.get(POSITION_A), (EReference) t.get(POSITION_B));
541 } catch(ClassCastException e) {
542 LOGGER.error("Element(s) in tuple not properly typed!",e);
543 return null;
544 }
545 }
546
547 @Override
548 protected Opposite.Match arrayToMatch(final Object[] match) {
549 try {
550 return Opposite.Match.newMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
551 } catch(ClassCastException e) {
552 LOGGER.error("Element(s) in array not properly typed!",e);
553 return null;
554 }
555 }
556
557 @Override
558 protected Opposite.Match arrayToMatchMutable(final Object[] match) {
559 try {
560 return Opposite.Match.newMutableMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
561 } catch(ClassCastException e) {
562 LOGGER.error("Element(s) in array not properly typed!",e);
563 return null;
564 }
565 }
566
567 /**
568 * @return the singleton instance of the query specification of this pattern
569 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
570 *
571 */
572 public static IQuerySpecification<Opposite.Matcher> querySpecification() {
573 return Opposite.instance();
574 }
575 }
576
577 private Opposite() {
578 super(GeneratedPQuery.INSTANCE);
579 }
580
581 /**
582 * @return the singleton instance of the query specification
583 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
584 *
585 */
586 public static Opposite instance() {
587 try{
588 return LazyHolder.INSTANCE;
589 } catch (ExceptionInInitializerError err) {
590 throw processInitializerError(err);
591 }
592 }
593
594 @Override
595 protected Opposite.Matcher instantiate(final ViatraQueryEngine engine) {
596 return Opposite.Matcher.on(engine);
597 }
598
599 @Override
600 public Opposite.Matcher instantiate() {
601 return Opposite.Matcher.create();
602 }
603
604 @Override
605 public Opposite.Match newEmptyMatch() {
606 return Opposite.Match.newEmptyMatch();
607 }
608
609 @Override
610 public Opposite.Match newMatch(final Object... parameters) {
611 return Opposite.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0], (org.eclipse.emf.ecore.EReference) parameters[1]);
612 }
613
614 /**
615 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Opposite (visibility: PUBLIC, simpleName: Opposite, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Opposite, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
616 * <b>not</b> at the class load time of the outer class,
617 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Opposite (visibility: PUBLIC, simpleName: Opposite, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Opposite, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
618 *
619 * <p> This workaround is required e.g. to support recursion.
620 *
621 */
622 private static class LazyHolder {
623 private static final Opposite INSTANCE = new Opposite();
624
625 /**
626 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
627 * This initialization order is required to support indirect recursion.
628 *
629 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
630 *
631 */
632 private static final Object STATIC_INITIALIZER = ensureInitialized();
633
634 public static Object ensureInitialized() {
635 INSTANCE.ensureInitializedInternal();
636 return null;
637 }
638 }
639
640 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
641 private static final Opposite.GeneratedPQuery INSTANCE = new GeneratedPQuery();
642
643 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
644
645 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
646
647 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
648
649 private GeneratedPQuery() {
650 super(PVisibility.PUBLIC);
651 }
652
653 @Override
654 public String getFullyQualifiedName() {
655 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.opposite";
656 }
657
658 @Override
659 public List<String> getParameterNames() {
660 return Arrays.asList("a","b");
661 }
662
663 @Override
664 public List<PParameter> getParameters() {
665 return parameters;
666 }
667
668 @Override
669 public Set<PBody> doGetContainedBodies() {
670 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
671 Set<PBody> bodies = new LinkedHashSet<>();
672 {
673 PBody body = new PBody(this);
674 PVariable var_a = body.getOrCreateVariableByName("a");
675 PVariable var_b = body.getOrCreateVariableByName("b");
676 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
677 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
678 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
679 new ExportedParameter(body, var_a, parameter_a),
680 new ExportedParameter(body, var_b, parameter_b)
681 ));
682 // EReference.eOpposite(a,b)
683 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
684 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
685 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference", "eOpposite")));
686 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
687 new Equality(body, var__virtual_0_, var_b);
688 bodies.add(body);
689 }
690 return bodies;
691 }
692 }
693}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/OppositeDifferentClass.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/OppositeDifferentClass.java
new file mode 100644
index 00000000..887f8584
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/OppositeDifferentClass.java
@@ -0,0 +1,577 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.EReference;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(key={a}, severity="error", message="error")
50 * pattern oppositeDifferentClass(a:EReference) {
51 * EReference.eOpposite(a,b);
52 * EReference.eContainingClass(a,aContaining);
53 * EReference.eType(b,bTarget);
54 * aContaining != bTarget;
55 * }
56 * </pre></code>
57 *
58 * @see Matcher
59 * @see Match
60 *
61 */
62@SuppressWarnings("all")
63public final class OppositeDifferentClass extends BaseGeneratedEMFQuerySpecification<OppositeDifferentClass.Matcher> {
64 /**
65 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass pattern,
66 * to be used in conjunction with {@link Matcher}.
67 *
68 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
69 * Each instance is a (possibly partial) substitution of pattern parameters,
70 * usable to represent a match of the pattern in the result of a query,
71 * or to specify the bound (fixed) input parameters when issuing a query.
72 *
73 * @see Matcher
74 *
75 */
76 public static abstract class Match extends BasePatternMatch {
77 private EReference fA;
78
79 private static List<String> parameterNames = makeImmutableList("a");
80
81 private Match(final EReference pA) {
82 this.fA = pA;
83 }
84
85 @Override
86 public Object get(final String parameterName) {
87 if ("a".equals(parameterName)) return this.fA;
88 return null;
89 }
90
91 public EReference getA() {
92 return this.fA;
93 }
94
95 @Override
96 public boolean set(final String parameterName, final Object newValue) {
97 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
98 if ("a".equals(parameterName) ) {
99 this.fA = (EReference) newValue;
100 return true;
101 }
102 return false;
103 }
104
105 public void setA(final EReference pA) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 this.fA = pA;
108 }
109
110 @Override
111 public String patternName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass";
113 }
114
115 @Override
116 public List<String> parameterNames() {
117 return OppositeDifferentClass.Match.parameterNames;
118 }
119
120 @Override
121 public Object[] toArray() {
122 return new Object[]{fA};
123 }
124
125 @Override
126 public OppositeDifferentClass.Match toImmutable() {
127 return isMutable() ? newMatch(fA) : this;
128 }
129
130 @Override
131 public String prettyPrint() {
132 StringBuilder result = new StringBuilder();
133 result.append("\"a\"=" + prettyPrintValue(fA));
134 return result.toString();
135 }
136
137 @Override
138 public int hashCode() {
139 return Objects.hash(fA);
140 }
141
142 @Override
143 public boolean equals(final Object obj) {
144 if (this == obj)
145 return true;
146 if (obj == null) {
147 return false;
148 }
149 if ((obj instanceof OppositeDifferentClass.Match)) {
150 OppositeDifferentClass.Match other = (OppositeDifferentClass.Match) obj;
151 return Objects.equals(fA, other.fA);
152 } else {
153 // this should be infrequent
154 if (!(obj instanceof IPatternMatch)) {
155 return false;
156 }
157 IPatternMatch otherSig = (IPatternMatch) obj;
158 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
159 }
160 }
161
162 @Override
163 public OppositeDifferentClass specification() {
164 return OppositeDifferentClass.instance();
165 }
166
167 /**
168 * Returns an empty, mutable match.
169 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
170 *
171 * @return the empty match.
172 *
173 */
174 public static OppositeDifferentClass.Match newEmptyMatch() {
175 return new Mutable(null);
176 }
177
178 /**
179 * Returns a mutable (partial) match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @param pA the fixed value of pattern parameter a, or null if not bound.
183 * @return the new, mutable (partial) match object.
184 *
185 */
186 public static OppositeDifferentClass.Match newMutableMatch(final EReference pA) {
187 return new Mutable(pA);
188 }
189
190 /**
191 * Returns a new (partial) match.
192 * This can be used e.g. to call the matcher with a partial match.
193 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
194 * @param pA the fixed value of pattern parameter a, or null if not bound.
195 * @return the (partial) match object.
196 *
197 */
198 public static OppositeDifferentClass.Match newMatch(final EReference pA) {
199 return new Immutable(pA);
200 }
201
202 private static final class Mutable extends OppositeDifferentClass.Match {
203 Mutable(final EReference pA) {
204 super(pA);
205 }
206
207 @Override
208 public boolean isMutable() {
209 return true;
210 }
211 }
212
213 private static final class Immutable extends OppositeDifferentClass.Match {
214 Immutable(final EReference pA) {
215 super(pA);
216 }
217
218 @Override
219 public boolean isMutable() {
220 return false;
221 }
222 }
223 }
224
225 /**
226 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass pattern,
227 * providing pattern-specific query methods.
228 *
229 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
230 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
231 *
232 * <p>Matches of the pattern will be represented as {@link Match}.
233 *
234 * <p>Original source:
235 * <code><pre>
236 * {@literal @}Constraint(key={a}, severity="error", message="error")
237 * pattern oppositeDifferentClass(a:EReference) {
238 * EReference.eOpposite(a,b);
239 * EReference.eContainingClass(a,aContaining);
240 * EReference.eType(b,bTarget);
241 * aContaining != bTarget;
242 * }
243 * </pre></code>
244 *
245 * @see Match
246 * @see OppositeDifferentClass
247 *
248 */
249 public static class Matcher extends BaseMatcher<OppositeDifferentClass.Match> {
250 /**
251 * Initializes the pattern matcher within an existing VIATRA Query engine.
252 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
253 *
254 * @param engine the existing VIATRA Query engine in which this matcher will be created.
255 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
256 *
257 */
258 public static OppositeDifferentClass.Matcher on(final ViatraQueryEngine engine) {
259 // check if matcher already exists
260 Matcher matcher = engine.getExistingMatcher(querySpecification());
261 if (matcher == null) {
262 matcher = (Matcher)engine.getMatcher(querySpecification());
263 }
264 return matcher;
265 }
266
267 /**
268 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
269 * @return an initialized matcher
270 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
271 *
272 */
273 public static OppositeDifferentClass.Matcher create() {
274 return new Matcher();
275 }
276
277 private static final int POSITION_A = 0;
278
279 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(OppositeDifferentClass.Matcher.class);
280
281 /**
282 * Initializes the pattern matcher within an existing VIATRA Query engine.
283 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
284 *
285 * @param engine the existing VIATRA Query engine in which this matcher will be created.
286 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
287 *
288 */
289 private Matcher() {
290 super(querySpecification());
291 }
292
293 /**
294 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
295 * @param pA the fixed value of pattern parameter a, or null if not bound.
296 * @return matches represented as a Match object.
297 *
298 */
299 public Collection<OppositeDifferentClass.Match> getAllMatches(final EReference pA) {
300 return rawStreamAllMatches(new Object[]{pA}).collect(Collectors.toSet());
301 }
302
303 /**
304 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
305 * </p>
306 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
307 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
308 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
309 * @param pA the fixed value of pattern parameter a, or null if not bound.
310 * @return a stream of matches represented as a Match object.
311 *
312 */
313 public Stream<OppositeDifferentClass.Match> streamAllMatches(final EReference pA) {
314 return rawStreamAllMatches(new Object[]{pA});
315 }
316
317 /**
318 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
319 * Neither determinism nor randomness of selection is guaranteed.
320 * @param pA the fixed value of pattern parameter a, or null if not bound.
321 * @return a match represented as a Match object, or null if no match is found.
322 *
323 */
324 public Optional<OppositeDifferentClass.Match> getOneArbitraryMatch(final EReference pA) {
325 return rawGetOneArbitraryMatch(new Object[]{pA});
326 }
327
328 /**
329 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
330 * under any possible substitution of the unspecified parameters (if any).
331 * @param pA the fixed value of pattern parameter a, or null if not bound.
332 * @return true if the input is a valid (partial) match of the pattern.
333 *
334 */
335 public boolean hasMatch(final EReference pA) {
336 return rawHasMatch(new Object[]{pA});
337 }
338
339 /**
340 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
341 * @param pA the fixed value of pattern parameter a, or null if not bound.
342 * @return the number of pattern matches found.
343 *
344 */
345 public int countMatches(final EReference pA) {
346 return rawCountMatches(new Object[]{pA});
347 }
348
349 /**
350 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
351 * Neither determinism nor randomness of selection is guaranteed.
352 * @param pA the fixed value of pattern parameter a, or null if not bound.
353 * @param processor the action that will process the selected match.
354 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
355 *
356 */
357 public boolean forOneArbitraryMatch(final EReference pA, final Consumer<? super OppositeDifferentClass.Match> processor) {
358 return rawForOneArbitraryMatch(new Object[]{pA}, processor);
359 }
360
361 /**
362 * Returns a new (partial) match.
363 * This can be used e.g. to call the matcher with a partial match.
364 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
365 * @param pA the fixed value of pattern parameter a, or null if not bound.
366 * @return the (partial) match object.
367 *
368 */
369 public OppositeDifferentClass.Match newMatch(final EReference pA) {
370 return OppositeDifferentClass.Match.newMatch(pA);
371 }
372
373 /**
374 * Retrieve the set of values that occur in matches for a.
375 * @return the Set of all values or empty set if there are no matches
376 *
377 */
378 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
379 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
380 }
381
382 /**
383 * Retrieve the set of values that occur in matches for a.
384 * @return the Set of all values or empty set if there are no matches
385 *
386 */
387 public Set<EReference> getAllValuesOfa() {
388 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for a.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 public Stream<EReference> streamAllValuesOfa() {
397 return rawStreamAllValuesOfa(emptyArray());
398 }
399
400 @Override
401 protected OppositeDifferentClass.Match tupleToMatch(final Tuple t) {
402 try {
403 return OppositeDifferentClass.Match.newMatch((EReference) t.get(POSITION_A));
404 } catch(ClassCastException e) {
405 LOGGER.error("Element(s) in tuple not properly typed!",e);
406 return null;
407 }
408 }
409
410 @Override
411 protected OppositeDifferentClass.Match arrayToMatch(final Object[] match) {
412 try {
413 return OppositeDifferentClass.Match.newMatch((EReference) match[POSITION_A]);
414 } catch(ClassCastException e) {
415 LOGGER.error("Element(s) in array not properly typed!",e);
416 return null;
417 }
418 }
419
420 @Override
421 protected OppositeDifferentClass.Match arrayToMatchMutable(final Object[] match) {
422 try {
423 return OppositeDifferentClass.Match.newMutableMatch((EReference) match[POSITION_A]);
424 } catch(ClassCastException e) {
425 LOGGER.error("Element(s) in array not properly typed!",e);
426 return null;
427 }
428 }
429
430 /**
431 * @return the singleton instance of the query specification of this pattern
432 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
433 *
434 */
435 public static IQuerySpecification<OppositeDifferentClass.Matcher> querySpecification() {
436 return OppositeDifferentClass.instance();
437 }
438 }
439
440 private OppositeDifferentClass() {
441 super(GeneratedPQuery.INSTANCE);
442 }
443
444 /**
445 * @return the singleton instance of the query specification
446 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
447 *
448 */
449 public static OppositeDifferentClass instance() {
450 try{
451 return LazyHolder.INSTANCE;
452 } catch (ExceptionInInitializerError err) {
453 throw processInitializerError(err);
454 }
455 }
456
457 @Override
458 protected OppositeDifferentClass.Matcher instantiate(final ViatraQueryEngine engine) {
459 return OppositeDifferentClass.Matcher.on(engine);
460 }
461
462 @Override
463 public OppositeDifferentClass.Matcher instantiate() {
464 return OppositeDifferentClass.Matcher.create();
465 }
466
467 @Override
468 public OppositeDifferentClass.Match newEmptyMatch() {
469 return OppositeDifferentClass.Match.newEmptyMatch();
470 }
471
472 @Override
473 public OppositeDifferentClass.Match newMatch(final Object... parameters) {
474 return OppositeDifferentClass.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0]);
475 }
476
477 /**
478 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.OppositeDifferentClass (visibility: PUBLIC, simpleName: OppositeDifferentClass, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.OppositeDifferentClass, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
479 * <b>not</b> at the class load time of the outer class,
480 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.OppositeDifferentClass (visibility: PUBLIC, simpleName: OppositeDifferentClass, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.OppositeDifferentClass, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
481 *
482 * <p> This workaround is required e.g. to support recursion.
483 *
484 */
485 private static class LazyHolder {
486 private static final OppositeDifferentClass INSTANCE = new OppositeDifferentClass();
487
488 /**
489 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
490 * This initialization order is required to support indirect recursion.
491 *
492 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
493 *
494 */
495 private static final Object STATIC_INITIALIZER = ensureInitialized();
496
497 public static Object ensureInitialized() {
498 INSTANCE.ensureInitializedInternal();
499 return null;
500 }
501 }
502
503 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
504 private static final OppositeDifferentClass.GeneratedPQuery INSTANCE = new GeneratedPQuery();
505
506 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
507
508 private final List<PParameter> parameters = Arrays.asList(parameter_a);
509
510 private GeneratedPQuery() {
511 super(PVisibility.PUBLIC);
512 }
513
514 @Override
515 public String getFullyQualifiedName() {
516 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.oppositeDifferentClass";
517 }
518
519 @Override
520 public List<String> getParameterNames() {
521 return Arrays.asList("a");
522 }
523
524 @Override
525 public List<PParameter> getParameters() {
526 return parameters;
527 }
528
529 @Override
530 public Set<PBody> doGetContainedBodies() {
531 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
532 Set<PBody> bodies = new LinkedHashSet<>();
533 {
534 PBody body = new PBody(this);
535 PVariable var_a = body.getOrCreateVariableByName("a");
536 PVariable var_b = body.getOrCreateVariableByName("b");
537 PVariable var_aContaining = body.getOrCreateVariableByName("aContaining");
538 PVariable var_bTarget = body.getOrCreateVariableByName("bTarget");
539 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
540 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
541 new ExportedParameter(body, var_a, parameter_a)
542 ));
543 // EReference.eOpposite(a,b)
544 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
545 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
546 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference", "eOpposite")));
547 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
548 new Equality(body, var__virtual_0_, var_b);
549 // EReference.eContainingClass(a,aContaining)
550 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
551 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
552 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EStructuralFeature", "eContainingClass")));
553 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
554 new Equality(body, var__virtual_1_, var_aContaining);
555 // EReference.eType(b,bTarget)
556 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
557 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
558 new TypeConstraint(body, Tuples.flatTupleOf(var_b, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "ETypedElement", "eType")));
559 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClassifier")));
560 new Equality(body, var__virtual_2_, var_bTarget);
561 // aContaining != bTarget
562 new Inequality(body, var_aContaining, var_bTarget);
563 bodies.add(body);
564 }
565 {
566 PAnnotation annotation = new PAnnotation("Constraint");
567 annotation.addAttribute("key", Arrays.asList(new Object[] {
568 new ParameterReference("a")
569 }));
570 annotation.addAttribute("severity", "error");
571 annotation.addAttribute("message", "error");
572 addAnnotation(annotation);
573 }
574 return bodies;
575 }
576 }
577}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/PatternContent.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/PatternContent.java
new file mode 100644
index 00000000..690d3e27
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/src-gen/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/PatternContent.java
@@ -0,0 +1,693 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/FileSystem.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.alloyexamples;
5
6import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern patternContent(o1: FSObject, o2: FSObject) {
47 * Dir.contents(o1,o2);
48 * }
49 * </pre></code>
50 *
51 * @see Matcher
52 * @see Match
53 *
54 */
55@SuppressWarnings("all")
56public final class PatternContent extends BaseGeneratedEMFQuerySpecification<PatternContent.Matcher> {
57 /**
58 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent pattern,
59 * to be used in conjunction with {@link Matcher}.
60 *
61 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
62 * Each instance is a (possibly partial) substitution of pattern parameters,
63 * usable to represent a match of the pattern in the result of a query,
64 * or to specify the bound (fixed) input parameters when issuing a query.
65 *
66 * @see Matcher
67 *
68 */
69 public static abstract class Match extends BasePatternMatch {
70 private FSObject fO1;
71
72 private FSObject fO2;
73
74 private static List<String> parameterNames = makeImmutableList("o1", "o2");
75
76 private Match(final FSObject pO1, final FSObject pO2) {
77 this.fO1 = pO1;
78 this.fO2 = pO2;
79 }
80
81 @Override
82 public Object get(final String parameterName) {
83 if ("o1".equals(parameterName)) return this.fO1;
84 if ("o2".equals(parameterName)) return this.fO2;
85 return null;
86 }
87
88 public FSObject getO1() {
89 return this.fO1;
90 }
91
92 public FSObject getO2() {
93 return this.fO2;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("o1".equals(parameterName) ) {
100 this.fO1 = (FSObject) newValue;
101 return true;
102 }
103 if ("o2".equals(parameterName) ) {
104 this.fO2 = (FSObject) newValue;
105 return true;
106 }
107 return false;
108 }
109
110 public void setO1(final FSObject pO1) {
111 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
112 this.fO1 = pO1;
113 }
114
115 public void setO2(final FSObject pO2) {
116 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
117 this.fO2 = pO2;
118 }
119
120 @Override
121 public String patternName() {
122 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent";
123 }
124
125 @Override
126 public List<String> parameterNames() {
127 return PatternContent.Match.parameterNames;
128 }
129
130 @Override
131 public Object[] toArray() {
132 return new Object[]{fO1, fO2};
133 }
134
135 @Override
136 public PatternContent.Match toImmutable() {
137 return isMutable() ? newMatch(fO1, fO2) : this;
138 }
139
140 @Override
141 public String prettyPrint() {
142 StringBuilder result = new StringBuilder();
143 result.append("\"o1\"=" + prettyPrintValue(fO1) + ", ");
144 result.append("\"o2\"=" + prettyPrintValue(fO2));
145 return result.toString();
146 }
147
148 @Override
149 public int hashCode() {
150 return Objects.hash(fO1, fO2);
151 }
152
153 @Override
154 public boolean equals(final Object obj) {
155 if (this == obj)
156 return true;
157 if (obj == null) {
158 return false;
159 }
160 if ((obj instanceof PatternContent.Match)) {
161 PatternContent.Match other = (PatternContent.Match) obj;
162 return Objects.equals(fO1, other.fO1) && Objects.equals(fO2, other.fO2);
163 } else {
164 // this should be infrequent
165 if (!(obj instanceof IPatternMatch)) {
166 return false;
167 }
168 IPatternMatch otherSig = (IPatternMatch) obj;
169 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
170 }
171 }
172
173 @Override
174 public PatternContent specification() {
175 return PatternContent.instance();
176 }
177
178 /**
179 * Returns an empty, mutable match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @return the empty match.
183 *
184 */
185 public static PatternContent.Match newEmptyMatch() {
186 return new Mutable(null, null);
187 }
188
189 /**
190 * Returns a mutable (partial) match.
191 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
192 *
193 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
194 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static PatternContent.Match newMutableMatch(final FSObject pO1, final FSObject pO2) {
199 return new Mutable(pO1, pO2);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
207 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static PatternContent.Match newMatch(final FSObject pO1, final FSObject pO2) {
212 return new Immutable(pO1, pO2);
213 }
214
215 private static final class Mutable extends PatternContent.Match {
216 Mutable(final FSObject pO1, final FSObject pO2) {
217 super(pO1, pO2);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends PatternContent.Match {
227 Immutable(final FSObject pO1, final FSObject pO2) {
228 super(pO1, pO2);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * pattern patternContent(o1: FSObject, o2: FSObject) {
250 * Dir.contents(o1,o2);
251 * }
252 * </pre></code>
253 *
254 * @see Match
255 * @see PatternContent
256 *
257 */
258 public static class Matcher extends BaseMatcher<PatternContent.Match> {
259 /**
260 * Initializes the pattern matcher within an existing VIATRA Query engine.
261 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
262 *
263 * @param engine the existing VIATRA Query engine in which this matcher will be created.
264 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
265 *
266 */
267 public static PatternContent.Matcher on(final ViatraQueryEngine engine) {
268 // check if matcher already exists
269 Matcher matcher = engine.getExistingMatcher(querySpecification());
270 if (matcher == null) {
271 matcher = (Matcher)engine.getMatcher(querySpecification());
272 }
273 return matcher;
274 }
275
276 /**
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 * @return an initialized matcher
279 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
280 *
281 */
282 public static PatternContent.Matcher create() {
283 return new Matcher();
284 }
285
286 private static final int POSITION_O1 = 0;
287
288 private static final int POSITION_O2 = 1;
289
290 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(PatternContent.Matcher.class);
291
292 /**
293 * Initializes the pattern matcher within an existing VIATRA Query engine.
294 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
295 *
296 * @param engine the existing VIATRA Query engine in which this matcher will be created.
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 *
299 */
300 private Matcher() {
301 super(querySpecification());
302 }
303
304 /**
305 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
306 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
307 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<PatternContent.Match> getAllMatches(final FSObject pO1, final FSObject pO2) {
312 return rawStreamAllMatches(new Object[]{pO1, pO2}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
322 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
323 * @return a stream of matches represented as a Match object.
324 *
325 */
326 public Stream<PatternContent.Match> streamAllMatches(final FSObject pO1, final FSObject pO2) {
327 return rawStreamAllMatches(new Object[]{pO1, pO2});
328 }
329
330 /**
331 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
332 * Neither determinism nor randomness of selection is guaranteed.
333 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
334 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
335 * @return a match represented as a Match object, or null if no match is found.
336 *
337 */
338 public Optional<PatternContent.Match> getOneArbitraryMatch(final FSObject pO1, final FSObject pO2) {
339 return rawGetOneArbitraryMatch(new Object[]{pO1, pO2});
340 }
341
342 /**
343 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
344 * under any possible substitution of the unspecified parameters (if any).
345 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
346 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
347 * @return true if the input is a valid (partial) match of the pattern.
348 *
349 */
350 public boolean hasMatch(final FSObject pO1, final FSObject pO2) {
351 return rawHasMatch(new Object[]{pO1, pO2});
352 }
353
354 /**
355 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
356 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
357 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
358 * @return the number of pattern matches found.
359 *
360 */
361 public int countMatches(final FSObject pO1, final FSObject pO2) {
362 return rawCountMatches(new Object[]{pO1, pO2});
363 }
364
365 /**
366 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
367 * Neither determinism nor randomness of selection is guaranteed.
368 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
369 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
370 * @param processor the action that will process the selected match.
371 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
372 *
373 */
374 public boolean forOneArbitraryMatch(final FSObject pO1, final FSObject pO2, final Consumer<? super PatternContent.Match> processor) {
375 return rawForOneArbitraryMatch(new Object[]{pO1, pO2}, processor);
376 }
377
378 /**
379 * Returns a new (partial) match.
380 * This can be used e.g. to call the matcher with a partial match.
381 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
382 * @param pO1 the fixed value of pattern parameter o1, or null if not bound.
383 * @param pO2 the fixed value of pattern parameter o2, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public PatternContent.Match newMatch(final FSObject pO1, final FSObject pO2) {
388 return PatternContent.Match.newMatch(pO1, pO2);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for o1.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<FSObject> rawStreamAllValuesOfo1(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_O1, parameters).map(FSObject.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for o1.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<FSObject> getAllValuesOfo1() {
406 return rawStreamAllValuesOfo1(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for o1.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<FSObject> streamAllValuesOfo1() {
415 return rawStreamAllValuesOfo1(emptyArray());
416 }
417
418 /**
419 * Retrieve the set of values that occur in matches for o1.
420 * </p>
421 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
422 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
423 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
424 *
425 * @return the Stream of all values or empty set if there are no matches
426 *
427 */
428 public Stream<FSObject> streamAllValuesOfo1(final PatternContent.Match partialMatch) {
429 return rawStreamAllValuesOfo1(partialMatch.toArray());
430 }
431
432 /**
433 * Retrieve the set of values that occur in matches for o1.
434 * </p>
435 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
436 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
437 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
438 *
439 * @return the Stream of all values or empty set if there are no matches
440 *
441 */
442 public Stream<FSObject> streamAllValuesOfo1(final FSObject pO2) {
443 return rawStreamAllValuesOfo1(new Object[]{null, pO2});
444 }
445
446 /**
447 * Retrieve the set of values that occur in matches for o1.
448 * @return the Set of all values or empty set if there are no matches
449 *
450 */
451 public Set<FSObject> getAllValuesOfo1(final PatternContent.Match partialMatch) {
452 return rawStreamAllValuesOfo1(partialMatch.toArray()).collect(Collectors.toSet());
453 }
454
455 /**
456 * Retrieve the set of values that occur in matches for o1.
457 * @return the Set of all values or empty set if there are no matches
458 *
459 */
460 public Set<FSObject> getAllValuesOfo1(final FSObject pO2) {
461 return rawStreamAllValuesOfo1(new Object[]{null, pO2}).collect(Collectors.toSet());
462 }
463
464 /**
465 * Retrieve the set of values that occur in matches for o2.
466 * @return the Set of all values or empty set if there are no matches
467 *
468 */
469 protected Stream<FSObject> rawStreamAllValuesOfo2(final Object[] parameters) {
470 return rawStreamAllValues(POSITION_O2, parameters).map(FSObject.class::cast);
471 }
472
473 /**
474 * Retrieve the set of values that occur in matches for o2.
475 * @return the Set of all values or empty set if there are no matches
476 *
477 */
478 public Set<FSObject> getAllValuesOfo2() {
479 return rawStreamAllValuesOfo2(emptyArray()).collect(Collectors.toSet());
480 }
481
482 /**
483 * Retrieve the set of values that occur in matches for o2.
484 * @return the Set of all values or empty set if there are no matches
485 *
486 */
487 public Stream<FSObject> streamAllValuesOfo2() {
488 return rawStreamAllValuesOfo2(emptyArray());
489 }
490
491 /**
492 * Retrieve the set of values that occur in matches for o2.
493 * </p>
494 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
495 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
496 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
497 *
498 * @return the Stream of all values or empty set if there are no matches
499 *
500 */
501 public Stream<FSObject> streamAllValuesOfo2(final PatternContent.Match partialMatch) {
502 return rawStreamAllValuesOfo2(partialMatch.toArray());
503 }
504
505 /**
506 * Retrieve the set of values that occur in matches for o2.
507 * </p>
508 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
509 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
510 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
511 *
512 * @return the Stream of all values or empty set if there are no matches
513 *
514 */
515 public Stream<FSObject> streamAllValuesOfo2(final FSObject pO1) {
516 return rawStreamAllValuesOfo2(new Object[]{pO1, null});
517 }
518
519 /**
520 * Retrieve the set of values that occur in matches for o2.
521 * @return the Set of all values or empty set if there are no matches
522 *
523 */
524 public Set<FSObject> getAllValuesOfo2(final PatternContent.Match partialMatch) {
525 return rawStreamAllValuesOfo2(partialMatch.toArray()).collect(Collectors.toSet());
526 }
527
528 /**
529 * Retrieve the set of values that occur in matches for o2.
530 * @return the Set of all values or empty set if there are no matches
531 *
532 */
533 public Set<FSObject> getAllValuesOfo2(final FSObject pO1) {
534 return rawStreamAllValuesOfo2(new Object[]{pO1, null}).collect(Collectors.toSet());
535 }
536
537 @Override
538 protected PatternContent.Match tupleToMatch(final Tuple t) {
539 try {
540 return PatternContent.Match.newMatch((FSObject) t.get(POSITION_O1), (FSObject) t.get(POSITION_O2));
541 } catch(ClassCastException e) {
542 LOGGER.error("Element(s) in tuple not properly typed!",e);
543 return null;
544 }
545 }
546
547 @Override
548 protected PatternContent.Match arrayToMatch(final Object[] match) {
549 try {
550 return PatternContent.Match.newMatch((FSObject) match[POSITION_O1], (FSObject) match[POSITION_O2]);
551 } catch(ClassCastException e) {
552 LOGGER.error("Element(s) in array not properly typed!",e);
553 return null;
554 }
555 }
556
557 @Override
558 protected PatternContent.Match arrayToMatchMutable(final Object[] match) {
559 try {
560 return PatternContent.Match.newMutableMatch((FSObject) match[POSITION_O1], (FSObject) match[POSITION_O2]);
561 } catch(ClassCastException e) {
562 LOGGER.error("Element(s) in array not properly typed!",e);
563 return null;
564 }
565 }
566
567 /**
568 * @return the singleton instance of the query specification of this pattern
569 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
570 *
571 */
572 public static IQuerySpecification<PatternContent.Matcher> querySpecification() {
573 return PatternContent.instance();
574 }
575 }
576
577 private PatternContent() {
578 super(GeneratedPQuery.INSTANCE);
579 }
580
581 /**
582 * @return the singleton instance of the query specification
583 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
584 *
585 */
586 public static PatternContent instance() {
587 try{
588 return LazyHolder.INSTANCE;
589 } catch (ExceptionInInitializerError err) {
590 throw processInitializerError(err);
591 }
592 }
593
594 @Override
595 protected PatternContent.Matcher instantiate(final ViatraQueryEngine engine) {
596 return PatternContent.Matcher.on(engine);
597 }
598
599 @Override
600 public PatternContent.Matcher instantiate() {
601 return PatternContent.Matcher.create();
602 }
603
604 @Override
605 public PatternContent.Match newEmptyMatch() {
606 return PatternContent.Match.newEmptyMatch();
607 }
608
609 @Override
610 public PatternContent.Match newMatch(final Object... parameters) {
611 return PatternContent.Match.newMatch((hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject) parameters[0], (hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject) parameters[1]);
612 }
613
614 /**
615 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.PatternContent (visibility: PUBLIC, simpleName: PatternContent, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.PatternContent, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
616 * <b>not</b> at the class load time of the outer class,
617 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.PatternContent (visibility: PUBLIC, simpleName: PatternContent, identifier: hu.bme.mit.inf.dslreasoner.domains.alloyexamples.PatternContent, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.alloyexamples) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
618 *
619 * <p> This workaround is required e.g. to support recursion.
620 *
621 */
622 private static class LazyHolder {
623 private static final PatternContent INSTANCE = new PatternContent();
624
625 /**
626 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
627 * This initialization order is required to support indirect recursion.
628 *
629 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
630 *
631 */
632 private static final Object STATIC_INITIALIZER = ensureInitialized();
633
634 public static Object ensureInitialized() {
635 INSTANCE.ensureInitializedInternal();
636 return null;
637 }
638 }
639
640 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
641 private static final PatternContent.GeneratedPQuery INSTANCE = new GeneratedPQuery();
642
643 private final PParameter parameter_o1 = new PParameter("o1", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "FSObject")), PParameterDirection.INOUT);
644
645 private final PParameter parameter_o2 = new PParameter("o2", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FSObject", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FS", "FSObject")), PParameterDirection.INOUT);
646
647 private final List<PParameter> parameters = Arrays.asList(parameter_o1, parameter_o2);
648
649 private GeneratedPQuery() {
650 super(PVisibility.PUBLIC);
651 }
652
653 @Override
654 public String getFullyQualifiedName() {
655 return "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.patternContent";
656 }
657
658 @Override
659 public List<String> getParameterNames() {
660 return Arrays.asList("o1","o2");
661 }
662
663 @Override
664 public List<PParameter> getParameters() {
665 return parameters;
666 }
667
668 @Override
669 public Set<PBody> doGetContainedBodies() {
670 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
671 Set<PBody> bodies = new LinkedHashSet<>();
672 {
673 PBody body = new PBody(this);
674 PVariable var_o1 = body.getOrCreateVariableByName("o1");
675 PVariable var_o2 = body.getOrCreateVariableByName("o2");
676 new TypeConstraint(body, Tuples.flatTupleOf(var_o1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
677 new TypeConstraint(body, Tuples.flatTupleOf(var_o2), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
678 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
679 new ExportedParameter(body, var_o1, parameter_o1),
680 new ExportedParameter(body, var_o2, parameter_o2)
681 ));
682 // Dir.contents(o1,o2)
683 new TypeConstraint(body, Tuples.flatTupleOf(var_o1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "Dir")));
684 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
685 new TypeConstraint(body, Tuples.flatTupleOf(var_o1, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FS", "Dir", "contents")));
686 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FS", "FSObject")));
687 new Equality(body, var__virtual_0_, var_o2);
688 bodies.add(body);
689 }
690 return bodies;
691 }
692 }
693}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.classpath b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.classpath
new file mode 100644
index 00000000..22f30643
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.classpath
@@ -0,0 +1,7 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="src"/>
4 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6 <classpathentry kind="output" path="bin"/>
7</classpath>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.project b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.project
new file mode 100644
index 00000000..994e7632
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/.project
@@ -0,0 +1,29 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.domains.cps</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.jdt.core.javabuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.pde.ManifestBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.SchemaBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 </buildSpec>
24 <natures>
25 <nature>org.eclipse.sirius.nature.modelingproject</nature>
26 <nature>org.eclipse.jdt.core.javanature</nature>
27 <nature>org.eclipse.pde.PluginNature</nature>
28 </natures>
29</projectDescription>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/META-INF/MANIFEST.MF b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..4d2fd769
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: hu.bme.mit.inf.dslreasoner.domains.cps
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.domains.cps; singleton:=true
5Bundle-Version: 0.1.0.qualifier
6Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
7 org.eclipse.core.runtime
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/README.md b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/README.md
new file mode 100644
index 00000000..986663fd
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/README.md
@@ -0,0 +1,7 @@
1# Cyber Physical System case study for VIATRA Solver
2
3## Modifications to the metamodel
4
5* Removed the `State` enumeration and the `ApplicationInstance.state` attribute, as we are only optimizing static configurations of applications instead of deployment strategies.
6* Added `ApplicationInstance.requirement` as an opposite reference of `Requirement.instances` with multiplicity `[1..1]` to ensure that each `ApplicationInstance` satisfies exactly one `Requirement`.
7* Marked `HostInstance.availableMemory`, `availableHdd`, `totalMemory`, `totalHdd` as derived. The values of `availableMemory` and `availableHdd` can be computed from `totalMemory`, `totalHdd` and the `ResourceRequirement`s associated with the `ApplicationInstances` allocated to the `HostInstance`, while `totalMemory` and `totalHdd` are always equal to `HostType.defaultMemory` and `defaultHdd`. \ No newline at end of file
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.aird b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.aird
new file mode 100644
index 00000000..d94d68b4
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.aird
@@ -0,0 +1,828 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_kQWZMFvMEemLJtrAOuDPFQ" selectedViews="_kSYZgFvMEemLJtrAOuDPFQ" version="14.1.0.201810161215">
4 <semanticResources>cps.ecore</semanticResources>
5 <semanticResources>cps.genmodel</semanticResources>
6 <ownedViews xmi:type="viewpoint:DView" uid="_kSYZgFvMEemLJtrAOuDPFQ">
7 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
8 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_kTNf8FvMEemLJtrAOuDPFQ" name="cps" repPath="#_kSw0AFvMEemLJtrAOuDPFQ">
9 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10 <target xmi:type="ecore:EPackage" href="cps.ecore#/"/>
11 </ownedRepresentationDescriptors>
12 </ownedViews>
13 </viewpoint:DAnalysis>
14 <diagram:DSemanticDiagram uid="_kSw0AFvMEemLJtrAOuDPFQ" name="cps">
15 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_kTLqwFvMEemLJtrAOuDPFQ" source="DANNOTATION_CUSTOMIZATION_KEY">
16 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_kTLqwVvMEemLJtrAOuDPFQ">
17 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_-5WboFvNEemLJtrAOuDPFQ" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
18 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
19 <labelFormat>bold</labelFormat>
20 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
21 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
22 </computedStyleDescriptions>
23 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_CU6KQFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan">
24 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
25 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_CU6KQVvTEemLJtrAOuDPFQ" showIcon="false" labelExpression="service:render">
26 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
27 </centerLabelStyleDescription>
28 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_CU6KQlvTEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
29 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
30 </endLabelStyleDescription>
31 </computedStyleDescriptions>
32 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_KkeMsFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan">
33 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
34 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_KkeMsVvTEemLJtrAOuDPFQ" showIcon="false" labelExpression="service:renderEOpposite">
35 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
36 </beginLabelStyleDescription>
37 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_KkeMslvTEemLJtrAOuDPFQ" showIcon="false" labelExpression="service:render">
38 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
39 </endLabelStyleDescription>
40 </computedStyleDescriptions>
41 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_PIc4wFvUEemLJtrAOuDPFQ" routingStyle="manhattan">
42 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
43 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_PIc4wVvUEemLJtrAOuDPFQ" showIcon="false" labelExpression="service:render">
44 <labelFormat>bold</labelFormat>
45 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
46 </centerLabelStyleDescription>
47 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_PIc4wlvUEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
48 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
49 </endLabelStyleDescription>
50 </computedStyleDescriptions>
51 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_8rRg4lvVEemLJtrAOuDPFQ" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
52 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
53 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
54 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
55 </computedStyleDescriptions>
56 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_QukvxlvZEemLJtrAOuDPFQ" routingStyle="manhattan">
57 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
58 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_Qukvx1vZEemLJtrAOuDPFQ" showIcon="false" labelExpression="service:render">
59 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
60 </centerLabelStyleDescription>
61 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_QukvyFvZEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
62 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
63 </endLabelStyleDescription>
64 </computedStyleDescriptions>
65 </data>
66 </ownedAnnotationEntries>
67 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_kTOHAFvMEemLJtrAOuDPFQ" source="GMF_DIAGRAMS">
68 <data xmi:type="notation:Diagram" xmi:id="_kTOHAVvMEemLJtrAOuDPFQ" type="Sirius" element="_kSw0AFvMEemLJtrAOuDPFQ" measurementUnit="Pixel">
69 <children xmi:type="notation:Node" xmi:id="_IuOrgFvNEemLJtrAOuDPFQ" type="2003" element="_Itg50FvNEemLJtrAOuDPFQ">
70 <children xmi:type="notation:Node" xmi:id="_IuS88FvNEemLJtrAOuDPFQ" type="5007"/>
71 <children xmi:type="notation:Node" xmi:id="_IuWnUFvNEemLJtrAOuDPFQ" type="7004">
72 <styles xmi:type="notation:SortingStyle" xmi:id="_IuWnUVvNEemLJtrAOuDPFQ"/>
73 <styles xmi:type="notation:FilteringStyle" xmi:id="_IuWnUlvNEemLJtrAOuDPFQ"/>
74 </children>
75 <styles xmi:type="notation:ShapeStyle" xmi:id="_IuOrgVvNEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
76 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IuOrglvNEemLJtrAOuDPFQ" x="503" y="30" width="138" height="100"/>
77 </children>
78 <children xmi:type="notation:Node" xmi:id="_8icOoFvNEemLJtrAOuDPFQ" type="2003" element="_8iM-EFvNEemLJtrAOuDPFQ">
79 <children xmi:type="notation:Node" xmi:id="_8idcwFvNEemLJtrAOuDPFQ" type="5007"/>
80 <children xmi:type="notation:Node" xmi:id="_8idcwVvNEemLJtrAOuDPFQ" type="7004">
81 <styles xmi:type="notation:SortingStyle" xmi:id="_8idcwlvNEemLJtrAOuDPFQ"/>
82 <styles xmi:type="notation:FilteringStyle" xmi:id="_8idcw1vNEemLJtrAOuDPFQ"/>
83 </children>
84 <styles xmi:type="notation:ShapeStyle" xmi:id="_8icOoVvNEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
85 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8icOolvNEemLJtrAOuDPFQ" x="270" y="210" width="120" height="100"/>
86 </children>
87 <children xmi:type="notation:Node" xmi:id="_FZ9o8FvOEemLJtrAOuDPFQ" type="2003" element="_FZ1GEFvOEemLJtrAOuDPFQ">
88 <children xmi:type="notation:Node" xmi:id="_FZ9o81vOEemLJtrAOuDPFQ" type="5007"/>
89 <children xmi:type="notation:Node" xmi:id="_FZ-QAFvOEemLJtrAOuDPFQ" type="7004">
90 <children xmi:type="notation:Node" xmi:id="_XxoccFvREemLJtrAOuDPFQ" type="3010" element="_Xxc2QFvREemLJtrAOuDPFQ">
91 <styles xmi:type="notation:FontStyle" xmi:id="_XxoccVvREemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
92 <layoutConstraint xmi:type="notation:Location" xmi:id="_XxocclvREemLJtrAOuDPFQ"/>
93 </children>
94 <children xmi:type="notation:Node" xmi:id="_bL_qgFvREemLJtrAOuDPFQ" type="3010" element="_bLzdQFvREemLJtrAOuDPFQ">
95 <styles xmi:type="notation:FontStyle" xmi:id="_bL_qgVvREemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
96 <layoutConstraint xmi:type="notation:Location" xmi:id="_bL_qglvREemLJtrAOuDPFQ"/>
97 </children>
98 <styles xmi:type="notation:SortingStyle" xmi:id="_FZ-QAVvOEemLJtrAOuDPFQ"/>
99 <styles xmi:type="notation:FilteringStyle" xmi:id="_FZ-QAlvOEemLJtrAOuDPFQ"/>
100 </children>
101 <styles xmi:type="notation:ShapeStyle" xmi:id="_FZ9o8VvOEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
102 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ9o8lvOEemLJtrAOuDPFQ" x="750" y="210" width="153" height="100"/>
103 </children>
104 <children xmi:type="notation:Node" xmi:id="_jfOE8FvREemLJtrAOuDPFQ" type="2003" element="_jfFiEFvREemLJtrAOuDPFQ">
105 <children xmi:type="notation:Node" xmi:id="_jfOE81vREemLJtrAOuDPFQ" type="5007"/>
106 <children xmi:type="notation:Node" xmi:id="_jfOE9FvREemLJtrAOuDPFQ" type="7004">
107 <styles xmi:type="notation:SortingStyle" xmi:id="_jfOE9VvREemLJtrAOuDPFQ"/>
108 <styles xmi:type="notation:FilteringStyle" xmi:id="_jfOE9lvREemLJtrAOuDPFQ"/>
109 </children>
110 <styles xmi:type="notation:ShapeStyle" xmi:id="_jfOE8VvREemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
111 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jfOE8lvREemLJtrAOuDPFQ" x="30" y="30" width="120" height="100"/>
112 </children>
113 <children xmi:type="notation:Node" xmi:id="_p1JFMFvREemLJtrAOuDPFQ" type="2003" element="_p05NkFvREemLJtrAOuDPFQ">
114 <children xmi:type="notation:Node" xmi:id="_p1JsQFvREemLJtrAOuDPFQ" type="5007"/>
115 <children xmi:type="notation:Node" xmi:id="_p1JsQVvREemLJtrAOuDPFQ" type="7004">
116 <children xmi:type="notation:Node" xmi:id="_NsXKsFvTEemLJtrAOuDPFQ" type="3010" element="_Nr-JIFvTEemLJtrAOuDPFQ">
117 <styles xmi:type="notation:FontStyle" xmi:id="_NsXKsVvTEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
118 <layoutConstraint xmi:type="notation:Location" xmi:id="_NsXKslvTEemLJtrAOuDPFQ"/>
119 </children>
120 <styles xmi:type="notation:SortingStyle" xmi:id="_p1JsQlvREemLJtrAOuDPFQ"/>
121 <styles xmi:type="notation:FilteringStyle" xmi:id="_p1JsQ1vREemLJtrAOuDPFQ"/>
122 </children>
123 <styles xmi:type="notation:ShapeStyle" xmi:id="_p1JFMVvREemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
124 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p1JFMlvREemLJtrAOuDPFQ" x="30" y="210" width="120" height="100"/>
125 </children>
126 <children xmi:type="notation:Node" xmi:id="_vI6r8FvREemLJtrAOuDPFQ" type="2003" element="_vIvs0FvREemLJtrAOuDPFQ">
127 <children xmi:type="notation:Node" xmi:id="_vI7TAFvREemLJtrAOuDPFQ" type="5007"/>
128 <children xmi:type="notation:Node" xmi:id="_vI7TAVvREemLJtrAOuDPFQ" type="7004">
129 <styles xmi:type="notation:SortingStyle" xmi:id="_vI7TAlvREemLJtrAOuDPFQ"/>
130 <styles xmi:type="notation:FilteringStyle" xmi:id="_vI7TA1vREemLJtrAOuDPFQ"/>
131 </children>
132 <styles xmi:type="notation:ShapeStyle" xmi:id="_vI6r8VvREemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
133 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vI6r8lvREemLJtrAOuDPFQ" x="261" y="390" width="138" height="100"/>
134 </children>
135 <children xmi:type="notation:Node" xmi:id="_PdzIkFvSEemLJtrAOuDPFQ" type="2003" element="_PdlGIFvSEemLJtrAOuDPFQ">
136 <children xmi:type="notation:Node" xmi:id="_PdzvoFvSEemLJtrAOuDPFQ" type="5007"/>
137 <children xmi:type="notation:Node" xmi:id="_PdzvoVvSEemLJtrAOuDPFQ" type="7004">
138 <children xmi:type="notation:Node" xmi:id="_ReTnwFvSEemLJtrAOuDPFQ" type="3010" element="_ReIBkFvSEemLJtrAOuDPFQ">
139 <styles xmi:type="notation:FontStyle" xmi:id="_ReTnwVvSEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
140 <layoutConstraint xmi:type="notation:Location" xmi:id="_ReTnwlvSEemLJtrAOuDPFQ"/>
141 </children>
142 <children xmi:type="notation:Node" xmi:id="_S48ZwFvSEemLJtrAOuDPFQ" type="3010" element="_S4npoFvSEemLJtrAOuDPFQ">
143 <styles xmi:type="notation:FontStyle" xmi:id="_S48ZwVvSEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
144 <layoutConstraint xmi:type="notation:Location" xmi:id="_S48ZwlvSEemLJtrAOuDPFQ"/>
145 </children>
146 <styles xmi:type="notation:SortingStyle" xmi:id="_PdzvolvSEemLJtrAOuDPFQ"/>
147 <styles xmi:type="notation:FilteringStyle" xmi:id="_Pdzvo1vSEemLJtrAOuDPFQ"/>
148 </children>
149 <styles xmi:type="notation:ShapeStyle" xmi:id="_PdzIkVvSEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
150 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdzIklvSEemLJtrAOuDPFQ" x="495" y="210" width="153" height="100"/>
151 </children>
152 <children xmi:type="notation:Node" xmi:id="_UoYsMFvUEemLJtrAOuDPFQ" type="2003" element="_UoGYUFvUEemLJtrAOuDPFQ">
153 <children xmi:type="notation:Node" xmi:id="_UoZTQFvUEemLJtrAOuDPFQ" type="5007"/>
154 <children xmi:type="notation:Node" xmi:id="_UoZTQVvUEemLJtrAOuDPFQ" type="7004">
155 <children xmi:type="notation:Node" xmi:id="_jPSrMFvUEemLJtrAOuDPFQ" type="3010" element="_jO97EFvUEemLJtrAOuDPFQ">
156 <styles xmi:type="notation:FontStyle" xmi:id="_jPSrMVvUEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
157 <layoutConstraint xmi:type="notation:Location" xmi:id="_jPSrMlvUEemLJtrAOuDPFQ"/>
158 </children>
159 <children xmi:type="notation:Node" xmi:id="_lZeDwFvUEemLJtrAOuDPFQ" type="3010" element="_lZB-4FvUEemLJtrAOuDPFQ">
160 <styles xmi:type="notation:FontStyle" xmi:id="_lZeDwVvUEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
161 <layoutConstraint xmi:type="notation:Location" xmi:id="_lZeDwlvUEemLJtrAOuDPFQ"/>
162 </children>
163 <children xmi:type="notation:Node" xmi:id="_n0xokFvUEemLJtrAOuDPFQ" type="3010" element="_n0acMFvUEemLJtrAOuDPFQ">
164 <styles xmi:type="notation:FontStyle" xmi:id="_n0xokVvUEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
165 <layoutConstraint xmi:type="notation:Location" xmi:id="_n0xoklvUEemLJtrAOuDPFQ"/>
166 </children>
167 <children xmi:type="notation:Node" xmi:id="_pHqMwFvUEemLJtrAOuDPFQ" type="3010" element="_pHVcoFvUEemLJtrAOuDPFQ">
168 <styles xmi:type="notation:FontStyle" xmi:id="_pHqMwVvUEemLJtrAOuDPFQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
169 <layoutConstraint xmi:type="notation:Location" xmi:id="_pHqMwlvUEemLJtrAOuDPFQ"/>
170 </children>
171 <styles xmi:type="notation:SortingStyle" xmi:id="_UoZTQlvUEemLJtrAOuDPFQ"/>
172 <styles xmi:type="notation:FilteringStyle" xmi:id="_UoZTQ1vUEemLJtrAOuDPFQ"/>
173 </children>
174 <styles xmi:type="notation:ShapeStyle" xmi:id="_UoYsMVvUEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
175 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UoYsMlvUEemLJtrAOuDPFQ" x="750" y="390" width="153" height="100"/>
176 </children>
177 <styles xmi:type="notation:DiagramStyle" xmi:id="_kTOHAlvMEemLJtrAOuDPFQ"/>
178 <edges xmi:type="notation:Edge" xmi:id="_CVagkFvTEemLJtrAOuDPFQ" type="4001" element="_CU3uAFvTEemLJtrAOuDPFQ" source="_IuOrgFvNEemLJtrAOuDPFQ" target="_jfOE8FvREemLJtrAOuDPFQ">
179 <children xmi:type="notation:Node" xmi:id="_CVcVwFvTEemLJtrAOuDPFQ" type="6001">
180 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CVcVwVvTEemLJtrAOuDPFQ" x="-3" y="11"/>
181 </children>
182 <children xmi:type="notation:Node" xmi:id="_CVc80FvTEemLJtrAOuDPFQ" type="6002">
183 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CVc80VvTEemLJtrAOuDPFQ" x="109" y="10"/>
184 </children>
185 <children xmi:type="notation:Node" xmi:id="_CVdj4FvTEemLJtrAOuDPFQ" type="6003">
186 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CVdj4VvTEemLJtrAOuDPFQ" x="19" y="10"/>
187 </children>
188 <styles xmi:type="notation:ConnectorStyle" xmi:id="_CVbHoFvTEemLJtrAOuDPFQ" routing="Rectilinear"/>
189 <styles xmi:type="notation:FontStyle" xmi:id="_CVbHoVvTEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
190 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CVbHolvTEemLJtrAOuDPFQ" points="[0, 0, 355, 0]$[-355, 0, 0, 0]"/>
191 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVicYFvTEemLJtrAOuDPFQ" id="(0.0,0.5)"/>
192 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVicYVvTEemLJtrAOuDPFQ" id="(1.0,0.5)"/>
193 </edges>
194 <edges xmi:type="notation:Edge" xmi:id="_IODu8FvTEemLJtrAOuDPFQ" type="4001" element="_INyCIFvTEemLJtrAOuDPFQ" source="_jfOE8FvREemLJtrAOuDPFQ" target="_p1JFMFvREemLJtrAOuDPFQ">
195 <children xmi:type="notation:Node" xmi:id="_IODu9FvTEemLJtrAOuDPFQ" type="6001">
196 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IODu9VvTEemLJtrAOuDPFQ" y="-10"/>
197 </children>
198 <children xmi:type="notation:Node" xmi:id="_IODu9lvTEemLJtrAOuDPFQ" type="6002">
199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IODu91vTEemLJtrAOuDPFQ" x="3" y="-50"/>
200 </children>
201 <children xmi:type="notation:Node" xmi:id="_IOEWAFvTEemLJtrAOuDPFQ" type="6003">
202 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IOEWAVvTEemLJtrAOuDPFQ" x="-10" y="-62"/>
203 </children>
204 <styles xmi:type="notation:ConnectorStyle" xmi:id="_IODu8VvTEemLJtrAOuDPFQ" routing="Rectilinear"/>
205 <styles xmi:type="notation:FontStyle" xmi:id="_IODu8lvTEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
206 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IODu81vTEemLJtrAOuDPFQ" points="[0, 0, 0, -82]$[0, 82, 0, 0]"/>
207 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IOEWAlvTEemLJtrAOuDPFQ" id="(0.5,1.0)"/>
208 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IOEWA1vTEemLJtrAOuDPFQ" id="(0.5,0.0)"/>
209 </edges>
210 <edges xmi:type="notation:Edge" xmi:id="_XdMLkFvTEemLJtrAOuDPFQ" type="4001" element="_Xc3bc1vTEemLJtrAOuDPFQ" source="_p1JFMFvREemLJtrAOuDPFQ" target="_8icOoFvNEemLJtrAOuDPFQ">
211 <children xmi:type="notation:Node" xmi:id="_XdMLlFvTEemLJtrAOuDPFQ" type="6001">
212 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdMLlVvTEemLJtrAOuDPFQ" x="-19" y="-11"/>
213 </children>
214 <children xmi:type="notation:Node" xmi:id="_XdMLllvTEemLJtrAOuDPFQ" type="6002">
215 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdMLl1vTEemLJtrAOuDPFQ" y="10"/>
216 </children>
217 <children xmi:type="notation:Node" xmi:id="_XdMyoFvTEemLJtrAOuDPFQ" type="6003">
218 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdMyoVvTEemLJtrAOuDPFQ" y="10"/>
219 </children>
220 <styles xmi:type="notation:ConnectorStyle" xmi:id="_XdMLkVvTEemLJtrAOuDPFQ" routing="Rectilinear"/>
221 <styles xmi:type="notation:FontStyle" xmi:id="_XdMLklvTEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
222 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XdMLk1vTEemLJtrAOuDPFQ" points="[0, 0, -122, 0]$[122, 0, 0, 0]"/>
223 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XdMyolvTEemLJtrAOuDPFQ" id="(1.0,0.5)"/>
224 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XdMyo1vTEemLJtrAOuDPFQ" id="(0.0,0.5)"/>
225 </edges>
226 <edges xmi:type="notation:Edge" xmi:id="_dUiZcFvTEemLJtrAOuDPFQ" type="4001" element="_dUZ2kFvTEemLJtrAOuDPFQ" source="_p1JFMFvREemLJtrAOuDPFQ" target="_vI6r8FvREemLJtrAOuDPFQ">
227 <children xmi:type="notation:Node" xmi:id="_dUiZdFvTEemLJtrAOuDPFQ" type="6001">
228 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dUiZdVvTEemLJtrAOuDPFQ" y="-10"/>
229 </children>
230 <children xmi:type="notation:Node" xmi:id="_dUiZdlvTEemLJtrAOuDPFQ" type="6002">
231 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dUiZd1vTEemLJtrAOuDPFQ" x="-17" y="-61"/>
232 </children>
233 <children xmi:type="notation:Node" xmi:id="_dUiZeFvTEemLJtrAOuDPFQ" type="6003">
234 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dUiZeVvTEemLJtrAOuDPFQ" x="-30" y="23"/>
235 </children>
236 <styles xmi:type="notation:ConnectorStyle" xmi:id="_dUiZcVvTEemLJtrAOuDPFQ" routing="Rectilinear"/>
237 <styles xmi:type="notation:FontStyle" xmi:id="_dUiZclvTEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
238 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dUiZc1vTEemLJtrAOuDPFQ" points="[0, 0, -171, -142]$[0, 142, -171, 0]$[171, 142, 0, 0]"/>
239 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dUiZelvTEemLJtrAOuDPFQ" id="(0.5084745762711864,1.0)"/>
240 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dUiZe1vTEemLJtrAOuDPFQ" id="(0.0,0.6122448979591837)"/>
241 </edges>
242 <edges xmi:type="notation:Edge" xmi:id="_jGlQkFvTEemLJtrAOuDPFQ" type="4001" element="_jGSVo1vTEemLJtrAOuDPFQ" source="_8icOoFvNEemLJtrAOuDPFQ" target="_vI6r8FvREemLJtrAOuDPFQ">
243 <children xmi:type="notation:Node" xmi:id="_jGlQlFvTEemLJtrAOuDPFQ" type="6001">
244 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jGl3oFvTEemLJtrAOuDPFQ" y="-10"/>
245 </children>
246 <children xmi:type="notation:Node" xmi:id="_jGl3oVvTEemLJtrAOuDPFQ" type="6002">
247 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jGl3olvTEemLJtrAOuDPFQ" x="3" y="-42"/>
248 </children>
249 <children xmi:type="notation:Node" xmi:id="_jGl3o1vTEemLJtrAOuDPFQ" type="6003">
250 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jGl3pFvTEemLJtrAOuDPFQ" x="-10" y="-54"/>
251 </children>
252 <styles xmi:type="notation:ConnectorStyle" xmi:id="_jGlQkVvTEemLJtrAOuDPFQ" routing="Rectilinear"/>
253 <styles xmi:type="notation:FontStyle" xmi:id="_jGlQklvTEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
254 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jGlQk1vTEemLJtrAOuDPFQ" points="[0, 0, 0, -82]$[0, 82, 0, 0]"/>
255 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jGl3pVvTEemLJtrAOuDPFQ" id="(0.5,1.0)"/>
256 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jGl3plvTEemLJtrAOuDPFQ" id="(0.5,0.0)"/>
257 </edges>
258 <edges xmi:type="notation:Edge" xmi:id="_GOZu4FvUEemLJtrAOuDPFQ" type="4001" element="_GOOItlvUEemLJtrAOuDPFQ" source="_8icOoFvNEemLJtrAOuDPFQ" target="_PdzIkFvSEemLJtrAOuDPFQ">
259 <children xmi:type="notation:Node" xmi:id="_GOZu5FvUEemLJtrAOuDPFQ" type="6001">
260 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GOZu5VvUEemLJtrAOuDPFQ" y="-10"/>
261 </children>
262 <children xmi:type="notation:Node" xmi:id="_GOZu5lvUEemLJtrAOuDPFQ" type="6002">
263 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GOZu51vUEemLJtrAOuDPFQ" y="10"/>
264 </children>
265 <children xmi:type="notation:Node" xmi:id="_GOZu6FvUEemLJtrAOuDPFQ" type="6003">
266 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GOZu6VvUEemLJtrAOuDPFQ" y="10"/>
267 </children>
268 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GOZu4VvUEemLJtrAOuDPFQ" routing="Rectilinear"/>
269 <styles xmi:type="notation:FontStyle" xmi:id="_GOZu4lvUEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
270 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GOZu41vUEemLJtrAOuDPFQ" points="[0, 0, -107, 0]$[107, 0, 0, 0]"/>
271 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GOZu6lvUEemLJtrAOuDPFQ" id="(1.0,0.5)"/>
272 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GOZu61vUEemLJtrAOuDPFQ" id="(0.0,0.5)"/>
273 </edges>
274 <edges xmi:type="notation:Edge" xmi:id="_OKpMsFvUEemLJtrAOuDPFQ" type="4001" element="_OKZ8IFvUEemLJtrAOuDPFQ" source="_PdzIkFvSEemLJtrAOuDPFQ" target="_FZ9o8FvOEemLJtrAOuDPFQ">
275 <children xmi:type="notation:Node" xmi:id="_OKpMtFvUEemLJtrAOuDPFQ" type="6001">
276 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OKpMtVvUEemLJtrAOuDPFQ" y="-10"/>
277 </children>
278 <children xmi:type="notation:Node" xmi:id="_OKpzwFvUEemLJtrAOuDPFQ" type="6002">
279 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OKpzwVvUEemLJtrAOuDPFQ" y="10"/>
280 </children>
281 <children xmi:type="notation:Node" xmi:id="_OKpzwlvUEemLJtrAOuDPFQ" type="6003">
282 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OKpzw1vUEemLJtrAOuDPFQ" y="10"/>
283 </children>
284 <styles xmi:type="notation:ConnectorStyle" xmi:id="_OKpMsVvUEemLJtrAOuDPFQ" routing="Rectilinear"/>
285 <styles xmi:type="notation:FontStyle" xmi:id="_OKpMslvUEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
286 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OKpMs1vUEemLJtrAOuDPFQ" points="[0, 0, -104, 0]$[104, 0, 0, 0]"/>
287 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OKpzxFvUEemLJtrAOuDPFQ" id="(1.0,0.5)"/>
288 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OKpzxVvUEemLJtrAOuDPFQ" id="(0.0,0.5)"/>
289 </edges>
290 <edges xmi:type="notation:Edge" xmi:id="_Ya-0EFvUEemLJtrAOuDPFQ" type="4001" element="_YawKkFvUEemLJtrAOuDPFQ" source="_FZ9o8FvOEemLJtrAOuDPFQ" target="_UoYsMFvUEemLJtrAOuDPFQ">
291 <children xmi:type="notation:Node" xmi:id="_Ya-0FFvUEemLJtrAOuDPFQ" type="6001">
292 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ya_bIFvUEemLJtrAOuDPFQ" y="-10"/>
293 </children>
294 <children xmi:type="notation:Node" xmi:id="_Ya_bIVvUEemLJtrAOuDPFQ" type="6002">
295 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ya_bIlvUEemLJtrAOuDPFQ" x="3" y="-40"/>
296 </children>
297 <children xmi:type="notation:Node" xmi:id="_Ya_bI1vUEemLJtrAOuDPFQ" type="6003">
298 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ya_bJFvUEemLJtrAOuDPFQ" x="-10" y="-53"/>
299 </children>
300 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Ya-0EVvUEemLJtrAOuDPFQ" routing="Rectilinear"/>
301 <styles xmi:type="notation:FontStyle" xmi:id="_Ya-0ElvUEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
302 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ya-0E1vUEemLJtrAOuDPFQ" points="[0, 0, 0, -82]$[0, 82, 0, 0]"/>
303 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya_bJVvUEemLJtrAOuDPFQ" id="(0.4966887417218543,1.0)"/>
304 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya_bJlvUEemLJtrAOuDPFQ" id="(0.4966887417218543,0.0)"/>
305 </edges>
306 <edges xmi:type="notation:Edge" xmi:id="_Zl1ywFvWEemLJtrAOuDPFQ" type="4001" element="_ZlkF81vWEemLJtrAOuDPFQ" source="_vI6r8FvREemLJtrAOuDPFQ" target="_UoYsMFvUEemLJtrAOuDPFQ">
307 <children xmi:type="notation:Node" xmi:id="_Zl2Z0FvWEemLJtrAOuDPFQ" type="6001">
308 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zl2Z0VvWEemLJtrAOuDPFQ" x="9" y="-5"/>
309 </children>
310 <children xmi:type="notation:Node" xmi:id="_Zl3A4FvWEemLJtrAOuDPFQ" type="6002">
311 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zl3A4VvWEemLJtrAOuDPFQ" x="8" y="-11"/>
312 </children>
313 <children xmi:type="notation:Node" xmi:id="_Zl3A4lvWEemLJtrAOuDPFQ" type="6003">
314 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zl3A41vWEemLJtrAOuDPFQ" x="-9" y="-11"/>
315 </children>
316 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Zl1ywVvWEemLJtrAOuDPFQ" routing="Rectilinear"/>
317 <styles xmi:type="notation:FontStyle" xmi:id="_Zl1ywlvWEemLJtrAOuDPFQ" fontName="Noto Sans" fontHeight="8"/>
318 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zl1yw1vWEemLJtrAOuDPFQ" points="[0, 11, -353, 0]$[353, 11, 0, 0]"/>
319 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zl3n8FvWEemLJtrAOuDPFQ" id="(1.0,0.5)"/>
320 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zl3n8VvWEemLJtrAOuDPFQ" id="(0.0,0.6122448979591837)"/>
321 </edges>
322 <edges xmi:type="notation:Edge" xmi:id="_EDBDIFvZEemLJtrAOuDPFQ" type="4001" element="_ECuvRlvZEemLJtrAOuDPFQ" source="_IuOrgFvNEemLJtrAOuDPFQ" target="_8icOoFvNEemLJtrAOuDPFQ">
323 <children xmi:type="notation:Node" xmi:id="_EDBDJFvZEemLJtrAOuDPFQ" type="6001">
324 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EDBDJVvZEemLJtrAOuDPFQ" x="7" y="22"/>
325 </children>
326 <children xmi:type="notation:Node" xmi:id="_EDBqMFvZEemLJtrAOuDPFQ" type="6002">
327 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EDBqMVvZEemLJtrAOuDPFQ" x="-10" y="63"/>
328 </children>
329 <children xmi:type="notation:Node" xmi:id="_EDBqMlvZEemLJtrAOuDPFQ" type="6003">
330 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EDBqM1vZEemLJtrAOuDPFQ" x="-5" y="8"/>
331 </children>
332 <styles xmi:type="notation:ConnectorStyle" xmi:id="_EDBDIVvZEemLJtrAOuDPFQ" routing="Rectilinear"/>
333 <styles xmi:type="notation:FontStyle" xmi:id="_EDBDIlvZEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
334 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EDBDI1vZEemLJtrAOuDPFQ" points="[22, 38, 180, -82]$[22, 75, 180, -45]$[-143, 75, 15, -45]$[-143, 120, 15, 0]"/>
335 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EDBqNFvZEemLJtrAOuDPFQ" id="(0.0,0.6122448979591837)"/>
336 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EDBqNVvZEemLJtrAOuDPFQ" id="(0.635593220338983,0.0)"/>
337 </edges>
338 <edges xmi:type="notation:Edge" xmi:id="_HQd2kFvZEemLJtrAOuDPFQ" type="4001" element="_HQRCT1vZEemLJtrAOuDPFQ" source="_IuOrgFvNEemLJtrAOuDPFQ" target="_FZ9o8FvOEemLJtrAOuDPFQ">
339 <children xmi:type="notation:Node" xmi:id="_HQd2lFvZEemLJtrAOuDPFQ" type="6001">
340 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HQd2lVvZEemLJtrAOuDPFQ" x="10" y="-22"/>
341 </children>
342 <children xmi:type="notation:Node" xmi:id="_HQedoFvZEemLJtrAOuDPFQ" type="6002">
343 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HQedoVvZEemLJtrAOuDPFQ" x="10" y="-70"/>
344 </children>
345 <children xmi:type="notation:Node" xmi:id="_HQedolvZEemLJtrAOuDPFQ" type="6003">
346 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HQedo1vZEemLJtrAOuDPFQ" x="23" y="10"/>
347 </children>
348 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HQd2kVvZEemLJtrAOuDPFQ" routing="Rectilinear"/>
349 <styles xmi:type="notation:FontStyle" xmi:id="_HQd2klvZEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
350 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HQd2k1vZEemLJtrAOuDPFQ" points="[-24, 68, -180, -82]$[-24, 105, -180, -45]$[141, 105, -15, -45]$[141, 150, -15, 0]"/>
351 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HQedpFvZEemLJtrAOuDPFQ" id="(1.0,0.30612244897959184)"/>
352 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HQedpVvZEemLJtrAOuDPFQ" id="(0.2980132450331126,0.0)"/>
353 </edges>
354 <edges xmi:type="notation:Edge" xmi:id="_LsBb4FvZEemLJtrAOuDPFQ" type="4001" element="_Lr45GFvZEemLJtrAOuDPFQ" source="_IuOrgFvNEemLJtrAOuDPFQ" target="_UoYsMFvUEemLJtrAOuDPFQ">
355 <children xmi:type="notation:Node" xmi:id="_LsBb5FvZEemLJtrAOuDPFQ" type="6001">
356 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LsBb5VvZEemLJtrAOuDPFQ" x="-65" y="135"/>
357 </children>
358 <children xmi:type="notation:Node" xmi:id="_LsBb5lvZEemLJtrAOuDPFQ" type="6002">
359 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LsBb51vZEemLJtrAOuDPFQ" x="-29" y="10"/>
360 </children>
361 <children xmi:type="notation:Node" xmi:id="_LsBb6FvZEemLJtrAOuDPFQ" type="6003">
362 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LsBb6VvZEemLJtrAOuDPFQ" x="-65" y="10"/>
363 </children>
364 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LsBb4VvZEemLJtrAOuDPFQ" routing="Rectilinear"/>
365 <styles xmi:type="notation:FontStyle" xmi:id="_LsBb4lvZEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
366 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LsBb41vZEemLJtrAOuDPFQ" points="[54, -50, -216, -312]$[345, -50, 75, -312]$[345, 322, 75, 60]$[316, 322, 46, 60]"/>
367 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LsCC8FvZEemLJtrAOuDPFQ" id="(0.6029411764705882,1.0)"/>
368 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LsCC8VvZEemLJtrAOuDPFQ" id="(0.695364238410596,0.0)"/>
369 </edges>
370 <edges xmi:type="notation:Edge" xmi:id="_TAsjYFvZEemLJtrAOuDPFQ" type="4001" element="_TAeg9lvZEemLJtrAOuDPFQ" source="_IuOrgFvNEemLJtrAOuDPFQ" target="_vI6r8FvREemLJtrAOuDPFQ">
371 <children xmi:type="notation:Node" xmi:id="_TAsjZFvZEemLJtrAOuDPFQ" type="6001">
372 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TAsjZVvZEemLJtrAOuDPFQ" x="-44" y="-154"/>
373 </children>
374 <children xmi:type="notation:Node" xmi:id="_TAsjZlvZEemLJtrAOuDPFQ" type="6002">
375 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TAsjZ1vZEemLJtrAOuDPFQ" x="-21" y="10"/>
376 </children>
377 <children xmi:type="notation:Node" xmi:id="_TAtKcFvZEemLJtrAOuDPFQ" type="6003">
378 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TAtKcVvZEemLJtrAOuDPFQ" x="-45" y="10"/>
379 </children>
380 <styles xmi:type="notation:ConnectorStyle" xmi:id="_TAsjYVvZEemLJtrAOuDPFQ" routing="Rectilinear"/>
381 <styles xmi:type="notation:FontStyle" xmi:id="_TAsjYlvZEemLJtrAOuDPFQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
382 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TAsjY1vZEemLJtrAOuDPFQ" points="[0, 15, 188, -285]$[-278, 15, -90, -285]$[-278, 330, -90, 30]$[-242, 330, -54, 30]"/>
383 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TAtKclvZEemLJtrAOuDPFQ" id="(0.0,0.6122448979591837)"/>
384 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TAtKc1vZEemLJtrAOuDPFQ" id="(0.39705882352941174,0.0)"/>
385 </edges>
386 <edges xmi:type="notation:Edge" xmi:id="_sSYbUFvfEemLJtrAOuDPFQ" type="4001" element="_sSGHdlvfEemLJtrAOuDPFQ" source="_8icOoFvNEemLJtrAOuDPFQ" target="_8icOoFvNEemLJtrAOuDPFQ">
387 <children xmi:type="notation:Node" xmi:id="_sSYbVFvfEemLJtrAOuDPFQ" type="6001">
388 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sSYbVVvfEemLJtrAOuDPFQ" x="22" y="-22"/>
389 </children>
390 <children xmi:type="notation:Node" xmi:id="_sSYbVlvfEemLJtrAOuDPFQ" type="6002">
391 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sSYbV1vfEemLJtrAOuDPFQ" x="-13" y="19"/>
392 </children>
393 <children xmi:type="notation:Node" xmi:id="_sSYbWFvfEemLJtrAOuDPFQ" type="6003">
394 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sSYbWVvfEemLJtrAOuDPFQ" x="11" y="7"/>
395 </children>
396 <styles xmi:type="notation:ConnectorStyle" xmi:id="_sSYbUVvfEemLJtrAOuDPFQ" routing="Rectilinear" lineColor="1345869"/>
397 <styles xmi:type="notation:FontStyle" xmi:id="_sSYbUlvfEemLJtrAOuDPFQ" fontColor="1345869" fontName="Noto Sans" fontHeight="8"/>
398 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sSYbU1vfEemLJtrAOuDPFQ" points="[-118, 0, -39, 15]$[-148, 0, -69, 15]$[-148, -60, -69, -45]$[-60, -60, 19, -45]$[-60, -15, 19, 0]"/>
399 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sSZCYFvfEemLJtrAOuDPFQ" id="(1.0,0.15306122448979592)"/>
400 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sSZCYVvfEemLJtrAOuDPFQ" id="(0.3333333333333333,0.0)"/>
401 </edges>
402 <edges xmi:type="notation:Edge" xmi:id="_D2rzIFvgEemLJtrAOuDPFQ" type="4001" element="_D2lspFvgEemLJtrAOuDPFQ" source="_vI6r8FvREemLJtrAOuDPFQ" target="_vI6r8FvREemLJtrAOuDPFQ">
403 <children xmi:type="notation:Node" xmi:id="_D2saMFvgEemLJtrAOuDPFQ" type="6001">
404 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D2saMVvgEemLJtrAOuDPFQ" x="101" y="-7"/>
405 </children>
406 <children xmi:type="notation:Node" xmi:id="_D2saMlvgEemLJtrAOuDPFQ" type="6002">
407 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D2saM1vgEemLJtrAOuDPFQ" x="-7" y="10"/>
408 </children>
409 <children xmi:type="notation:Node" xmi:id="_D2saNFvgEemLJtrAOuDPFQ" type="6003">
410 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D2saNVvgEemLJtrAOuDPFQ" x="7" y="10"/>
411 </children>
412 <styles xmi:type="notation:ConnectorStyle" xmi:id="_D2rzIVvgEemLJtrAOuDPFQ" routing="Rectilinear" lineColor="1345869"/>
413 <styles xmi:type="notation:FontStyle" xmi:id="_D2rzIlvgEemLJtrAOuDPFQ" fontColor="1345869" fontName="Noto Sans" fontHeight="8"/>
414 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D2rzI1vgEemLJtrAOuDPFQ" points="[0, 98, -60, 0]$[0, 135, -60, 37]$[90, 135, 30, 37]$[90, 98, 30, 0]"/>
415 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D2saNlvgEemLJtrAOuDPFQ" id="(0.17647058823529413,0.0)"/>
416 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D2saN1vgEemLJtrAOuDPFQ" id="(0.6176470588235294,1.0)"/>
417 </edges>
418 <edges xmi:type="notation:Edge" xmi:id="_rSkHoFvgEemLJtrAOuDPFQ" type="4001" element="_rSSa1lvgEemLJtrAOuDPFQ" source="_FZ9o8FvOEemLJtrAOuDPFQ" target="_FZ9o8FvOEemLJtrAOuDPFQ">
419 <children xmi:type="notation:Node" xmi:id="_rSkHpFvgEemLJtrAOuDPFQ" type="6001">
420 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSkHpVvgEemLJtrAOuDPFQ" x="1" y="22"/>
421 </children>
422 <children xmi:type="notation:Node" xmi:id="_rSkHplvgEemLJtrAOuDPFQ" type="6002">
423 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSkHp1vgEemLJtrAOuDPFQ" x="-10"/>
424 </children>
425 <children xmi:type="notation:Node" xmi:id="_rSkHqFvgEemLJtrAOuDPFQ" type="6003">
426 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSkHqVvgEemLJtrAOuDPFQ" x="-9" y="-10"/>
427 </children>
428 <styles xmi:type="notation:ConnectorStyle" xmi:id="_rSkHoVvgEemLJtrAOuDPFQ" routing="Rectilinear" lineColor="1345869"/>
429 <styles xmi:type="notation:FontStyle" xmi:id="_rSkHolvgEemLJtrAOuDPFQ" fontColor="1345869" fontName="Noto Sans" fontHeight="8"/>
430 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rSkHo1vgEemLJtrAOuDPFQ" points="[135, -15, -16, -15]$[135, -60, -16, -60]$[60, -60, -91, -60]$[60, -15, -91, -15]"/>
431 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rSkusFvgEemLJtrAOuDPFQ" id="(0.0,0.15306122448979592)"/>
432 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rSkusVvgEemLJtrAOuDPFQ" id="(1.0,0.15306122448979592)"/>
433 </edges>
434 <edges xmi:type="notation:Edge" xmi:id="_xXkXAFvgEemLJtrAOuDPFQ" type="4001" element="_xXdpelvgEemLJtrAOuDPFQ" source="_UoYsMFvUEemLJtrAOuDPFQ" target="_UoYsMFvUEemLJtrAOuDPFQ">
435 <children xmi:type="notation:Node" xmi:id="_xXkXBFvgEemLJtrAOuDPFQ" type="6001">
436 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xXkXBVvgEemLJtrAOuDPFQ" x="-104" y="-7"/>
437 </children>
438 <children xmi:type="notation:Node" xmi:id="_xXkXBlvgEemLJtrAOuDPFQ" type="6002">
439 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xXkXB1vgEemLJtrAOuDPFQ" x="1" y="8"/>
440 </children>
441 <children xmi:type="notation:Node" xmi:id="_xXk-EFvgEemLJtrAOuDPFQ" type="6003">
442 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xXk-EVvgEemLJtrAOuDPFQ" x="-2" y="10"/>
443 </children>
444 <styles xmi:type="notation:ConnectorStyle" xmi:id="_xXkXAVvgEemLJtrAOuDPFQ" routing="Rectilinear" lineColor="1345869"/>
445 <styles xmi:type="notation:FontStyle" xmi:id="_xXkXAlvgEemLJtrAOuDPFQ" fontColor="1345869" fontName="Noto Sans" fontHeight="8"/>
446 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xXkXA1vgEemLJtrAOuDPFQ" points="[-121, 83, 30, 83]$[-121, 120, 30, 120]$[-31, 120, 120, 120]$[-31, 83, 120, 83]"/>
447 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xXk-ElvgEemLJtrAOuDPFQ" id="(1.0,0.15306122448979592)"/>
448 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xXk-E1vgEemLJtrAOuDPFQ" id="(0.0,0.15306122448979592)"/>
449 </edges>
450 </data>
451 </ownedAnnotationEntries>
452 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Itg50FvNEemLJtrAOuDPFQ" name="CyberPhysicalSystem" tooltipText="" outgoingEdges="_CU3uAFvTEemLJtrAOuDPFQ _ECuvRlvZEemLJtrAOuDPFQ _HQRCT1vZEemLJtrAOuDPFQ _Lr45GFvZEemLJtrAOuDPFQ _TAeg9lvZEemLJtrAOuDPFQ" width="12" height="10">
453 <target xmi:type="ecore:EClass" href="cps.ecore#//CyberPhysicalSystem"/>
454 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//CyberPhysicalSystem"/>
455 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
456 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
457 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
458 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Itr48FvNEemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
459 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
460 </ownedStyle>
461 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
462 </ownedDiagramElements>
463 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_8iM-EFvNEemLJtrAOuDPFQ" name="ApplicationType" tooltipText="" outgoingEdges="_jGSVo1vTEemLJtrAOuDPFQ _GOOItlvUEemLJtrAOuDPFQ _sSGHdlvfEemLJtrAOuDPFQ" incomingEdges="_Xc3bc1vTEemLJtrAOuDPFQ _ECuvRlvZEemLJtrAOuDPFQ _sSGHdlvfEemLJtrAOuDPFQ" width="12" height="10">
464 <target xmi:type="ecore:EClass" href="cps.ecore#//ApplicationType"/>
465 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//ApplicationType"/>
466 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
467 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
468 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
469 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9yN0clvNEemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
470 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
471 </ownedStyle>
472 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
473 </ownedDiagramElements>
474 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_FZ1GEFvOEemLJtrAOuDPFQ" name="HostType" tooltipText="" outgoingEdges="_YawKkFvUEemLJtrAOuDPFQ _rSSa1lvgEemLJtrAOuDPFQ" incomingEdges="_OKZ8IFvUEemLJtrAOuDPFQ _HQRCT1vZEemLJtrAOuDPFQ _rSSa1lvgEemLJtrAOuDPFQ" width="12" height="10">
475 <target xmi:type="ecore:EClass" href="cps.ecore#//HostType"/>
476 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//HostType"/>
477 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
478 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
479 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
480 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_eEUig1vREemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
481 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
482 </ownedStyle>
483 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
484 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Xxc2QFvREemLJtrAOuDPFQ" name="defaultMemory : EInt" tooltipText="">
485 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostType/defaultMemory"/>
486 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostType/defaultMemory"/>
487 <ownedStyle xmi:type="diagram:BundledImage" uid="_aQuVEVvREemLJtrAOuDPFQ" labelAlignment="LEFT" description="_-5WboFvNEemLJtrAOuDPFQ">
488 <labelFormat>bold</labelFormat>
489 </ownedStyle>
490 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
491 </ownedElements>
492 <ownedElements xmi:type="diagram:DNodeListElement" uid="_bLzdQFvREemLJtrAOuDPFQ" name="defaultHdd : EInt" tooltipText="">
493 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostType/defaultHdd"/>
494 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostType/defaultHdd"/>
495 <ownedStyle xmi:type="diagram:BundledImage" uid="_ednzUVvREemLJtrAOuDPFQ" labelAlignment="LEFT" description="_-5WboFvNEemLJtrAOuDPFQ">
496 <labelFormat>bold</labelFormat>
497 </ownedStyle>
498 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
499 </ownedElements>
500 </ownedDiagramElements>
501 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_jfFiEFvREemLJtrAOuDPFQ" name="Request" tooltipText="" outgoingEdges="_INyCIFvTEemLJtrAOuDPFQ" incomingEdges="_CU3uAFvTEemLJtrAOuDPFQ" width="12" height="10">
502 <target xmi:type="ecore:EClass" href="cps.ecore#//Request"/>
503 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//Request"/>
504 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
505 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
506 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
507 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_jfGJIFvREemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
508 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
509 </ownedStyle>
510 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
511 </ownedDiagramElements>
512 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_p05NkFvREemLJtrAOuDPFQ" name="Requirement" tooltipText="" outgoingEdges="_Xc3bc1vTEemLJtrAOuDPFQ _dUZ2kFvTEemLJtrAOuDPFQ" incomingEdges="_INyCIFvTEemLJtrAOuDPFQ" width="12" height="10">
513 <target xmi:type="ecore:EClass" href="cps.ecore#//Requirement"/>
514 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//Requirement"/>
515 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
516 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
517 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
518 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_OP1EIVvTEemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
519 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
520 </ownedStyle>
521 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
522 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Nr-JIFvTEemLJtrAOuDPFQ" name="count : EInt" tooltipText="">
523 <target xmi:type="ecore:EAttribute" href="cps.ecore#//Requirement/count"/>
524 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//Requirement/count"/>
525 <ownedStyle xmi:type="diagram:BundledImage" uid="_ZNL60VvZEemLJtrAOuDPFQ" labelAlignment="LEFT" description="_-5WboFvNEemLJtrAOuDPFQ">
526 <labelFormat>bold</labelFormat>
527 </ownedStyle>
528 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
529 </ownedElements>
530 </ownedDiagramElements>
531 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vIvs0FvREemLJtrAOuDPFQ" name="ApplicationInstance" tooltipText="" outgoingEdges="_ZlkF81vWEemLJtrAOuDPFQ _D2lspFvgEemLJtrAOuDPFQ" incomingEdges="_dUZ2kFvTEemLJtrAOuDPFQ _jGSVo1vTEemLJtrAOuDPFQ _TAeg9lvZEemLJtrAOuDPFQ _D2lspFvgEemLJtrAOuDPFQ" width="12" height="10">
532 <target xmi:type="ecore:EClass" href="cps.ecore#//ApplicationInstance"/>
533 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//ApplicationInstance"/>
534 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
535 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
536 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
537 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_vIwT4FvREemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
538 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
539 </ownedStyle>
540 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
541 </ownedDiagramElements>
542 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_PdlGIFvSEemLJtrAOuDPFQ" name="ResourceRequirement" tooltipText="" outgoingEdges="_OKZ8IFvUEemLJtrAOuDPFQ" incomingEdges="_GOOItlvUEemLJtrAOuDPFQ" width="12" height="10">
543 <target xmi:type="ecore:EClass" href="cps.ecore#//ResourceRequirement"/>
544 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//ResourceRequirement"/>
545 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
546 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
547 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
548 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_TcKbkVvSEemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
549 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
550 </ownedStyle>
551 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
552 <ownedElements xmi:type="diagram:DNodeListElement" uid="_ReIBkFvSEemLJtrAOuDPFQ" name="requiredMemory : EInt" tooltipText="">
553 <target xmi:type="ecore:EAttribute" href="cps.ecore#//ResourceRequirement/requiredMemory"/>
554 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//ResourceRequirement/requiredMemory"/>
555 <ownedStyle xmi:type="diagram:BundledImage" uid="_ShoF8VvSEemLJtrAOuDPFQ" labelAlignment="LEFT" description="_-5WboFvNEemLJtrAOuDPFQ">
556 <labelFormat>bold</labelFormat>
557 </ownedStyle>
558 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
559 </ownedElements>
560 <ownedElements xmi:type="diagram:DNodeListElement" uid="_S4npoFvSEemLJtrAOuDPFQ" name="requiredHdd : EInt" tooltipText="">
561 <target xmi:type="ecore:EAttribute" href="cps.ecore#//ResourceRequirement/requiredHdd"/>
562 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//ResourceRequirement/requiredHdd"/>
563 <ownedStyle xmi:type="diagram:BundledImage" uid="_T0XgMFvSEemLJtrAOuDPFQ" labelAlignment="LEFT" description="_-5WboFvNEemLJtrAOuDPFQ">
564 <labelFormat>bold</labelFormat>
565 </ownedStyle>
566 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
567 </ownedElements>
568 </ownedDiagramElements>
569 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_CU3uAFvTEemLJtrAOuDPFQ" name="[0..*] requests" sourceNode="_Itg50FvNEemLJtrAOuDPFQ" targetNode="_jfFiEFvREemLJtrAOuDPFQ">
570 <target xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/requests"/>
571 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/requests"/>
572 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_CVAQ4FvTEemLJtrAOuDPFQ" description="_CU6KQFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
573 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_CVBfAFvTEemLJtrAOuDPFQ" showIcon="false">
574 <customFeatures>labelSize</customFeatures>
575 </centerLabelStyle>
576 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_CVA38FvTEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114">
577 <customFeatures>labelSize</customFeatures>
578 </endLabelStyle>
579 </ownedStyle>
580 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
581 </ownedDiagramElements>
582 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_INyCIFvTEemLJtrAOuDPFQ" sourceNode="_jfFiEFvREemLJtrAOuDPFQ" targetNode="_p05NkFvREemLJtrAOuDPFQ" beginLabel="[1..1] request" endLabel="[0..*] requirements">
583 <target xmi:type="ecore:EReference" href="cps.ecore#//Request/requirements"/>
584 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//Requirement/request"/>
585 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//Request/requirements"/>
586 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_KkeMs1vTEemLJtrAOuDPFQ" description="_KkeMsFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
587 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_KkeMtFvTEemLJtrAOuDPFQ" showIcon="false"/>
588 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_KkeMtVvTEemLJtrAOuDPFQ" showIcon="false"/>
589 </ownedStyle>
590 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
591 </ownedDiagramElements>
592 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Xc3bc1vTEemLJtrAOuDPFQ" name="[0..1] type" sourceNode="_p05NkFvREemLJtrAOuDPFQ" targetNode="_8iM-EFvNEemLJtrAOuDPFQ">
593 <target xmi:type="ecore:EReference" href="cps.ecore#//Requirement/type"/>
594 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//Requirement/type"/>
595 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Xc5QoFvTEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="0,0,0">
596 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
597 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Xc5QolvTEemLJtrAOuDPFQ" showIcon="false">
598 <customFeatures>labelSize</customFeatures>
599 </centerLabelStyle>
600 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_Xc5QoVvTEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114">
601 <customFeatures>labelSize</customFeatures>
602 </endLabelStyle>
603 </ownedStyle>
604 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
605 </ownedDiagramElements>
606 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dUZ2kFvTEemLJtrAOuDPFQ" sourceNode="_p05NkFvREemLJtrAOuDPFQ" targetNode="_vIvs0FvREemLJtrAOuDPFQ" beginLabel="[0..*] requirement" endLabel="[0..*] instances">
607 <target xmi:type="ecore:EReference" href="cps.ecore#//Requirement/instances"/>
608 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//Requirement/instances"/>
609 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/requirement"/>
610 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dUadoFvTEemLJtrAOuDPFQ" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
611 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
612 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_dUadoVvTEemLJtrAOuDPFQ" showIcon="false"/>
613 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_dUadolvTEemLJtrAOuDPFQ" showIcon="false"/>
614 </ownedStyle>
615 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
616 </ownedDiagramElements>
617 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_jGSVo1vTEemLJtrAOuDPFQ" sourceNode="_8iM-EFvNEemLJtrAOuDPFQ" targetNode="_vIvs0FvREemLJtrAOuDPFQ" beginLabel="[1..1] type" endLabel="[0..*] instances">
618 <target xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/instances"/>
619 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/instances"/>
620 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/type"/>
621 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_nwVC4FvTEemLJtrAOuDPFQ" description="_KkeMsFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
622 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_nwVC4VvTEemLJtrAOuDPFQ" showIcon="false"/>
623 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_nwVC4lvTEemLJtrAOuDPFQ" showIcon="false"/>
624 </ownedStyle>
625 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
626 </ownedDiagramElements>
627 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GOOItlvUEemLJtrAOuDPFQ" name="[0..*] requirements" sourceNode="_8iM-EFvNEemLJtrAOuDPFQ" targetNode="_PdlGIFvSEemLJtrAOuDPFQ">
628 <target xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/requirements"/>
629 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/requirements"/>
630 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GOPW0FvUEemLJtrAOuDPFQ" description="_CU6KQFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
631 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GOPW0lvUEemLJtrAOuDPFQ" showIcon="false">
632 <customFeatures>labelSize</customFeatures>
633 </centerLabelStyle>
634 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GOPW0VvUEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114">
635 <customFeatures>labelSize</customFeatures>
636 </endLabelStyle>
637 </ownedStyle>
638 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
639 </ownedDiagramElements>
640 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_OKZ8IFvUEemLJtrAOuDPFQ" name="[1..1] hostType" sourceNode="_PdlGIFvSEemLJtrAOuDPFQ" targetNode="_FZ1GEFvOEemLJtrAOuDPFQ">
641 <target xmi:type="ecore:EReference" href="cps.ecore#//ResourceRequirement/hostType"/>
642 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ResourceRequirement/hostType"/>
643 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_PIc4w1vUEemLJtrAOuDPFQ" description="_PIc4wFvUEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="0,0,0">
644 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_PIc4xVvUEemLJtrAOuDPFQ" showIcon="false">
645 <labelFormat>bold</labelFormat>
646 </centerLabelStyle>
647 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_PIc4xFvUEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
648 </ownedStyle>
649 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
650 </ownedDiagramElements>
651 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_UoGYUFvUEemLJtrAOuDPFQ" name="HostInstance" tooltipText="" outgoingEdges="_xXdpelvgEemLJtrAOuDPFQ" incomingEdges="_YawKkFvUEemLJtrAOuDPFQ _ZlkF81vWEemLJtrAOuDPFQ _Lr45GFvZEemLJtrAOuDPFQ _xXdpelvgEemLJtrAOuDPFQ" width="12" height="10">
652 <target xmi:type="ecore:EClass" href="cps.ecore#//HostInstance"/>
653 <semanticElements xmi:type="ecore:EClass" href="cps.ecore#//HostInstance"/>
654 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
655 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
656 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
657 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pw7zQVvUEemLJtrAOuDPFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
658 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
659 </ownedStyle>
660 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
661 <ownedElements xmi:type="diagram:DNodeListElement" uid="_jO97EFvUEemLJtrAOuDPFQ" name="/availableMemory : EInt" tooltipText="">
662 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/availableMemory"/>
663 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/availableMemory"/>
664 <ownedStyle xmi:type="diagram:BundledImage" uid="_8rRg5FvVEemLJtrAOuDPFQ" labelColor="39,76,114" labelAlignment="LEFT" description="_8rRg4lvVEemLJtrAOuDPFQ"/>
665 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
666 </ownedElements>
667 <ownedElements xmi:type="diagram:DNodeListElement" uid="_lZB-4FvUEemLJtrAOuDPFQ" name="/availableHdd : EInt" tooltipText="">
668 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/availableHdd"/>
669 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/availableHdd"/>
670 <ownedStyle xmi:type="diagram:BundledImage" uid="_AAbe0lvWEemLJtrAOuDPFQ" labelColor="39,76,114" labelAlignment="LEFT" description="_8rRg4lvVEemLJtrAOuDPFQ"/>
671 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
672 </ownedElements>
673 <ownedElements xmi:type="diagram:DNodeListElement" uid="_n0acMFvUEemLJtrAOuDPFQ" name="/totalMemory : EInt" tooltipText="">
674 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/totalMemory"/>
675 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/totalMemory"/>
676 <ownedStyle xmi:type="diagram:BundledImage" uid="_DOTwE1vWEemLJtrAOuDPFQ" labelColor="39,76,114" labelAlignment="LEFT" description="_8rRg4lvVEemLJtrAOuDPFQ"/>
677 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
678 </ownedElements>
679 <ownedElements xmi:type="diagram:DNodeListElement" uid="_pHVcoFvUEemLJtrAOuDPFQ" name="/totalHdd : EInt" tooltipText="">
680 <target xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/totalHdd"/>
681 <semanticElements xmi:type="ecore:EAttribute" href="cps.ecore#//HostInstance/totalHdd"/>
682 <ownedStyle xmi:type="diagram:BundledImage" uid="_EOBgpVvWEemLJtrAOuDPFQ" labelColor="39,76,114" labelAlignment="LEFT" description="_8rRg4lvVEemLJtrAOuDPFQ"/>
683 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
684 </ownedElements>
685 </ownedDiagramElements>
686 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_YawKkFvUEemLJtrAOuDPFQ" sourceNode="_FZ1GEFvOEemLJtrAOuDPFQ" targetNode="_UoGYUFvUEemLJtrAOuDPFQ" beginLabel="[1..1] type" endLabel="[0..*] instances">
687 <target xmi:type="ecore:EReference" href="cps.ecore#//HostType/instances"/>
688 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//HostType/instances"/>
689 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//HostInstance/type"/>
690 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aF7S8FvUEemLJtrAOuDPFQ" description="_KkeMsFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
691 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aF7S8VvUEemLJtrAOuDPFQ" showIcon="false"/>
692 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aF7S8lvUEemLJtrAOuDPFQ" showIcon="false"/>
693 </ownedStyle>
694 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
695 </ownedDiagramElements>
696 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ZlkF81vWEemLJtrAOuDPFQ" sourceNode="_vIvs0FvREemLJtrAOuDPFQ" targetNode="_UoGYUFvUEemLJtrAOuDPFQ" beginLabel="[0..*] applications" endLabel="[0..*] allocatedTo">
697 <target xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/allocatedTo"/>
698 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/allocatedTo"/>
699 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//HostInstance/applications"/>
700 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ZlktAFvWEemLJtrAOuDPFQ" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
701 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
702 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_ZlktAVvWEemLJtrAOuDPFQ" showIcon="false"/>
703 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ZlktAlvWEemLJtrAOuDPFQ" showIcon="false"/>
704 </ownedStyle>
705 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
706 </ownedDiagramElements>
707 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ECuvRlvZEemLJtrAOuDPFQ" name="[0..*] applicationTypes" sourceNode="_Itg50FvNEemLJtrAOuDPFQ" targetNode="_8iM-EFvNEemLJtrAOuDPFQ">
708 <target xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/applicationTypes"/>
709 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/applicationTypes"/>
710 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ECvWUFvZEemLJtrAOuDPFQ" description="_CU6KQFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
711 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ECvWUlvZEemLJtrAOuDPFQ" showIcon="false">
712 <customFeatures>labelSize</customFeatures>
713 </centerLabelStyle>
714 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ECvWUVvZEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114">
715 <customFeatures>labelSize</customFeatures>
716 </endLabelStyle>
717 </ownedStyle>
718 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
719 </ownedDiagramElements>
720 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_HQRCT1vZEemLJtrAOuDPFQ" name="[0..*] hostTypes" sourceNode="_Itg50FvNEemLJtrAOuDPFQ" targetNode="_FZ1GEFvOEemLJtrAOuDPFQ">
721 <target xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/hostTypes"/>
722 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/hostTypes"/>
723 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_HQRpUFvZEemLJtrAOuDPFQ" description="_CU6KQFvTEemLJtrAOuDPFQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
724 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_HQRpUlvZEemLJtrAOuDPFQ" showIcon="false">
725 <customFeatures>labelSize</customFeatures>
726 </centerLabelStyle>
727 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_HQRpUVvZEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114">
728 <customFeatures>labelSize</customFeatures>
729 </endLabelStyle>
730 </ownedStyle>
731 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
732 </ownedDiagramElements>
733 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Lr45GFvZEemLJtrAOuDPFQ" name="[0..*] /hosts" sourceNode="_Itg50FvNEemLJtrAOuDPFQ" targetNode="_UoGYUFvUEemLJtrAOuDPFQ">
734 <target xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/hosts"/>
735 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/hosts"/>
736 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_QukvyVvZEemLJtrAOuDPFQ" description="_QukvxlvZEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="114,159,207">
737 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Qukvy1vZEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114"/>
738 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_QukvylvZEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
739 </ownedStyle>
740 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
741 </ownedDiagramElements>
742 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_TAeg9lvZEemLJtrAOuDPFQ" name="[0..*] /applications" sourceNode="_Itg50FvNEemLJtrAOuDPFQ" targetNode="_vIvs0FvREemLJtrAOuDPFQ">
743 <target xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/applications"/>
744 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//CyberPhysicalSystem/applications"/>
745 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XFbkJlvZEemLJtrAOuDPFQ" description="_QukvxlvZEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="114,159,207">
746 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XFbkKFvZEemLJtrAOuDPFQ" showIcon="false" labelColor="39,76,114"/>
747 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_XFbkJ1vZEemLJtrAOuDPFQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
748 </ownedStyle>
749 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
750 </ownedDiagramElements>
751 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_sSGHdlvfEemLJtrAOuDPFQ" name="[0..*] dependsOn" sourceNode="_8iM-EFvNEemLJtrAOuDPFQ" targetNode="_8iM-EFvNEemLJtrAOuDPFQ">
752 <target xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/dependsOn"/>
753 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationType/dependsOn"/>
754 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_sSHVkFvfEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="77,137,20">
755 <customFeatures>strokeColor</customFeatures>
756 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
757 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_sSHVklvfEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
758 <customFeatures>labelFormat</customFeatures>
759 <customFeatures>labelSize</customFeatures>
760 <customFeatures>labelColor</customFeatures>
761 </centerLabelStyle>
762 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_sSHVkVvfEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
763 <customFeatures>labelFormat</customFeatures>
764 <customFeatures>labelSize</customFeatures>
765 <customFeatures>labelColor</customFeatures>
766 </endLabelStyle>
767 </ownedStyle>
768 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
769 </ownedDiagramElements>
770 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_D2lspFvgEemLJtrAOuDPFQ" name="[0..1] dependsOn" sourceNode="_vIvs0FvREemLJtrAOuDPFQ" targetNode="_vIvs0FvREemLJtrAOuDPFQ">
771 <target xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/dependsOn"/>
772 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//ApplicationInstance/dependsOn"/>
773 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_D2mTkFvgEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="77,137,20">
774 <customFeatures>strokeColor</customFeatures>
775 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
776 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_D2mTklvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
777 <customFeatures>labelSize</customFeatures>
778 <customFeatures>labelColor</customFeatures>
779 </centerLabelStyle>
780 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_D2mTkVvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
781 <customFeatures>labelSize</customFeatures>
782 <customFeatures>labelColor</customFeatures>
783 </endLabelStyle>
784 </ownedStyle>
785 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
786 </ownedDiagramElements>
787 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_rSSa1lvgEemLJtrAOuDPFQ" name="[0..*] canConnectTo" sourceNode="_FZ1GEFvOEemLJtrAOuDPFQ" targetNode="_FZ1GEFvOEemLJtrAOuDPFQ">
788 <target xmi:type="ecore:EReference" href="cps.ecore#//HostType/canConnectTo"/>
789 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//HostType/canConnectTo"/>
790 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_rSTB4FvgEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="77,137,20">
791 <customFeatures>strokeColor</customFeatures>
792 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
793 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_rSTB4lvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
794 <customFeatures>labelSize</customFeatures>
795 <customFeatures>labelColor</customFeatures>
796 </centerLabelStyle>
797 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_rSTB4VvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
798 <customFeatures>labelSize</customFeatures>
799 <customFeatures>labelColor</customFeatures>
800 </endLabelStyle>
801 </ownedStyle>
802 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
803 </ownedDiagramElements>
804 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_xXdpelvgEemLJtrAOuDPFQ" name="[0..*] connectedTo" sourceNode="_UoGYUFvUEemLJtrAOuDPFQ" targetNode="_UoGYUFvUEemLJtrAOuDPFQ">
805 <target xmi:type="ecore:EReference" href="cps.ecore#//HostInstance/connectedTo"/>
806 <semanticElements xmi:type="ecore:EReference" href="cps.ecore#//HostInstance/connectedTo"/>
807 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_xXeQYFvgEemLJtrAOuDPFQ" routingStyle="manhattan" strokeColor="77,137,20">
808 <customFeatures>strokeColor</customFeatures>
809 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
810 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_xXeQYlvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
811 <customFeatures>labelSize</customFeatures>
812 <customFeatures>labelColor</customFeatures>
813 </centerLabelStyle>
814 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_xXeQYVvgEemLJtrAOuDPFQ" showIcon="false" labelColor="77,137,20">
815 <customFeatures>labelSize</customFeatures>
816 <customFeatures>labelColor</customFeatures>
817 </endLabelStyle>
818 </ownedStyle>
819 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
820 </ownedDiagramElements>
821 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
822 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_kSzQQFvMEemLJtrAOuDPFQ"/>
823 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
824 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
825 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
826 <target xmi:type="ecore:EPackage" href="cps.ecore#/"/>
827 </diagram:DSemanticDiagram>
828</xmi:XMI>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.ecore b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.ecore
new file mode 100644
index 00000000..bcf0ed99
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.ecore
@@ -0,0 +1,81 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="cps" nsURI="http://www.example.org/cps" nsPrefix="cps">
4 <eClassifiers xsi:type="ecore:EClass" name="CyberPhysicalSystem">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="requests" upperBound="-1"
6 eType="#//Request" containment="true"/>
7 <eStructuralFeatures xsi:type="ecore:EReference" name="applicationTypes" upperBound="-1"
8 eType="#//ApplicationType" containment="true"/>
9 <eStructuralFeatures xsi:type="ecore:EReference" name="hostTypes" upperBound="-1"
10 eType="#//HostType" containment="true"/>
11 <eStructuralFeatures xsi:type="ecore:EReference" name="hosts" upperBound="-1"
12 eType="#//HostInstance" changeable="false" volatile="true" transient="true"
13 derived="true"/>
14 <eStructuralFeatures xsi:type="ecore:EReference" name="applications" upperBound="-1"
15 eType="#//ApplicationInstance" changeable="false" volatile="true" transient="true"
16 derived="true"/>
17 </eClassifiers>
18 <eClassifiers xsi:type="ecore:EClass" name="ApplicationType">
19 <eStructuralFeatures xsi:type="ecore:EReference" name="instances" upperBound="-1"
20 eType="#//ApplicationInstance" containment="true" eOpposite="#//ApplicationInstance/type"/>
21 <eStructuralFeatures xsi:type="ecore:EReference" name="requirements" upperBound="-1"
22 eType="#//ResourceRequirement" containment="true"/>
23 <eStructuralFeatures xsi:type="ecore:EReference" name="dependsOn" upperBound="-1"
24 eType="#//ApplicationType"/>
25 </eClassifiers>
26 <eClassifiers xsi:type="ecore:EClass" name="HostType">
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultMemory" lowerBound="1"
28 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
29 <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultHdd" lowerBound="1"
30 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
31 <eStructuralFeatures xsi:type="ecore:EReference" name="instances" upperBound="-1"
32 eType="#//HostInstance" containment="true" eOpposite="#//HostInstance/type"/>
33 <eStructuralFeatures xsi:type="ecore:EReference" name="canConnectTo" upperBound="-1"
34 eType="#//HostType"/>
35 </eClassifiers>
36 <eClassifiers xsi:type="ecore:EClass" name="Request">
37 <eStructuralFeatures xsi:type="ecore:EReference" name="requirements" upperBound="-1"
38 eType="#//Requirement" containment="true" eOpposite="#//Requirement/request"/>
39 </eClassifiers>
40 <eClassifiers xsi:type="ecore:EClass" name="Requirement">
41 <eStructuralFeatures xsi:type="ecore:EReference" name="request" lowerBound="1"
42 eType="#//Request" eOpposite="#//Request/requirements"/>
43 <eStructuralFeatures xsi:type="ecore:EAttribute" name="count" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
44 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//ApplicationType"/>
45 <eStructuralFeatures xsi:type="ecore:EReference" name="instances" upperBound="-1"
46 eType="#//ApplicationInstance" eOpposite="#//ApplicationInstance/requirement"/>
47 </eClassifiers>
48 <eClassifiers xsi:type="ecore:EClass" name="ApplicationInstance">
49 <eStructuralFeatures xsi:type="ecore:EReference" name="requirement" upperBound="-1"
50 eType="#//Requirement" eOpposite="#//Requirement/instances"/>
51 <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//ApplicationType"
52 eOpposite="#//ApplicationType/instances"/>
53 <eStructuralFeatures xsi:type="ecore:EReference" name="allocatedTo" upperBound="-1"
54 eType="#//HostInstance" eOpposite="#//HostInstance/applications"/>
55 <eStructuralFeatures xsi:type="ecore:EReference" name="dependsOn" eType="#//ApplicationInstance"/>
56 </eClassifiers>
57 <eClassifiers xsi:type="ecore:EClass" name="ResourceRequirement">
58 <eStructuralFeatures xsi:type="ecore:EAttribute" name="requiredMemory" lowerBound="1"
59 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="requiredHdd" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
62 <eStructuralFeatures xsi:type="ecore:EReference" name="hostType" lowerBound="1"
63 eType="#//HostType"/>
64 </eClassifiers>
65 <eClassifiers xsi:type="ecore:EClass" name="HostInstance">
66 <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//HostType"
67 eOpposite="#//HostType/instances"/>
68 <eStructuralFeatures xsi:type="ecore:EAttribute" name="availableMemory" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
69 changeable="false" volatile="true" transient="true" derived="true"/>
70 <eStructuralFeatures xsi:type="ecore:EAttribute" name="availableHdd" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
71 changeable="false" volatile="true" transient="true" derived="true"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="totalMemory" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
73 changeable="false" volatile="true" transient="true" derived="true"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="totalHdd" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
75 changeable="false" volatile="true" transient="true" derived="true"/>
76 <eStructuralFeatures xsi:type="ecore:EReference" name="applications" upperBound="-1"
77 eType="#//ApplicationInstance" eOpposite="#//ApplicationInstance/allocatedTo"/>
78 <eStructuralFeatures xsi:type="ecore:EReference" name="connectedTo" upperBound="-1"
79 eType="#//HostInstance"/>
80 </eClassifiers>
81</ecore:EPackage>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.genmodel b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.genmodel
new file mode 100644
index 00000000..679e2c49
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/model/cps.genmodel
@@ -0,0 +1,62 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
4 modelDirectory="/hu.bme.mit.inf.dslreasoner.domains.cps/ecore-gen"
5 creationIcons="false" editDirectory="/hu.bme.mit.inf.dslreasoner.domains.cps.edit/src-gen"
6 editorDirectory="/hu.bme.mit.inf.dslreasoner.domains.cps.editor/src-gen" modelPluginID="hu.bme.mit.inf.dslreasoner.domains.cps"
7 modelName="Cps" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
8 codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0"
9 copyrightFields="false" operationReflection="true" importOrganizing="true">
10 <foreignModel>cps.ecore</foreignModel>
11 <testsDirectory xsi:nil="true"/>
12 <genPackages prefix="Cps" basePackage="hu.bme.mit.inf.dslreasoner.domains" disposableProviderFactory="true"
13 ecorePackage="cps.ecore#/">
14 <genClasses ecoreClass="cps.ecore#//CyberPhysicalSystem">
15 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference cps.ecore#//CyberPhysicalSystem/requests"/>
16 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference cps.ecore#//CyberPhysicalSystem/applicationTypes"/>
17 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference cps.ecore#//CyberPhysicalSystem/hostTypes"/>
18 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//CyberPhysicalSystem/hosts"/>
19 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//CyberPhysicalSystem/applications"/>
20 </genClasses>
21 <genClasses ecoreClass="cps.ecore#//ApplicationType">
22 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationType/instances"/>
23 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationType/requirements"/>
24 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationType/dependsOn"/>
25 </genClasses>
26 <genClasses ecoreClass="cps.ecore#//HostType">
27 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostType/defaultMemory"/>
28 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostType/defaultHdd"/>
29 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//HostType/instances"/>
30 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//HostType/canConnectTo"/>
31 </genClasses>
32 <genClasses ecoreClass="cps.ecore#//Request">
33 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//Request/requirements"/>
34 </genClasses>
35 <genClasses ecoreClass="cps.ecore#//Requirement">
36 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//Requirement/request"/>
37 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//Requirement/count"/>
38 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//Requirement/type"/>
39 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//Requirement/instances"/>
40 </genClasses>
41 <genClasses ecoreClass="cps.ecore#//ApplicationInstance">
42 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationInstance/requirement"/>
43 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationInstance/type"/>
44 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationInstance/allocatedTo"/>
45 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ApplicationInstance/dependsOn"/>
46 </genClasses>
47 <genClasses ecoreClass="cps.ecore#//ResourceRequirement">
48 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//ResourceRequirement/requiredMemory"/>
49 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//ResourceRequirement/requiredHdd"/>
50 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//ResourceRequirement/hostType"/>
51 </genClasses>
52 <genClasses ecoreClass="cps.ecore#//HostInstance">
53 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//HostInstance/type"/>
54 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostInstance/availableMemory"/>
55 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostInstance/availableHdd"/>
56 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostInstance/totalMemory"/>
57 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute cps.ecore#//HostInstance/totalHdd"/>
58 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//HostInstance/applications"/>
59 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cps.ecore#//HostInstance/connectedTo"/>
60 </genClasses>
61 </genPackages>
62</genmodel:GenModel>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.classpath b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.classpath
new file mode 100644
index 00000000..8129e44b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.classpath
@@ -0,0 +1,10 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="ecore-gen"/>
4 <classpathentry kind="src" path="src"/>
5 <classpathentry kind="src" path="xtend-gen"/>
6 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
7 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
8 <classpathentry kind="src" path="src-gen"/>
9 <classpathentry kind="output" path="bin"/>
10</classpath>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.gitignore
new file mode 100644
index 00000000..ae3c1726
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.gitignore
@@ -0,0 +1 @@
/bin/
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.project b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.project
new file mode 100644
index 00000000..e594a173
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/.project
@@ -0,0 +1,41 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.domains.satellite</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.jdt.core.javabuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.ManifestBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 <buildCommand>
29 <name>org.eclipse.pde.SchemaBuilder</name>
30 <arguments>
31 </arguments>
32 </buildCommand>
33 </buildSpec>
34 <natures>
35 <nature>org.eclipse.sirius.nature.modelingproject</nature>
36 <nature>org.eclipse.jdt.core.javanature</nature>
37 <nature>org.eclipse.pde.PluginNature</nature>
38 <nature>org.eclipse.viatra.query.projectnature</nature>
39 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
40 </natures>
41</projectDescription>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/META-INF/MANIFEST.MF b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..21769598
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.domains.satellite;singleton:=true
5Bundle-Version: 0.1.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Export-Package: hu.bme.mit.inf.dslreasoner.domains.satellite,
10 hu.bme.mit.inf.dslreasoner.domains.satellite.impl,
11 hu.bme.mit.inf.dslreasoner.domains.satellite.queries,
12 hu.bme.mit.inf.dslreasoner.domains.satellite.runner,
13 hu.bme.mit.inf.dslreasoner.domains.satellite.util,
14 satellite,
15 satellite.impl,
16 satellite.util
17Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime,
18 org.eclipse.viatra.query.runtime,
19 org.eclipse.viatra.query.runtime.rete,
20 org.eclipse.viatra.query.runtime.localsearch,
21 org.eclipse.xtext.xbase.lib,
22 org.eclipse.emf.ecore;visibility:=reexport,
23 org.eclipse.core.runtime,
24 hu.bme.mit.inf.dslreasoner.application
25Import-Package: org.apache.log4j
26Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.domains.satellite
27Bundle-ActivationPolicy: lazy
28Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/build.properties b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/build.properties
new file mode 100644
index 00000000..368af38e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/build.properties
@@ -0,0 +1,11 @@
1bin.includes = .,\
2 model/,\
3 META-INF/,\
4 plugin.xml,\
5 plugin.properties
6jars.compile.order = .
7source.. = ecore-gen/,\
8 src-gen/,\
9 src/,\
10 xtend-gen/
11output.. = bin/
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/configs/generation.vsconfig b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/configs/generation.vsconfig
new file mode 100644
index 00000000..1942980c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/configs/generation.vsconfig
@@ -0,0 +1,25 @@
1import epackage "model/satellite.ecore"
2import viatra "src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql"
3
4generate {
5 metamodel = { package satellite excluding { InterferometryMission.observationTime } }
6 constraints = { package hu.bme.mit.inf.dslreasoner.domains.satellite.queries }
7 partial-model = { "inputs/SatelliteInstance.xmi"}
8 solver = ViatraSolver
9 scope = {
10 #node += 16..32
11 }
12
13 config = {
14 runtime = 10000,
15 log-level = normal
16 }
17
18 number = 1
19 runs = 1
20
21 debug = "outputs/debug"
22 log = "outputs/log.txt"
23 output = "outputs/models"
24 statistics = "outputs/statistics.csv"
25}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/AntennaGain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/AntennaGain.java
new file mode 100644
index 00000000..20a2c59f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/AntennaGain.java
@@ -0,0 +1,242 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Antenna Gain</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getAntennaGain()
17 * @model
18 * @generated
19 */
20public enum AntennaGain implements Enumerator {
21 /**
22 * The '<em><b>LOW</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #LOW_VALUE
26 * @generated
27 * @ordered
28 */
29 LOW(0, "LOW", "LOW"),
30
31 /**
32 * The '<em><b>MEDIUM</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #MEDIUM_VALUE
36 * @generated
37 * @ordered
38 */
39 MEDIUM(1, "MEDIUM", "MEDIUM"),
40
41 /**
42 * The '<em><b>HIGH</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #HIGH_VALUE
46 * @generated
47 * @ordered
48 */
49 HIGH(2, "HIGH", "HIGH");
50
51 /**
52 * The '<em><b>LOW</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>LOW</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #LOW
60 * @model
61 * @generated
62 * @ordered
63 */
64 public static final int LOW_VALUE = 0;
65
66 /**
67 * The '<em><b>MEDIUM</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>MEDIUM</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #MEDIUM
75 * @model
76 * @generated
77 * @ordered
78 */
79 public static final int MEDIUM_VALUE = 1;
80
81 /**
82 * The '<em><b>HIGH</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>HIGH</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #HIGH
90 * @model
91 * @generated
92 * @ordered
93 */
94 public static final int HIGH_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Antenna Gain</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final AntennaGain[] VALUES_ARRAY = new AntennaGain[] { LOW, MEDIUM, HIGH, };
103
104 /**
105 * A public read-only list of all the '<em><b>Antenna Gain</b></em>' enumerators.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public static final List<AntennaGain> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
111
112 /**
113 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @param literal the literal.
117 * @return the matching enumerator or <code>null</code>.
118 * @generated
119 */
120 public static AntennaGain get(String literal) {
121 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
122 AntennaGain result = VALUES_ARRAY[i];
123 if (result.toString().equals(literal)) {
124 return result;
125 }
126 }
127 return null;
128 }
129
130 /**
131 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified name.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param name the name.
135 * @return the matching enumerator or <code>null</code>.
136 * @generated
137 */
138 public static AntennaGain getByName(String name) {
139 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
140 AntennaGain result = VALUES_ARRAY[i];
141 if (result.getName().equals(name)) {
142 return result;
143 }
144 }
145 return null;
146 }
147
148 /**
149 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified integer value.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @param value the integer value.
153 * @return the matching enumerator or <code>null</code>.
154 * @generated
155 */
156 public static AntennaGain get(int value) {
157 switch (value) {
158 case LOW_VALUE:
159 return LOW;
160 case MEDIUM_VALUE:
161 return MEDIUM;
162 case HIGH_VALUE:
163 return HIGH;
164 }
165 return null;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private final int value;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private final String name;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private final String literal;
188
189 /**
190 * Only this class can construct instances.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private AntennaGain(int value, String name, String literal) {
196 this.value = value;
197 this.name = name;
198 this.literal = literal;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public int getValue() {
208 return value;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public String getLiteral() {
228 return literal;
229 }
230
231 /**
232 * Returns the literal value of the enumerator, which is its string representation.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public String toString() {
239 return literal;
240 }
241
242} //AntennaGain
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommSubsystem.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommSubsystem.java
new file mode 100644
index 00000000..255bfc4e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommSubsystem.java
@@ -0,0 +1,83 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Comm Subsystem</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand <em>Band</em>}</li>
17 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain <em>Gain</em>}</li>
18 * </ul>
19 *
20 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommSubsystem()
21 * @model
22 * @generated
23 */
24public interface CommSubsystem extends EObject {
25 /**
26 * Returns the value of the '<em><b>Band</b></em>' attribute.
27 * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand}.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Band</em>' attribute isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Band</em>' attribute.
35 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
36 * @see #setBand(TransceiverBand)
37 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommSubsystem_Band()
38 * @model required="true"
39 * @generated
40 */
41 TransceiverBand getBand();
42
43 /**
44 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand <em>Band</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Band</em>' attribute.
48 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
49 * @see #getBand()
50 * @generated
51 */
52 void setBand(TransceiverBand value);
53
54 /**
55 * Returns the value of the '<em><b>Gain</b></em>' attribute.
56 * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain}.
57 * <!-- begin-user-doc -->
58 * <p>
59 * If the meaning of the '<em>Gain</em>' attribute isn't clear,
60 * there really should be more of a description here...
61 * </p>
62 * <!-- end-user-doc -->
63 * @return the value of the '<em>Gain</em>' attribute.
64 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
65 * @see #setGain(AntennaGain)
66 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommSubsystem_Gain()
67 * @model required="true"
68 * @generated
69 */
70 AntennaGain getGain();
71
72 /**
73 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain <em>Gain</em>}' attribute.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @param value the new value of the '<em>Gain</em>' attribute.
77 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
78 * @see #getGain()
79 * @generated
80 */
81 void setGain(AntennaGain value);
82
83} // CommSubsystem
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommunicatingElement.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommunicatingElement.java
new file mode 100644
index 00000000..3a4224cd
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CommunicatingElement.java
@@ -0,0 +1,69 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Communicating Element</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommSubsystem <em>Comm Subsystem</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}</li>
20 * </ul>
21 *
22 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommunicatingElement()
23 * @model abstract="true"
24 * @generated
25 */
26public interface CommunicatingElement extends EObject {
27 /**
28 * Returns the value of the '<em><b>Comm Subsystem</b></em>' containment reference list.
29 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem}.
30 * <!-- begin-user-doc -->
31 * <p>
32 * If the meaning of the '<em>Comm Subsystem</em>' containment reference list isn't clear,
33 * there really should be more of a description here...
34 * </p>
35 * <!-- end-user-doc -->
36 * @return the value of the '<em>Comm Subsystem</em>' containment reference list.
37 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommunicatingElement_CommSubsystem()
38 * @model containment="true" required="true" upper="2"
39 * @generated
40 */
41 EList<CommSubsystem> getCommSubsystem();
42
43 /**
44 * Returns the value of the '<em><b>Communication Link</b></em>' containment reference.
45 * <!-- begin-user-doc -->
46 * <p>
47 * If the meaning of the '<em>Communication Link</em>' containment reference isn't clear,
48 * there really should be more of a description here...
49 * </p>
50 * <!-- end-user-doc -->
51 * @return the value of the '<em>Communication Link</em>' containment reference.
52 * @see #setCommunicationLink(DirectedCommunicationLink)
53 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCommunicatingElement_CommunicationLink()
54 * @model containment="true"
55 * @generated
56 */
57 DirectedCommunicationLink getCommunicationLink();
58
59 /**
60 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}' containment reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @param value the new value of the '<em>Communication Link</em>' containment reference.
64 * @see #getCommunicationLink()
65 * @generated
66 */
67 void setCommunicationLink(DirectedCommunicationLink value);
68
69} // CommunicatingElement
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/ConstellationMission.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/ConstellationMission.java
new file mode 100644
index 00000000..82fb5971
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/ConstellationMission.java
@@ -0,0 +1,69 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Constellation Mission</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getSpacecraft <em>Spacecraft</em>}</li>
20 * </ul>
21 *
22 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getConstellationMission()
23 * @model abstract="true"
24 * @generated
25 */
26public interface ConstellationMission extends EObject {
27 /**
28 * Returns the value of the '<em><b>Ground Station Network</b></em>' containment reference.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Ground Station Network</em>' containment reference isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Ground Station Network</em>' containment reference.
36 * @see #setGroundStationNetwork(GroundStationNetwork)
37 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getConstellationMission_GroundStationNetwork()
38 * @model containment="true" required="true"
39 * @generated
40 */
41 GroundStationNetwork getGroundStationNetwork();
42
43 /**
44 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}' containment reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Ground Station Network</em>' containment reference.
48 * @see #getGroundStationNetwork()
49 * @generated
50 */
51 void setGroundStationNetwork(GroundStationNetwork value);
52
53 /**
54 * Returns the value of the '<em><b>Spacecraft</b></em>' containment reference list.
55 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft}.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Spacecraft</em>' containment reference list isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Spacecraft</em>' containment reference list.
63 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getConstellationMission_Spacecraft()
64 * @model containment="true" lower="2" upper="50"
65 * @generated
66 */
67 EList<Spacecraft> getSpacecraft();
68
69} // ConstellationMission
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat.java
new file mode 100644
index 00000000..ef66dce5
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Cube Sat</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCubeSat()
12 * @model abstract="true"
13 * @generated
14 */
15public interface CubeSat extends Spacecraft {
16} // CubeSat
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat3U.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat3U.java
new file mode 100644
index 00000000..98dea285
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat3U.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Cube Sat3 U</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCubeSat3U()
12 * @model
13 * @generated
14 */
15public interface CubeSat3U extends CubeSat {
16} // CubeSat3U
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat6U.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat6U.java
new file mode 100644
index 00000000..eb64fe33
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/CubeSat6U.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Cube Sat6 U</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getCubeSat6U()
12 * @model
13 * @generated
14 */
15public interface CubeSat6U extends CubeSat {
16} // CubeSat6U
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/DirectedCommunicationLink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/DirectedCommunicationLink.java
new file mode 100644
index 00000000..b4eb1a82
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/DirectedCommunicationLink.java
@@ -0,0 +1,77 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Directed Communication Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource <em>Source</em>}</li>
17 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget <em>Target</em>}</li>
18 * </ul>
19 *
20 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getDirectedCommunicationLink()
21 * @model
22 * @generated
23 */
24public interface DirectedCommunicationLink extends EObject {
25 /**
26 * Returns the value of the '<em><b>Source</b></em>' reference.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Source</em>' reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Source</em>' reference.
34 * @see #setSource(CommSubsystem)
35 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getDirectedCommunicationLink_Source()
36 * @model required="true"
37 * @generated
38 */
39 CommSubsystem getSource();
40
41 /**
42 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource <em>Source</em>}' reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @param value the new value of the '<em>Source</em>' reference.
46 * @see #getSource()
47 * @generated
48 */
49 void setSource(CommSubsystem value);
50
51 /**
52 * Returns the value of the '<em><b>Target</b></em>' reference.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of the '<em>Target</em>' reference isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @return the value of the '<em>Target</em>' reference.
60 * @see #setTarget(CommSubsystem)
61 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getDirectedCommunicationLink_Target()
62 * @model required="true"
63 * @generated
64 */
65 CommSubsystem getTarget();
66
67 /**
68 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget <em>Target</em>}' reference.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Target</em>' reference.
72 * @see #getTarget()
73 * @generated
74 */
75 void setTarget(CommSubsystem value);
76
77} // DirectedCommunicationLink
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/GroundStationNetwork.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/GroundStationNetwork.java
new file mode 100644
index 00000000..e256d24d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/GroundStationNetwork.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Ground Station Network</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getGroundStationNetwork()
12 * @model
13 * @generated
14 */
15public interface GroundStationNetwork extends CommunicatingElement {
16} // GroundStationNetwork
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryMission.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryMission.java
new file mode 100644
index 00000000..976ba160
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryMission.java
@@ -0,0 +1,49 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Interferometry Mission</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 * <p>
11 * The following features are supported:
12 * </p>
13 * <ul>
14 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}</li>
15 * </ul>
16 *
17 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getInterferometryMission()
18 * @model
19 * @generated
20 */
21public interface InterferometryMission extends ConstellationMission {
22 /**
23 * Returns the value of the '<em><b>Observation Time</b></em>' attribute.
24 * The default value is <code>"2.0"</code>.
25 * <!-- begin-user-doc -->
26 * <p>
27 * If the meaning of the '<em>Observation Time</em>' attribute isn't clear,
28 * there really should be more of a description here...
29 * </p>
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Observation Time</em>' attribute.
32 * @see #setObservationTime(float)
33 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getInterferometryMission_ObservationTime()
34 * @model default="2.0" required="true"
35 * @generated
36 */
37 float getObservationTime();
38
39 /**
40 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Observation Time</em>' attribute.
44 * @see #getObservationTime()
45 * @generated
46 */
47 void setObservationTime(float value);
48
49} // InterferometryMission
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryPayload.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryPayload.java
new file mode 100644
index 00000000..06b47f38
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/InterferometryPayload.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Interferometry Payload</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getInterferometryPayload()
12 * @model
13 * @generated
14 */
15public interface InterferometryPayload extends Payload {
16} // InterferometryPayload
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Payload.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Payload.java
new file mode 100644
index 00000000..6f7f1418
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Payload.java
@@ -0,0 +1,18 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Payload</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getPayload()
14 * @model abstract="true"
15 * @generated
16 */
17public interface Payload extends EObject {
18} // Payload
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatelliteFactory.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatelliteFactory.java
new file mode 100644
index 00000000..3b2bc48a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatelliteFactory.java
@@ -0,0 +1,105 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage
13 * @generated
14 */
15public interface SatelliteFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 SatelliteFactory eINSTANCE = hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatelliteFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Interferometry Mission</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Interferometry Mission</em>'.
29 * @generated
30 */
31 InterferometryMission createInterferometryMission();
32
33 /**
34 * Returns a new object of class '<em>Ground Station Network</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Ground Station Network</em>'.
38 * @generated
39 */
40 GroundStationNetwork createGroundStationNetwork();
41
42 /**
43 * Returns a new object of class '<em>Comm Subsystem</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Comm Subsystem</em>'.
47 * @generated
48 */
49 CommSubsystem createCommSubsystem();
50
51 /**
52 * Returns a new object of class '<em>Directed Communication Link</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Directed Communication Link</em>'.
56 * @generated
57 */
58 DirectedCommunicationLink createDirectedCommunicationLink();
59
60 /**
61 * Returns a new object of class '<em>Interferometry Payload</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Interferometry Payload</em>'.
65 * @generated
66 */
67 InterferometryPayload createInterferometryPayload();
68
69 /**
70 * Returns a new object of class '<em>Cube Sat3 U</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>Cube Sat3 U</em>'.
74 * @generated
75 */
76 CubeSat3U createCubeSat3U();
77
78 /**
79 * Returns a new object of class '<em>Cube Sat6 U</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Cube Sat6 U</em>'.
83 * @generated
84 */
85 CubeSat6U createCubeSat6U();
86
87 /**
88 * Returns a new object of class '<em>Small Sat</em>'.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return a new object of class '<em>Small Sat</em>'.
92 * @generated
93 */
94 SmallSat createSmallSat();
95
96 /**
97 * Returns the package supported by this factory.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return the package supported by this factory.
101 * @generated
102 */
103 SatellitePackage getSatellitePackage();
104
105} //SatelliteFactory
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatellitePackage.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatellitePackage.java
new file mode 100644
index 00000000..1e129422
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatellitePackage.java
@@ -0,0 +1,1306 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EEnum;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.EReference;
10
11/**
12 * <!-- begin-user-doc -->
13 * The <b>Package</b> for the model.
14 * It contains accessors for the meta objects to represent
15 * <ul>
16 * <li>each class,</li>
17 * <li>each feature of each class,</li>
18 * <li>each operation of each class,</li>
19 * <li>each enum,</li>
20 * <li>and each data type</li>
21 * </ul>
22 * <!-- end-user-doc -->
23 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatelliteFactory
24 * @model kind="package"
25 * @generated
26 */
27public interface SatellitePackage extends EPackage {
28 /**
29 * The package name.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 String eNAME = "satellite";
35
36 /**
37 * The package namespace URI.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @generated
41 */
42 String eNS_URI = "http://www.example.org/satellite";
43
44 /**
45 * The package namespace name.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 String eNS_PREFIX = "satellite";
51
52 /**
53 * The singleton instance of the package.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 SatellitePackage eINSTANCE = hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl.init();
59
60 /**
61 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl <em>Constellation Mission</em>}' class.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl
65 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getConstellationMission()
66 * @generated
67 */
68 int CONSTELLATION_MISSION = 0;
69
70 /**
71 * The feature id for the '<em><b>Ground Station Network</b></em>' containment reference.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 * @ordered
76 */
77 int CONSTELLATION_MISSION__GROUND_STATION_NETWORK = 0;
78
79 /**
80 * The feature id for the '<em><b>Spacecraft</b></em>' containment reference list.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 * @ordered
85 */
86 int CONSTELLATION_MISSION__SPACECRAFT = 1;
87
88 /**
89 * The number of structural features of the '<em>Constellation Mission</em>' class.
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 * @ordered
94 */
95 int CONSTELLATION_MISSION_FEATURE_COUNT = 2;
96
97 /**
98 * The number of operations of the '<em>Constellation Mission</em>' class.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 * @ordered
103 */
104 int CONSTELLATION_MISSION_OPERATION_COUNT = 0;
105
106 /**
107 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl <em>Interferometry Mission</em>}' class.
108 * <!-- begin-user-doc -->
109 * <!-- end-user-doc -->
110 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl
111 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryMission()
112 * @generated
113 */
114 int INTERFEROMETRY_MISSION = 1;
115
116 /**
117 * The feature id for the '<em><b>Ground Station Network</b></em>' containment reference.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 * @ordered
122 */
123 int INTERFEROMETRY_MISSION__GROUND_STATION_NETWORK = CONSTELLATION_MISSION__GROUND_STATION_NETWORK;
124
125 /**
126 * The feature id for the '<em><b>Spacecraft</b></em>' containment reference list.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 * @ordered
131 */
132 int INTERFEROMETRY_MISSION__SPACECRAFT = CONSTELLATION_MISSION__SPACECRAFT;
133
134 /**
135 * The feature id for the '<em><b>Observation Time</b></em>' attribute.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 * @ordered
140 */
141 int INTERFEROMETRY_MISSION__OBSERVATION_TIME = CONSTELLATION_MISSION_FEATURE_COUNT + 0;
142
143 /**
144 * The number of structural features of the '<em>Interferometry Mission</em>' class.
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 * @ordered
149 */
150 int INTERFEROMETRY_MISSION_FEATURE_COUNT = CONSTELLATION_MISSION_FEATURE_COUNT + 1;
151
152 /**
153 * The number of operations of the '<em>Interferometry Mission</em>' class.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 * @ordered
158 */
159 int INTERFEROMETRY_MISSION_OPERATION_COUNT = CONSTELLATION_MISSION_OPERATION_COUNT + 0;
160
161 /**
162 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl <em>Communicating Element</em>}' class.
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl
166 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommunicatingElement()
167 * @generated
168 */
169 int COMMUNICATING_ELEMENT = 2;
170
171 /**
172 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 * @ordered
177 */
178 int COMMUNICATING_ELEMENT__COMM_SUBSYSTEM = 0;
179
180 /**
181 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 * @ordered
186 */
187 int COMMUNICATING_ELEMENT__COMMUNICATION_LINK = 1;
188
189 /**
190 * The number of structural features of the '<em>Communicating Element</em>' class.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 * @ordered
195 */
196 int COMMUNICATING_ELEMENT_FEATURE_COUNT = 2;
197
198 /**
199 * The number of operations of the '<em>Communicating Element</em>' class.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 * @ordered
204 */
205 int COMMUNICATING_ELEMENT_OPERATION_COUNT = 0;
206
207 /**
208 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl <em>Ground Station Network</em>}' class.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl
212 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getGroundStationNetwork()
213 * @generated
214 */
215 int GROUND_STATION_NETWORK = 3;
216
217 /**
218 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 * @ordered
223 */
224 int GROUND_STATION_NETWORK__COMM_SUBSYSTEM = COMMUNICATING_ELEMENT__COMM_SUBSYSTEM;
225
226 /**
227 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 * @ordered
232 */
233 int GROUND_STATION_NETWORK__COMMUNICATION_LINK = COMMUNICATING_ELEMENT__COMMUNICATION_LINK;
234
235 /**
236 * The number of structural features of the '<em>Ground Station Network</em>' class.
237 * <!-- begin-user-doc -->
238 * <!-- end-user-doc -->
239 * @generated
240 * @ordered
241 */
242 int GROUND_STATION_NETWORK_FEATURE_COUNT = COMMUNICATING_ELEMENT_FEATURE_COUNT + 0;
243
244 /**
245 * The number of operations of the '<em>Ground Station Network</em>' class.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 * @ordered
250 */
251 int GROUND_STATION_NETWORK_OPERATION_COUNT = COMMUNICATING_ELEMENT_OPERATION_COUNT + 0;
252
253 /**
254 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl <em>Spacecraft</em>}' class.
255 * <!-- begin-user-doc -->
256 * <!-- end-user-doc -->
257 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl
258 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraft()
259 * @generated
260 */
261 int SPACECRAFT = 4;
262
263 /**
264 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
265 * <!-- begin-user-doc -->
266 * <!-- end-user-doc -->
267 * @generated
268 * @ordered
269 */
270 int SPACECRAFT__COMM_SUBSYSTEM = COMMUNICATING_ELEMENT__COMM_SUBSYSTEM;
271
272 /**
273 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 * @ordered
278 */
279 int SPACECRAFT__COMMUNICATION_LINK = COMMUNICATING_ELEMENT__COMMUNICATION_LINK;
280
281 /**
282 * The feature id for the '<em><b>Payload</b></em>' containment reference.
283 * <!-- begin-user-doc -->
284 * <!-- end-user-doc -->
285 * @generated
286 * @ordered
287 */
288 int SPACECRAFT__PAYLOAD = COMMUNICATING_ELEMENT_FEATURE_COUNT + 0;
289
290 /**
291 * The feature id for the '<em><b>Kind</b></em>' attribute.
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 * @ordered
296 */
297 int SPACECRAFT__KIND = COMMUNICATING_ELEMENT_FEATURE_COUNT + 1;
298
299 /**
300 * The number of structural features of the '<em>Spacecraft</em>' class.
301 * <!-- begin-user-doc -->
302 * <!-- end-user-doc -->
303 * @generated
304 * @ordered
305 */
306 int SPACECRAFT_FEATURE_COUNT = COMMUNICATING_ELEMENT_FEATURE_COUNT + 2;
307
308 /**
309 * The number of operations of the '<em>Spacecraft</em>' class.
310 * <!-- begin-user-doc -->
311 * <!-- end-user-doc -->
312 * @generated
313 * @ordered
314 */
315 int SPACECRAFT_OPERATION_COUNT = COMMUNICATING_ELEMENT_OPERATION_COUNT + 0;
316
317 /**
318 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl <em>Comm Subsystem</em>}' class.
319 * <!-- begin-user-doc -->
320 * <!-- end-user-doc -->
321 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl
322 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommSubsystem()
323 * @generated
324 */
325 int COMM_SUBSYSTEM = 5;
326
327 /**
328 * The feature id for the '<em><b>Band</b></em>' attribute.
329 * <!-- begin-user-doc -->
330 * <!-- end-user-doc -->
331 * @generated
332 * @ordered
333 */
334 int COMM_SUBSYSTEM__BAND = 0;
335
336 /**
337 * The feature id for the '<em><b>Gain</b></em>' attribute.
338 * <!-- begin-user-doc -->
339 * <!-- end-user-doc -->
340 * @generated
341 * @ordered
342 */
343 int COMM_SUBSYSTEM__GAIN = 1;
344
345 /**
346 * The number of structural features of the '<em>Comm Subsystem</em>' class.
347 * <!-- begin-user-doc -->
348 * <!-- end-user-doc -->
349 * @generated
350 * @ordered
351 */
352 int COMM_SUBSYSTEM_FEATURE_COUNT = 2;
353
354 /**
355 * The number of operations of the '<em>Comm Subsystem</em>' class.
356 * <!-- begin-user-doc -->
357 * <!-- end-user-doc -->
358 * @generated
359 * @ordered
360 */
361 int COMM_SUBSYSTEM_OPERATION_COUNT = 0;
362
363 /**
364 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl <em>Directed Communication Link</em>}' class.
365 * <!-- begin-user-doc -->
366 * <!-- end-user-doc -->
367 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl
368 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getDirectedCommunicationLink()
369 * @generated
370 */
371 int DIRECTED_COMMUNICATION_LINK = 6;
372
373 /**
374 * The feature id for the '<em><b>Source</b></em>' reference.
375 * <!-- begin-user-doc -->
376 * <!-- end-user-doc -->
377 * @generated
378 * @ordered
379 */
380 int DIRECTED_COMMUNICATION_LINK__SOURCE = 0;
381
382 /**
383 * The feature id for the '<em><b>Target</b></em>' reference.
384 * <!-- begin-user-doc -->
385 * <!-- end-user-doc -->
386 * @generated
387 * @ordered
388 */
389 int DIRECTED_COMMUNICATION_LINK__TARGET = 1;
390
391 /**
392 * The number of structural features of the '<em>Directed Communication Link</em>' class.
393 * <!-- begin-user-doc -->
394 * <!-- end-user-doc -->
395 * @generated
396 * @ordered
397 */
398 int DIRECTED_COMMUNICATION_LINK_FEATURE_COUNT = 2;
399
400 /**
401 * The number of operations of the '<em>Directed Communication Link</em>' class.
402 * <!-- begin-user-doc -->
403 * <!-- end-user-doc -->
404 * @generated
405 * @ordered
406 */
407 int DIRECTED_COMMUNICATION_LINK_OPERATION_COUNT = 0;
408
409 /**
410 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl <em>Payload</em>}' class.
411 * <!-- begin-user-doc -->
412 * <!-- end-user-doc -->
413 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl
414 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getPayload()
415 * @generated
416 */
417 int PAYLOAD = 7;
418
419 /**
420 * The number of structural features of the '<em>Payload</em>' class.
421 * <!-- begin-user-doc -->
422 * <!-- end-user-doc -->
423 * @generated
424 * @ordered
425 */
426 int PAYLOAD_FEATURE_COUNT = 0;
427
428 /**
429 * The number of operations of the '<em>Payload</em>' class.
430 * <!-- begin-user-doc -->
431 * <!-- end-user-doc -->
432 * @generated
433 * @ordered
434 */
435 int PAYLOAD_OPERATION_COUNT = 0;
436
437 /**
438 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl <em>Interferometry Payload</em>}' class.
439 * <!-- begin-user-doc -->
440 * <!-- end-user-doc -->
441 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl
442 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryPayload()
443 * @generated
444 */
445 int INTERFEROMETRY_PAYLOAD = 8;
446
447 /**
448 * The number of structural features of the '<em>Interferometry Payload</em>' class.
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @generated
452 * @ordered
453 */
454 int INTERFEROMETRY_PAYLOAD_FEATURE_COUNT = PAYLOAD_FEATURE_COUNT + 0;
455
456 /**
457 * The number of operations of the '<em>Interferometry Payload</em>' class.
458 * <!-- begin-user-doc -->
459 * <!-- end-user-doc -->
460 * @generated
461 * @ordered
462 */
463 int INTERFEROMETRY_PAYLOAD_OPERATION_COUNT = PAYLOAD_OPERATION_COUNT + 0;
464
465 /**
466 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSatImpl <em>Cube Sat</em>}' class.
467 * <!-- begin-user-doc -->
468 * <!-- end-user-doc -->
469 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSatImpl
470 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat()
471 * @generated
472 */
473 int CUBE_SAT = 12;
474
475 /**
476 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
477 * <!-- begin-user-doc -->
478 * <!-- end-user-doc -->
479 * @generated
480 * @ordered
481 */
482 int CUBE_SAT__COMM_SUBSYSTEM = SPACECRAFT__COMM_SUBSYSTEM;
483
484 /**
485 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
486 * <!-- begin-user-doc -->
487 * <!-- end-user-doc -->
488 * @generated
489 * @ordered
490 */
491 int CUBE_SAT__COMMUNICATION_LINK = SPACECRAFT__COMMUNICATION_LINK;
492
493 /**
494 * The feature id for the '<em><b>Payload</b></em>' containment reference.
495 * <!-- begin-user-doc -->
496 * <!-- end-user-doc -->
497 * @generated
498 * @ordered
499 */
500 int CUBE_SAT__PAYLOAD = SPACECRAFT__PAYLOAD;
501
502 /**
503 * The feature id for the '<em><b>Kind</b></em>' attribute.
504 * <!-- begin-user-doc -->
505 * <!-- end-user-doc -->
506 * @generated
507 * @ordered
508 */
509 int CUBE_SAT__KIND = SPACECRAFT__KIND;
510
511 /**
512 * The number of structural features of the '<em>Cube Sat</em>' class.
513 * <!-- begin-user-doc -->
514 * <!-- end-user-doc -->
515 * @generated
516 * @ordered
517 */
518 int CUBE_SAT_FEATURE_COUNT = SPACECRAFT_FEATURE_COUNT + 0;
519
520 /**
521 * The number of operations of the '<em>Cube Sat</em>' class.
522 * <!-- begin-user-doc -->
523 * <!-- end-user-doc -->
524 * @generated
525 * @ordered
526 */
527 int CUBE_SAT_OPERATION_COUNT = SPACECRAFT_OPERATION_COUNT + 0;
528
529 /**
530 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat3UImpl <em>Cube Sat3 U</em>}' class.
531 * <!-- begin-user-doc -->
532 * <!-- end-user-doc -->
533 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat3UImpl
534 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat3U()
535 * @generated
536 */
537 int CUBE_SAT3_U = 9;
538
539 /**
540 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
541 * <!-- begin-user-doc -->
542 * <!-- end-user-doc -->
543 * @generated
544 * @ordered
545 */
546 int CUBE_SAT3_U__COMM_SUBSYSTEM = CUBE_SAT__COMM_SUBSYSTEM;
547
548 /**
549 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
550 * <!-- begin-user-doc -->
551 * <!-- end-user-doc -->
552 * @generated
553 * @ordered
554 */
555 int CUBE_SAT3_U__COMMUNICATION_LINK = CUBE_SAT__COMMUNICATION_LINK;
556
557 /**
558 * The feature id for the '<em><b>Payload</b></em>' containment reference.
559 * <!-- begin-user-doc -->
560 * <!-- end-user-doc -->
561 * @generated
562 * @ordered
563 */
564 int CUBE_SAT3_U__PAYLOAD = CUBE_SAT__PAYLOAD;
565
566 /**
567 * The feature id for the '<em><b>Kind</b></em>' attribute.
568 * <!-- begin-user-doc -->
569 * <!-- end-user-doc -->
570 * @generated
571 * @ordered
572 */
573 int CUBE_SAT3_U__KIND = CUBE_SAT__KIND;
574
575 /**
576 * The number of structural features of the '<em>Cube Sat3 U</em>' class.
577 * <!-- begin-user-doc -->
578 * <!-- end-user-doc -->
579 * @generated
580 * @ordered
581 */
582 int CUBE_SAT3_U_FEATURE_COUNT = CUBE_SAT_FEATURE_COUNT + 0;
583
584 /**
585 * The number of operations of the '<em>Cube Sat3 U</em>' class.
586 * <!-- begin-user-doc -->
587 * <!-- end-user-doc -->
588 * @generated
589 * @ordered
590 */
591 int CUBE_SAT3_U_OPERATION_COUNT = CUBE_SAT_OPERATION_COUNT + 0;
592
593 /**
594 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat6UImpl <em>Cube Sat6 U</em>}' class.
595 * <!-- begin-user-doc -->
596 * <!-- end-user-doc -->
597 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat6UImpl
598 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat6U()
599 * @generated
600 */
601 int CUBE_SAT6_U = 10;
602
603 /**
604 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
605 * <!-- begin-user-doc -->
606 * <!-- end-user-doc -->
607 * @generated
608 * @ordered
609 */
610 int CUBE_SAT6_U__COMM_SUBSYSTEM = CUBE_SAT__COMM_SUBSYSTEM;
611
612 /**
613 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
614 * <!-- begin-user-doc -->
615 * <!-- end-user-doc -->
616 * @generated
617 * @ordered
618 */
619 int CUBE_SAT6_U__COMMUNICATION_LINK = CUBE_SAT__COMMUNICATION_LINK;
620
621 /**
622 * The feature id for the '<em><b>Payload</b></em>' containment reference.
623 * <!-- begin-user-doc -->
624 * <!-- end-user-doc -->
625 * @generated
626 * @ordered
627 */
628 int CUBE_SAT6_U__PAYLOAD = CUBE_SAT__PAYLOAD;
629
630 /**
631 * The feature id for the '<em><b>Kind</b></em>' attribute.
632 * <!-- begin-user-doc -->
633 * <!-- end-user-doc -->
634 * @generated
635 * @ordered
636 */
637 int CUBE_SAT6_U__KIND = CUBE_SAT__KIND;
638
639 /**
640 * The number of structural features of the '<em>Cube Sat6 U</em>' class.
641 * <!-- begin-user-doc -->
642 * <!-- end-user-doc -->
643 * @generated
644 * @ordered
645 */
646 int CUBE_SAT6_U_FEATURE_COUNT = CUBE_SAT_FEATURE_COUNT + 0;
647
648 /**
649 * The number of operations of the '<em>Cube Sat6 U</em>' class.
650 * <!-- begin-user-doc -->
651 * <!-- end-user-doc -->
652 * @generated
653 * @ordered
654 */
655 int CUBE_SAT6_U_OPERATION_COUNT = CUBE_SAT_OPERATION_COUNT + 0;
656
657 /**
658 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SmallSatImpl <em>Small Sat</em>}' class.
659 * <!-- begin-user-doc -->
660 * <!-- end-user-doc -->
661 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SmallSatImpl
662 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSmallSat()
663 * @generated
664 */
665 int SMALL_SAT = 11;
666
667 /**
668 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
669 * <!-- begin-user-doc -->
670 * <!-- end-user-doc -->
671 * @generated
672 * @ordered
673 */
674 int SMALL_SAT__COMM_SUBSYSTEM = SPACECRAFT__COMM_SUBSYSTEM;
675
676 /**
677 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
678 * <!-- begin-user-doc -->
679 * <!-- end-user-doc -->
680 * @generated
681 * @ordered
682 */
683 int SMALL_SAT__COMMUNICATION_LINK = SPACECRAFT__COMMUNICATION_LINK;
684
685 /**
686 * The feature id for the '<em><b>Payload</b></em>' containment reference.
687 * <!-- begin-user-doc -->
688 * <!-- end-user-doc -->
689 * @generated
690 * @ordered
691 */
692 int SMALL_SAT__PAYLOAD = SPACECRAFT__PAYLOAD;
693
694 /**
695 * The feature id for the '<em><b>Kind</b></em>' attribute.
696 * <!-- begin-user-doc -->
697 * <!-- end-user-doc -->
698 * @generated
699 * @ordered
700 */
701 int SMALL_SAT__KIND = SPACECRAFT__KIND;
702
703 /**
704 * The number of structural features of the '<em>Small Sat</em>' class.
705 * <!-- begin-user-doc -->
706 * <!-- end-user-doc -->
707 * @generated
708 * @ordered
709 */
710 int SMALL_SAT_FEATURE_COUNT = SPACECRAFT_FEATURE_COUNT + 0;
711
712 /**
713 * The number of operations of the '<em>Small Sat</em>' class.
714 * <!-- begin-user-doc -->
715 * <!-- end-user-doc -->
716 * @generated
717 * @ordered
718 */
719 int SMALL_SAT_OPERATION_COUNT = SPACECRAFT_OPERATION_COUNT + 0;
720
721 /**
722 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand <em>Transceiver Band</em>}' enum.
723 * <!-- begin-user-doc -->
724 * <!-- end-user-doc -->
725 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
726 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getTransceiverBand()
727 * @generated
728 */
729 int TRANSCEIVER_BAND = 13;
730
731 /**
732 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}' enum.
733 * <!-- begin-user-doc -->
734 * <!-- end-user-doc -->
735 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
736 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getAntennaGain()
737 * @generated
738 */
739 int ANTENNA_GAIN = 14;
740
741 /**
742 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
743 * <!-- begin-user-doc -->
744 * <!-- end-user-doc -->
745 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
746 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraftKind()
747 * @generated
748 */
749 int SPACECRAFT_KIND = 15;
750
751 /**
752 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission <em>Constellation Mission</em>}'.
753 * <!-- begin-user-doc -->
754 * <!-- end-user-doc -->
755 * @return the meta object for class '<em>Constellation Mission</em>'.
756 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission
757 * @generated
758 */
759 EClass getConstellationMission();
760
761 /**
762 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}'.
763 * <!-- begin-user-doc -->
764 * <!-- end-user-doc -->
765 * @return the meta object for the containment reference '<em>Ground Station Network</em>'.
766 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork()
767 * @see #getConstellationMission()
768 * @generated
769 */
770 EReference getConstellationMission_GroundStationNetwork();
771
772 /**
773 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getSpacecraft <em>Spacecraft</em>}'.
774 * <!-- begin-user-doc -->
775 * <!-- end-user-doc -->
776 * @return the meta object for the containment reference list '<em>Spacecraft</em>'.
777 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getSpacecraft()
778 * @see #getConstellationMission()
779 * @generated
780 */
781 EReference getConstellationMission_Spacecraft();
782
783 /**
784 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission <em>Interferometry Mission</em>}'.
785 * <!-- begin-user-doc -->
786 * <!-- end-user-doc -->
787 * @return the meta object for class '<em>Interferometry Mission</em>'.
788 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission
789 * @generated
790 */
791 EClass getInterferometryMission();
792
793 /**
794 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}'.
795 * <!-- begin-user-doc -->
796 * <!-- end-user-doc -->
797 * @return the meta object for the attribute '<em>Observation Time</em>'.
798 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime()
799 * @see #getInterferometryMission()
800 * @generated
801 */
802 EAttribute getInterferometryMission_ObservationTime();
803
804 /**
805 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement <em>Communicating Element</em>}'.
806 * <!-- begin-user-doc -->
807 * <!-- end-user-doc -->
808 * @return the meta object for class '<em>Communicating Element</em>'.
809 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement
810 * @generated
811 */
812 EClass getCommunicatingElement();
813
814 /**
815 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommSubsystem <em>Comm Subsystem</em>}'.
816 * <!-- begin-user-doc -->
817 * <!-- end-user-doc -->
818 * @return the meta object for the containment reference list '<em>Comm Subsystem</em>'.
819 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommSubsystem()
820 * @see #getCommunicatingElement()
821 * @generated
822 */
823 EReference getCommunicatingElement_CommSubsystem();
824
825 /**
826 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}'.
827 * <!-- begin-user-doc -->
828 * <!-- end-user-doc -->
829 * @return the meta object for the containment reference '<em>Communication Link</em>'.
830 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink()
831 * @see #getCommunicatingElement()
832 * @generated
833 */
834 EReference getCommunicatingElement_CommunicationLink();
835
836 /**
837 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
838 * <!-- begin-user-doc -->
839 * <!-- end-user-doc -->
840 * @return the meta object for class '<em>Ground Station Network</em>'.
841 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork
842 * @generated
843 */
844 EClass getGroundStationNetwork();
845
846 /**
847 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft <em>Spacecraft</em>}'.
848 * <!-- begin-user-doc -->
849 * <!-- end-user-doc -->
850 * @return the meta object for class '<em>Spacecraft</em>'.
851 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft
852 * @generated
853 */
854 EClass getSpacecraft();
855
856 /**
857 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload <em>Payload</em>}'.
858 * <!-- begin-user-doc -->
859 * <!-- end-user-doc -->
860 * @return the meta object for the containment reference '<em>Payload</em>'.
861 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload()
862 * @see #getSpacecraft()
863 * @generated
864 */
865 EReference getSpacecraft_Payload();
866
867 /**
868 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind <em>Kind</em>}'.
869 * <!-- begin-user-doc -->
870 * <!-- end-user-doc -->
871 * @return the meta object for the attribute '<em>Kind</em>'.
872 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind()
873 * @see #getSpacecraft()
874 * @generated
875 */
876 EAttribute getSpacecraft_Kind();
877
878 /**
879 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem <em>Comm Subsystem</em>}'.
880 * <!-- begin-user-doc -->
881 * <!-- end-user-doc -->
882 * @return the meta object for class '<em>Comm Subsystem</em>'.
883 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem
884 * @generated
885 */
886 EClass getCommSubsystem();
887
888 /**
889 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand <em>Band</em>}'.
890 * <!-- begin-user-doc -->
891 * <!-- end-user-doc -->
892 * @return the meta object for the attribute '<em>Band</em>'.
893 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand()
894 * @see #getCommSubsystem()
895 * @generated
896 */
897 EAttribute getCommSubsystem_Band();
898
899 /**
900 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain <em>Gain</em>}'.
901 * <!-- begin-user-doc -->
902 * <!-- end-user-doc -->
903 * @return the meta object for the attribute '<em>Gain</em>'.
904 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain()
905 * @see #getCommSubsystem()
906 * @generated
907 */
908 EAttribute getCommSubsystem_Gain();
909
910 /**
911 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
912 * <!-- begin-user-doc -->
913 * <!-- end-user-doc -->
914 * @return the meta object for class '<em>Directed Communication Link</em>'.
915 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink
916 * @generated
917 */
918 EClass getDirectedCommunicationLink();
919
920 /**
921 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource <em>Source</em>}'.
922 * <!-- begin-user-doc -->
923 * <!-- end-user-doc -->
924 * @return the meta object for the reference '<em>Source</em>'.
925 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource()
926 * @see #getDirectedCommunicationLink()
927 * @generated
928 */
929 EReference getDirectedCommunicationLink_Source();
930
931 /**
932 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget <em>Target</em>}'.
933 * <!-- begin-user-doc -->
934 * <!-- end-user-doc -->
935 * @return the meta object for the reference '<em>Target</em>'.
936 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget()
937 * @see #getDirectedCommunicationLink()
938 * @generated
939 */
940 EReference getDirectedCommunicationLink_Target();
941
942 /**
943 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Payload <em>Payload</em>}'.
944 * <!-- begin-user-doc -->
945 * <!-- end-user-doc -->
946 * @return the meta object for class '<em>Payload</em>'.
947 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Payload
948 * @generated
949 */
950 EClass getPayload();
951
952 /**
953 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
954 * <!-- begin-user-doc -->
955 * <!-- end-user-doc -->
956 * @return the meta object for class '<em>Interferometry Payload</em>'.
957 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload
958 * @generated
959 */
960 EClass getInterferometryPayload();
961
962 /**
963 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U <em>Cube Sat3 U</em>}'.
964 * <!-- begin-user-doc -->
965 * <!-- end-user-doc -->
966 * @return the meta object for class '<em>Cube Sat3 U</em>'.
967 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U
968 * @generated
969 */
970 EClass getCubeSat3U();
971
972 /**
973 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U <em>Cube Sat6 U</em>}'.
974 * <!-- begin-user-doc -->
975 * <!-- end-user-doc -->
976 * @return the meta object for class '<em>Cube Sat6 U</em>'.
977 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U
978 * @generated
979 */
980 EClass getCubeSat6U();
981
982 /**
983 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat <em>Small Sat</em>}'.
984 * <!-- begin-user-doc -->
985 * <!-- end-user-doc -->
986 * @return the meta object for class '<em>Small Sat</em>'.
987 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat
988 * @generated
989 */
990 EClass getSmallSat();
991
992 /**
993 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat <em>Cube Sat</em>}'.
994 * <!-- begin-user-doc -->
995 * <!-- end-user-doc -->
996 * @return the meta object for class '<em>Cube Sat</em>'.
997 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat
998 * @generated
999 */
1000 EClass getCubeSat();
1001
1002 /**
1003 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand <em>Transceiver Band</em>}'.
1004 * <!-- begin-user-doc -->
1005 * <!-- end-user-doc -->
1006 * @return the meta object for enum '<em>Transceiver Band</em>'.
1007 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
1008 * @generated
1009 */
1010 EEnum getTransceiverBand();
1011
1012 /**
1013 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}'.
1014 * <!-- begin-user-doc -->
1015 * <!-- end-user-doc -->
1016 * @return the meta object for enum '<em>Antenna Gain</em>'.
1017 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
1018 * @generated
1019 */
1020 EEnum getAntennaGain();
1021
1022 /**
1023 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}'.
1024 * <!-- begin-user-doc -->
1025 * <!-- end-user-doc -->
1026 * @return the meta object for enum '<em>Spacecraft Kind</em>'.
1027 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
1028 * @generated
1029 */
1030 EEnum getSpacecraftKind();
1031
1032 /**
1033 * Returns the factory that creates the instances of the model.
1034 * <!-- begin-user-doc -->
1035 * <!-- end-user-doc -->
1036 * @return the factory that creates the instances of the model.
1037 * @generated
1038 */
1039 SatelliteFactory getSatelliteFactory();
1040
1041 /**
1042 * <!-- begin-user-doc -->
1043 * Defines literals for the meta objects that represent
1044 * <ul>
1045 * <li>each class,</li>
1046 * <li>each feature of each class,</li>
1047 * <li>each operation of each class,</li>
1048 * <li>each enum,</li>
1049 * <li>and each data type</li>
1050 * </ul>
1051 * <!-- end-user-doc -->
1052 * @generated
1053 */
1054 interface Literals {
1055 /**
1056 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl <em>Constellation Mission</em>}' class.
1057 * <!-- begin-user-doc -->
1058 * <!-- end-user-doc -->
1059 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl
1060 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getConstellationMission()
1061 * @generated
1062 */
1063 EClass CONSTELLATION_MISSION = eINSTANCE.getConstellationMission();
1064
1065 /**
1066 * The meta object literal for the '<em><b>Ground Station Network</b></em>' containment reference feature.
1067 * <!-- begin-user-doc -->
1068 * <!-- end-user-doc -->
1069 * @generated
1070 */
1071 EReference CONSTELLATION_MISSION__GROUND_STATION_NETWORK = eINSTANCE
1072 .getConstellationMission_GroundStationNetwork();
1073
1074 /**
1075 * The meta object literal for the '<em><b>Spacecraft</b></em>' containment reference list feature.
1076 * <!-- begin-user-doc -->
1077 * <!-- end-user-doc -->
1078 * @generated
1079 */
1080 EReference CONSTELLATION_MISSION__SPACECRAFT = eINSTANCE.getConstellationMission_Spacecraft();
1081
1082 /**
1083 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl <em>Interferometry Mission</em>}' class.
1084 * <!-- begin-user-doc -->
1085 * <!-- end-user-doc -->
1086 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl
1087 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryMission()
1088 * @generated
1089 */
1090 EClass INTERFEROMETRY_MISSION = eINSTANCE.getInterferometryMission();
1091
1092 /**
1093 * The meta object literal for the '<em><b>Observation Time</b></em>' attribute feature.
1094 * <!-- begin-user-doc -->
1095 * <!-- end-user-doc -->
1096 * @generated
1097 */
1098 EAttribute INTERFEROMETRY_MISSION__OBSERVATION_TIME = eINSTANCE.getInterferometryMission_ObservationTime();
1099
1100 /**
1101 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl <em>Communicating Element</em>}' class.
1102 * <!-- begin-user-doc -->
1103 * <!-- end-user-doc -->
1104 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl
1105 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommunicatingElement()
1106 * @generated
1107 */
1108 EClass COMMUNICATING_ELEMENT = eINSTANCE.getCommunicatingElement();
1109
1110 /**
1111 * The meta object literal for the '<em><b>Comm Subsystem</b></em>' containment reference list feature.
1112 * <!-- begin-user-doc -->
1113 * <!-- end-user-doc -->
1114 * @generated
1115 */
1116 EReference COMMUNICATING_ELEMENT__COMM_SUBSYSTEM = eINSTANCE.getCommunicatingElement_CommSubsystem();
1117
1118 /**
1119 * The meta object literal for the '<em><b>Communication Link</b></em>' containment reference feature.
1120 * <!-- begin-user-doc -->
1121 * <!-- end-user-doc -->
1122 * @generated
1123 */
1124 EReference COMMUNICATING_ELEMENT__COMMUNICATION_LINK = eINSTANCE.getCommunicatingElement_CommunicationLink();
1125
1126 /**
1127 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl <em>Ground Station Network</em>}' class.
1128 * <!-- begin-user-doc -->
1129 * <!-- end-user-doc -->
1130 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl
1131 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getGroundStationNetwork()
1132 * @generated
1133 */
1134 EClass GROUND_STATION_NETWORK = eINSTANCE.getGroundStationNetwork();
1135
1136 /**
1137 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl <em>Spacecraft</em>}' class.
1138 * <!-- begin-user-doc -->
1139 * <!-- end-user-doc -->
1140 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl
1141 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraft()
1142 * @generated
1143 */
1144 EClass SPACECRAFT = eINSTANCE.getSpacecraft();
1145
1146 /**
1147 * The meta object literal for the '<em><b>Payload</b></em>' containment reference feature.
1148 * <!-- begin-user-doc -->
1149 * <!-- end-user-doc -->
1150 * @generated
1151 */
1152 EReference SPACECRAFT__PAYLOAD = eINSTANCE.getSpacecraft_Payload();
1153
1154 /**
1155 * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
1156 * <!-- begin-user-doc -->
1157 * <!-- end-user-doc -->
1158 * @generated
1159 */
1160 EAttribute SPACECRAFT__KIND = eINSTANCE.getSpacecraft_Kind();
1161
1162 /**
1163 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl <em>Comm Subsystem</em>}' class.
1164 * <!-- begin-user-doc -->
1165 * <!-- end-user-doc -->
1166 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl
1167 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommSubsystem()
1168 * @generated
1169 */
1170 EClass COMM_SUBSYSTEM = eINSTANCE.getCommSubsystem();
1171
1172 /**
1173 * The meta object literal for the '<em><b>Band</b></em>' attribute feature.
1174 * <!-- begin-user-doc -->
1175 * <!-- end-user-doc -->
1176 * @generated
1177 */
1178 EAttribute COMM_SUBSYSTEM__BAND = eINSTANCE.getCommSubsystem_Band();
1179
1180 /**
1181 * The meta object literal for the '<em><b>Gain</b></em>' attribute feature.
1182 * <!-- begin-user-doc -->
1183 * <!-- end-user-doc -->
1184 * @generated
1185 */
1186 EAttribute COMM_SUBSYSTEM__GAIN = eINSTANCE.getCommSubsystem_Gain();
1187
1188 /**
1189 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl <em>Directed Communication Link</em>}' class.
1190 * <!-- begin-user-doc -->
1191 * <!-- end-user-doc -->
1192 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl
1193 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getDirectedCommunicationLink()
1194 * @generated
1195 */
1196 EClass DIRECTED_COMMUNICATION_LINK = eINSTANCE.getDirectedCommunicationLink();
1197
1198 /**
1199 * The meta object literal for the '<em><b>Source</b></em>' reference feature.
1200 * <!-- begin-user-doc -->
1201 * <!-- end-user-doc -->
1202 * @generated
1203 */
1204 EReference DIRECTED_COMMUNICATION_LINK__SOURCE = eINSTANCE.getDirectedCommunicationLink_Source();
1205
1206 /**
1207 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
1208 * <!-- begin-user-doc -->
1209 * <!-- end-user-doc -->
1210 * @generated
1211 */
1212 EReference DIRECTED_COMMUNICATION_LINK__TARGET = eINSTANCE.getDirectedCommunicationLink_Target();
1213
1214 /**
1215 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl <em>Payload</em>}' class.
1216 * <!-- begin-user-doc -->
1217 * <!-- end-user-doc -->
1218 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl
1219 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getPayload()
1220 * @generated
1221 */
1222 EClass PAYLOAD = eINSTANCE.getPayload();
1223
1224 /**
1225 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl <em>Interferometry Payload</em>}' class.
1226 * <!-- begin-user-doc -->
1227 * <!-- end-user-doc -->
1228 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl
1229 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryPayload()
1230 * @generated
1231 */
1232 EClass INTERFEROMETRY_PAYLOAD = eINSTANCE.getInterferometryPayload();
1233
1234 /**
1235 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat3UImpl <em>Cube Sat3 U</em>}' class.
1236 * <!-- begin-user-doc -->
1237 * <!-- end-user-doc -->
1238 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat3UImpl
1239 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat3U()
1240 * @generated
1241 */
1242 EClass CUBE_SAT3_U = eINSTANCE.getCubeSat3U();
1243
1244 /**
1245 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat6UImpl <em>Cube Sat6 U</em>}' class.
1246 * <!-- begin-user-doc -->
1247 * <!-- end-user-doc -->
1248 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSat6UImpl
1249 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat6U()
1250 * @generated
1251 */
1252 EClass CUBE_SAT6_U = eINSTANCE.getCubeSat6U();
1253
1254 /**
1255 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SmallSatImpl <em>Small Sat</em>}' class.
1256 * <!-- begin-user-doc -->
1257 * <!-- end-user-doc -->
1258 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SmallSatImpl
1259 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSmallSat()
1260 * @generated
1261 */
1262 EClass SMALL_SAT = eINSTANCE.getSmallSat();
1263
1264 /**
1265 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSatImpl <em>Cube Sat</em>}' class.
1266 * <!-- begin-user-doc -->
1267 * <!-- end-user-doc -->
1268 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CubeSatImpl
1269 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCubeSat()
1270 * @generated
1271 */
1272 EClass CUBE_SAT = eINSTANCE.getCubeSat();
1273
1274 /**
1275 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand <em>Transceiver Band</em>}' enum.
1276 * <!-- begin-user-doc -->
1277 * <!-- end-user-doc -->
1278 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
1279 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getTransceiverBand()
1280 * @generated
1281 */
1282 EEnum TRANSCEIVER_BAND = eINSTANCE.getTransceiverBand();
1283
1284 /**
1285 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}' enum.
1286 * <!-- begin-user-doc -->
1287 * <!-- end-user-doc -->
1288 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
1289 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getAntennaGain()
1290 * @generated
1291 */
1292 EEnum ANTENNA_GAIN = eINSTANCE.getAntennaGain();
1293
1294 /**
1295 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
1296 * <!-- begin-user-doc -->
1297 * <!-- end-user-doc -->
1298 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
1299 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraftKind()
1300 * @generated
1301 */
1302 EEnum SPACECRAFT_KIND = eINSTANCE.getSpacecraftKind();
1303
1304 }
1305
1306} //SatellitePackage
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SmallSat.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SmallSat.java
new file mode 100644
index 00000000..b3a3d63c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SmallSat.java
@@ -0,0 +1,16 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Small Sat</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSmallSat()
12 * @model
13 * @generated
14 */
15public interface SmallSat extends Spacecraft {
16} // SmallSat
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Spacecraft.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Spacecraft.java
new file mode 100644
index 00000000..34f9750a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/Spacecraft.java
@@ -0,0 +1,66 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Spacecraft</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 * <p>
11 * The following features are supported:
12 * </p>
13 * <ul>
14 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload <em>Payload</em>}</li>
15 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind <em>Kind</em>}</li>
16 * </ul>
17 *
18 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSpacecraft()
19 * @model abstract="true"
20 * @generated
21 */
22public interface Spacecraft extends CommunicatingElement {
23 /**
24 * Returns the value of the '<em><b>Payload</b></em>' containment reference.
25 * <!-- begin-user-doc -->
26 * <p>
27 * If the meaning of the '<em>Payload</em>' containment reference isn't clear,
28 * there really should be more of a description here...
29 * </p>
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Payload</em>' containment reference.
32 * @see #setPayload(Payload)
33 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSpacecraft_Payload()
34 * @model containment="true"
35 * @generated
36 */
37 Payload getPayload();
38
39 /**
40 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload <em>Payload</em>}' containment reference.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Payload</em>' containment reference.
44 * @see #getPayload()
45 * @generated
46 */
47 void setPayload(Payload value);
48
49 /**
50 * Returns the value of the '<em><b>Kind</b></em>' attribute.
51 * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind}.
52 * <!-- begin-user-doc -->
53 * <p>
54 * If the meaning of the '<em>Kind</em>' attribute isn't clear,
55 * there really should be more of a description here...
56 * </p>
57 * <!-- end-user-doc -->
58 * @return the value of the '<em>Kind</em>' attribute.
59 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
60 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSpacecraft_Kind()
61 * @model required="true" transient="true" changeable="false" volatile="true" derived="true"
62 * @generated
63 */
64 SpacecraftKind getKind();
65
66} // Spacecraft
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SpacecraftKind.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SpacecraftKind.java
new file mode 100644
index 00000000..b0b6aede
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SpacecraftKind.java
@@ -0,0 +1,241 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Spacecraft Kind</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSpacecraftKind()
17 * @model
18 * @generated
19 */
20public enum SpacecraftKind implements Enumerator {
21 /**
22 * The '<em><b>Cube Sat3 U</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #CUBE_SAT3_U_VALUE
26 * @generated
27 * @ordered
28 */
29 CUBE_SAT3_U(0, "CubeSat3U", "CubeSat3U"),
30
31 /**
32 * The '<em><b>Cube Sat6 U</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #CUBE_SAT6_U_VALUE
36 * @generated
37 * @ordered
38 */
39 CUBE_SAT6_U(1, "CubeSat6U", "CubeSat6U"),
40 /**
41 * The '<em><b>Small Sat</b></em>' literal object.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #SMALL_SAT_VALUE
45 * @generated
46 * @ordered
47 */
48 SMALL_SAT(2, "SmallSat", "SmallSat");
49
50 /**
51 * The '<em><b>Cube Sat3 U</b></em>' literal value.
52 * <!-- begin-user-doc -->
53 * <p>
54 * If the meaning of '<em><b>Cube Sat3 U</b></em>' literal object isn't clear,
55 * there really should be more of a description here...
56 * </p>
57 * <!-- end-user-doc -->
58 * @see #CUBE_SAT3_U
59 * @model name="CubeSat3U"
60 * @generated
61 * @ordered
62 */
63 public static final int CUBE_SAT3_U_VALUE = 0;
64
65 /**
66 * The '<em><b>Cube Sat6 U</b></em>' literal value.
67 * <!-- begin-user-doc -->
68 * <p>
69 * If the meaning of '<em><b>Cube Sat6 U</b></em>' literal object isn't clear,
70 * there really should be more of a description here...
71 * </p>
72 * <!-- end-user-doc -->
73 * @see #CUBE_SAT6_U
74 * @model name="CubeSat6U"
75 * @generated
76 * @ordered
77 */
78 public static final int CUBE_SAT6_U_VALUE = 1;
79
80 /**
81 * The '<em><b>Small Sat</b></em>' literal value.
82 * <!-- begin-user-doc -->
83 * <p>
84 * If the meaning of '<em><b>Small Sat</b></em>' literal object isn't clear,
85 * there really should be more of a description here...
86 * </p>
87 * <!-- end-user-doc -->
88 * @see #SMALL_SAT
89 * @model name="SmallSat"
90 * @generated
91 * @ordered
92 */
93 public static final int SMALL_SAT_VALUE = 2;
94
95 /**
96 * An array of all the '<em><b>Spacecraft Kind</b></em>' enumerators.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @generated
100 */
101 private static final SpacecraftKind[] VALUES_ARRAY = new SpacecraftKind[] { CUBE_SAT3_U, CUBE_SAT6_U, SMALL_SAT, };
102
103 /**
104 * A public read-only list of all the '<em><b>Spacecraft Kind</b></em>' enumerators.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public static final List<SpacecraftKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
110
111 /**
112 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified literal value.
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @param literal the literal.
116 * @return the matching enumerator or <code>null</code>.
117 * @generated
118 */
119 public static SpacecraftKind get(String literal) {
120 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
121 SpacecraftKind result = VALUES_ARRAY[i];
122 if (result.toString().equals(literal)) {
123 return result;
124 }
125 }
126 return null;
127 }
128
129 /**
130 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified name.
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @param name the name.
134 * @return the matching enumerator or <code>null</code>.
135 * @generated
136 */
137 public static SpacecraftKind getByName(String name) {
138 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
139 SpacecraftKind result = VALUES_ARRAY[i];
140 if (result.getName().equals(name)) {
141 return result;
142 }
143 }
144 return null;
145 }
146
147 /**
148 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified integer value.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @param value the integer value.
152 * @return the matching enumerator or <code>null</code>.
153 * @generated
154 */
155 public static SpacecraftKind get(int value) {
156 switch (value) {
157 case CUBE_SAT3_U_VALUE:
158 return CUBE_SAT3_U;
159 case CUBE_SAT6_U_VALUE:
160 return CUBE_SAT6_U;
161 case SMALL_SAT_VALUE:
162 return SMALL_SAT;
163 }
164 return null;
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 private final int value;
173
174 /**
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @generated
178 */
179 private final String name;
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 private final String literal;
187
188 /**
189 * Only this class can construct instances.
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 private SpacecraftKind(int value, String name, String literal) {
195 this.value = value;
196 this.name = name;
197 this.literal = literal;
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 @Override
206 public int getValue() {
207 return value;
208 }
209
210 /**
211 * <!-- begin-user-doc -->
212 * <!-- end-user-doc -->
213 * @generated
214 */
215 @Override
216 public String getName() {
217 return name;
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 @Override
226 public String getLiteral() {
227 return literal;
228 }
229
230 /**
231 * Returns the literal value of the enumerator, which is its string representation.
232 * <!-- begin-user-doc -->
233 * <!-- end-user-doc -->
234 * @generated
235 */
236 @Override
237 public String toString() {
238 return literal;
239 }
240
241} //SpacecraftKind
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/TransceiverBand.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/TransceiverBand.java
new file mode 100644
index 00000000..62aae5f7
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/TransceiverBand.java
@@ -0,0 +1,242 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Transceiver Band</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getTransceiverBand()
17 * @model
18 * @generated
19 */
20public enum TransceiverBand implements Enumerator {
21 /**
22 * The '<em><b>UHF</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #UHF_VALUE
26 * @generated
27 * @ordered
28 */
29 UHF(0, "UHF", "UHF"),
30
31 /**
32 * The '<em><b>X</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #X_VALUE
36 * @generated
37 * @ordered
38 */
39 X(1, "X", "X"),
40
41 /**
42 * The '<em><b>Ka</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #KA_VALUE
46 * @generated
47 * @ordered
48 */
49 KA(2, "Ka", "Ka");
50
51 /**
52 * The '<em><b>UHF</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>UHF</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #UHF
60 * @model
61 * @generated
62 * @ordered
63 */
64 public static final int UHF_VALUE = 0;
65
66 /**
67 * The '<em><b>X</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>X</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #X
75 * @model
76 * @generated
77 * @ordered
78 */
79 public static final int X_VALUE = 1;
80
81 /**
82 * The '<em><b>Ka</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>Ka</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #KA
90 * @model name="Ka"
91 * @generated
92 * @ordered
93 */
94 public static final int KA_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Transceiver Band</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final TransceiverBand[] VALUES_ARRAY = new TransceiverBand[] { UHF, X, KA, };
103
104 /**
105 * A public read-only list of all the '<em><b>Transceiver Band</b></em>' enumerators.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public static final List<TransceiverBand> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
111
112 /**
113 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @param literal the literal.
117 * @return the matching enumerator or <code>null</code>.
118 * @generated
119 */
120 public static TransceiverBand get(String literal) {
121 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
122 TransceiverBand result = VALUES_ARRAY[i];
123 if (result.toString().equals(literal)) {
124 return result;
125 }
126 }
127 return null;
128 }
129
130 /**
131 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified name.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param name the name.
135 * @return the matching enumerator or <code>null</code>.
136 * @generated
137 */
138 public static TransceiverBand getByName(String name) {
139 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
140 TransceiverBand result = VALUES_ARRAY[i];
141 if (result.getName().equals(name)) {
142 return result;
143 }
144 }
145 return null;
146 }
147
148 /**
149 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified integer value.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @param value the integer value.
153 * @return the matching enumerator or <code>null</code>.
154 * @generated
155 */
156 public static TransceiverBand get(int value) {
157 switch (value) {
158 case UHF_VALUE:
159 return UHF;
160 case X_VALUE:
161 return X;
162 case KA_VALUE:
163 return KA;
164 }
165 return null;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private final int value;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private final String name;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private final String literal;
188
189 /**
190 * Only this class can construct instances.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private TransceiverBand(int value, String name, String literal) {
196 this.value = value;
197 this.name = name;
198 this.literal = literal;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public int getValue() {
208 return value;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public String getLiteral() {
228 return literal;
229 }
230
231 /**
232 * Returns the literal value of the enumerator, which is its string representation.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public String toString() {
239 return literal;
240 }
241
242} //TransceiverBand
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommSubsystemImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommSubsystemImpl.java
new file mode 100644
index 00000000..fbde1603
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommSubsystemImpl.java
@@ -0,0 +1,226 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand;
9
10import org.eclipse.emf.common.notify.Notification;
11
12import org.eclipse.emf.ecore.EClass;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Comm Subsystem</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl#getBand <em>Band</em>}</li>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl#getGain <em>Gain</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class CommSubsystemImpl extends MinimalEObjectImpl.Container implements CommSubsystem {
32 /**
33 * The default value of the '{@link #getBand() <em>Band</em>}' attribute.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getBand()
37 * @generated
38 * @ordered
39 */
40 protected static final TransceiverBand BAND_EDEFAULT = TransceiverBand.UHF;
41
42 /**
43 * The cached value of the '{@link #getBand() <em>Band</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getBand()
47 * @generated
48 * @ordered
49 */
50 protected TransceiverBand band = BAND_EDEFAULT;
51
52 /**
53 * The default value of the '{@link #getGain() <em>Gain</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #getGain()
57 * @generated
58 * @ordered
59 */
60 protected static final AntennaGain GAIN_EDEFAULT = AntennaGain.LOW;
61
62 /**
63 * The cached value of the '{@link #getGain() <em>Gain</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #getGain()
67 * @generated
68 * @ordered
69 */
70 protected AntennaGain gain = GAIN_EDEFAULT;
71
72 /**
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 */
77 protected CommSubsystemImpl() {
78 super();
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 @Override
87 protected EClass eStaticClass() {
88 return SatellitePackage.Literals.COMM_SUBSYSTEM;
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public TransceiverBand getBand() {
98 return band;
99 }
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 @Override
107 public void setBand(TransceiverBand newBand) {
108 TransceiverBand oldBand = band;
109 band = newBand == null ? BAND_EDEFAULT : newBand;
110 if (eNotificationRequired())
111 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.COMM_SUBSYSTEM__BAND, oldBand,
112 band));
113 }
114
115 /**
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 */
120 @Override
121 public AntennaGain getGain() {
122 return gain;
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 @Override
131 public void setGain(AntennaGain newGain) {
132 AntennaGain oldGain = gain;
133 gain = newGain == null ? GAIN_EDEFAULT : newGain;
134 if (eNotificationRequired())
135 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.COMM_SUBSYSTEM__GAIN, oldGain,
136 gain));
137 }
138
139 /**
140 * <!-- begin-user-doc -->
141 * <!-- end-user-doc -->
142 * @generated
143 */
144 @Override
145 public Object eGet(int featureID, boolean resolve, boolean coreType) {
146 switch (featureID) {
147 case SatellitePackage.COMM_SUBSYSTEM__BAND:
148 return getBand();
149 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
150 return getGain();
151 }
152 return super.eGet(featureID, resolve, coreType);
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public void eSet(int featureID, Object newValue) {
162 switch (featureID) {
163 case SatellitePackage.COMM_SUBSYSTEM__BAND:
164 setBand((TransceiverBand) newValue);
165 return;
166 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
167 setGain((AntennaGain) newValue);
168 return;
169 }
170 super.eSet(featureID, newValue);
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 @Override
179 public void eUnset(int featureID) {
180 switch (featureID) {
181 case SatellitePackage.COMM_SUBSYSTEM__BAND:
182 setBand(BAND_EDEFAULT);
183 return;
184 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
185 setGain(GAIN_EDEFAULT);
186 return;
187 }
188 super.eUnset(featureID);
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public boolean eIsSet(int featureID) {
198 switch (featureID) {
199 case SatellitePackage.COMM_SUBSYSTEM__BAND:
200 return band != BAND_EDEFAULT;
201 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
202 return gain != GAIN_EDEFAULT;
203 }
204 return super.eIsSet(featureID);
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 @Override
213 public String toString() {
214 if (eIsProxy())
215 return super.toString();
216
217 StringBuilder result = new StringBuilder(super.toString());
218 result.append(" (band: ");
219 result.append(band);
220 result.append(", gain: ");
221 result.append(gain);
222 result.append(')');
223 return result.toString();
224 }
225
226} //CommSubsystemImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommunicatingElementImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommunicatingElementImpl.java
new file mode 100644
index 00000000..4b51e52e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CommunicatingElementImpl.java
@@ -0,0 +1,237 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentEList;
24import org.eclipse.emf.ecore.util.InternalEList;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Communicating Element</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl#getCommSubsystem <em>Comm Subsystem</em>}</li>
35 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl#getCommunicationLink <em>Communication Link</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public abstract class CommunicatingElementImpl extends MinimalEObjectImpl.Container implements CommunicatingElement {
41 /**
42 * The cached value of the '{@link #getCommSubsystem() <em>Comm Subsystem</em>}' containment reference list.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getCommSubsystem()
46 * @generated
47 * @ordered
48 */
49 protected EList<CommSubsystem> commSubsystem;
50
51 /**
52 * The cached value of the '{@link #getCommunicationLink() <em>Communication Link</em>}' containment reference.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getCommunicationLink()
56 * @generated
57 * @ordered
58 */
59 protected DirectedCommunicationLink communicationLink;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected CommunicatingElementImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return SatellitePackage.Literals.COMMUNICATING_ELEMENT;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 @Override
86 public EList<CommSubsystem> getCommSubsystem() {
87 if (commSubsystem == null) {
88 commSubsystem = new EObjectContainmentEList<CommSubsystem>(CommSubsystem.class, this,
89 SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM);
90 }
91 return commSubsystem;
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public DirectedCommunicationLink getCommunicationLink() {
101 return communicationLink;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public NotificationChain basicSetCommunicationLink(DirectedCommunicationLink newCommunicationLink,
110 NotificationChain msgs) {
111 DirectedCommunicationLink oldCommunicationLink = communicationLink;
112 communicationLink = newCommunicationLink;
113 if (eNotificationRequired()) {
114 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
115 SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, oldCommunicationLink,
116 newCommunicationLink);
117 if (msgs == null)
118 msgs = notification;
119 else
120 msgs.add(notification);
121 }
122 return msgs;
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 @Override
131 public void setCommunicationLink(DirectedCommunicationLink newCommunicationLink) {
132 if (newCommunicationLink != communicationLink) {
133 NotificationChain msgs = null;
134 if (communicationLink != null)
135 msgs = ((InternalEObject) communicationLink).eInverseRemove(this,
136 EOPPOSITE_FEATURE_BASE - SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, null,
137 msgs);
138 if (newCommunicationLink != null)
139 msgs = ((InternalEObject) newCommunicationLink).eInverseAdd(this,
140 EOPPOSITE_FEATURE_BASE - SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, null,
141 msgs);
142 msgs = basicSetCommunicationLink(newCommunicationLink, msgs);
143 if (msgs != null)
144 msgs.dispatch();
145 } else if (eNotificationRequired())
146 eNotify(new ENotificationImpl(this, Notification.SET,
147 SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, newCommunicationLink,
148 newCommunicationLink));
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
158 switch (featureID) {
159 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
160 return ((InternalEList<?>) getCommSubsystem()).basicRemove(otherEnd, msgs);
161 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
162 return basicSetCommunicationLink(null, msgs);
163 }
164 return super.eInverseRemove(otherEnd, featureID, msgs);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public Object eGet(int featureID, boolean resolve, boolean coreType) {
174 switch (featureID) {
175 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
176 return getCommSubsystem();
177 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
178 return getCommunicationLink();
179 }
180 return super.eGet(featureID, resolve, coreType);
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @SuppressWarnings("unchecked")
189 @Override
190 public void eSet(int featureID, Object newValue) {
191 switch (featureID) {
192 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
193 getCommSubsystem().clear();
194 getCommSubsystem().addAll((Collection<? extends CommSubsystem>) newValue);
195 return;
196 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
197 setCommunicationLink((DirectedCommunicationLink) newValue);
198 return;
199 }
200 super.eSet(featureID, newValue);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public void eUnset(int featureID) {
210 switch (featureID) {
211 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
212 getCommSubsystem().clear();
213 return;
214 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
215 setCommunicationLink((DirectedCommunicationLink) null);
216 return;
217 }
218 super.eUnset(featureID);
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public boolean eIsSet(int featureID) {
228 switch (featureID) {
229 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
230 return commSubsystem != null && !commSubsystem.isEmpty();
231 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
232 return communicationLink != null;
233 }
234 return super.eIsSet(featureID);
235 }
236
237} //CommunicatingElementImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/ConstellationMissionImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/ConstellationMissionImpl.java
new file mode 100644
index 00000000..710b5982
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/ConstellationMissionImpl.java
@@ -0,0 +1,237 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentEList;
24import org.eclipse.emf.ecore.util.InternalEList;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Constellation Mission</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl#getGroundStationNetwork <em>Ground Station Network</em>}</li>
35 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl#getSpacecraft <em>Spacecraft</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public abstract class ConstellationMissionImpl extends MinimalEObjectImpl.Container implements ConstellationMission {
41 /**
42 * The cached value of the '{@link #getGroundStationNetwork() <em>Ground Station Network</em>}' containment reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getGroundStationNetwork()
46 * @generated
47 * @ordered
48 */
49 protected GroundStationNetwork groundStationNetwork;
50
51 /**
52 * The cached value of the '{@link #getSpacecraft() <em>Spacecraft</em>}' containment reference list.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getSpacecraft()
56 * @generated
57 * @ordered
58 */
59 protected EList<Spacecraft> spacecraft;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected ConstellationMissionImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return SatellitePackage.Literals.CONSTELLATION_MISSION;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 @Override
86 public GroundStationNetwork getGroundStationNetwork() {
87 return groundStationNetwork;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public NotificationChain basicSetGroundStationNetwork(GroundStationNetwork newGroundStationNetwork,
96 NotificationChain msgs) {
97 GroundStationNetwork oldGroundStationNetwork = groundStationNetwork;
98 groundStationNetwork = newGroundStationNetwork;
99 if (eNotificationRequired()) {
100 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
101 SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, oldGroundStationNetwork,
102 newGroundStationNetwork);
103 if (msgs == null)
104 msgs = notification;
105 else
106 msgs.add(notification);
107 }
108 return msgs;
109 }
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 @Override
117 public void setGroundStationNetwork(GroundStationNetwork newGroundStationNetwork) {
118 if (newGroundStationNetwork != groundStationNetwork) {
119 NotificationChain msgs = null;
120 if (groundStationNetwork != null)
121 msgs = ((InternalEObject) groundStationNetwork).eInverseRemove(this,
122 EOPPOSITE_FEATURE_BASE - SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, null,
123 msgs);
124 if (newGroundStationNetwork != null)
125 msgs = ((InternalEObject) newGroundStationNetwork).eInverseAdd(this,
126 EOPPOSITE_FEATURE_BASE - SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, null,
127 msgs);
128 msgs = basicSetGroundStationNetwork(newGroundStationNetwork, msgs);
129 if (msgs != null)
130 msgs.dispatch();
131 } else if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET,
133 SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, newGroundStationNetwork,
134 newGroundStationNetwork));
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 @Override
143 public EList<Spacecraft> getSpacecraft() {
144 if (spacecraft == null) {
145 spacecraft = new EObjectContainmentEList<Spacecraft>(Spacecraft.class, this,
146 SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT);
147 }
148 return spacecraft;
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
158 switch (featureID) {
159 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
160 return basicSetGroundStationNetwork(null, msgs);
161 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
162 return ((InternalEList<?>) getSpacecraft()).basicRemove(otherEnd, msgs);
163 }
164 return super.eInverseRemove(otherEnd, featureID, msgs);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public Object eGet(int featureID, boolean resolve, boolean coreType) {
174 switch (featureID) {
175 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
176 return getGroundStationNetwork();
177 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
178 return getSpacecraft();
179 }
180 return super.eGet(featureID, resolve, coreType);
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @SuppressWarnings("unchecked")
189 @Override
190 public void eSet(int featureID, Object newValue) {
191 switch (featureID) {
192 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
193 setGroundStationNetwork((GroundStationNetwork) newValue);
194 return;
195 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
196 getSpacecraft().clear();
197 getSpacecraft().addAll((Collection<? extends Spacecraft>) newValue);
198 return;
199 }
200 super.eSet(featureID, newValue);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public void eUnset(int featureID) {
210 switch (featureID) {
211 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
212 setGroundStationNetwork((GroundStationNetwork) null);
213 return;
214 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
215 getSpacecraft().clear();
216 return;
217 }
218 super.eUnset(featureID);
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public boolean eIsSet(int featureID) {
228 switch (featureID) {
229 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
230 return groundStationNetwork != null;
231 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
232 return spacecraft != null && !spacecraft.isEmpty();
233 }
234 return super.eIsSet(featureID);
235 }
236
237} //ConstellationMissionImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat3UImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat3UImpl.java
new file mode 100644
index 00000000..3e0d6f2c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat3UImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Cube Sat3 U</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CubeSat3UImpl extends CubeSatImpl implements CubeSat3U {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CubeSat3UImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.CUBE_SAT3_U;
35 }
36
37} //CubeSat3UImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat6UImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat6UImpl.java
new file mode 100644
index 00000000..7ad2bc87
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSat6UImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Cube Sat6 U</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CubeSat6UImpl extends CubeSatImpl implements CubeSat6U {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CubeSat6UImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.CUBE_SAT6_U;
35 }
36
37} //CubeSat6UImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSatImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSatImpl.java
new file mode 100644
index 00000000..b8e364a3
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/CubeSatImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Cube Sat</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public abstract class CubeSatImpl extends SpacecraftImpl implements CubeSat {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CubeSatImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.CUBE_SAT;
35 }
36
37} //CubeSatImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/DirectedCommunicationLinkImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/DirectedCommunicationLinkImpl.java
new file mode 100644
index 00000000..b0338e2d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/DirectedCommunicationLinkImpl.java
@@ -0,0 +1,227 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Directed Communication Link</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl#getSource <em>Source</em>}</li>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl#getTarget <em>Target</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class DirectedCommunicationLinkImpl extends MinimalEObjectImpl.Container implements DirectedCommunicationLink {
32 /**
33 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getSource()
37 * @generated
38 * @ordered
39 */
40 protected CommSubsystem source;
41
42 /**
43 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getTarget()
47 * @generated
48 * @ordered
49 */
50 protected CommSubsystem target;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 protected DirectedCommunicationLinkImpl() {
58 super();
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 @Override
67 protected EClass eStaticClass() {
68 return SatellitePackage.Literals.DIRECTED_COMMUNICATION_LINK;
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 @Override
77 public CommSubsystem getSource() {
78 if (source != null && source.eIsProxy()) {
79 InternalEObject oldSource = (InternalEObject) source;
80 source = (CommSubsystem) eResolveProxy(oldSource);
81 if (source != oldSource) {
82 if (eNotificationRequired())
83 eNotify(new ENotificationImpl(this, Notification.RESOLVE,
84 SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE, oldSource, source));
85 }
86 }
87 return source;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public CommSubsystem basicGetSource() {
96 return source;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setSource(CommSubsystem newSource) {
106 CommSubsystem oldSource = source;
107 source = newSource;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE,
110 oldSource, source));
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public CommSubsystem getTarget() {
120 if (target != null && target.eIsProxy()) {
121 InternalEObject oldTarget = (InternalEObject) target;
122 target = (CommSubsystem) eResolveProxy(oldTarget);
123 if (target != oldTarget) {
124 if (eNotificationRequired())
125 eNotify(new ENotificationImpl(this, Notification.RESOLVE,
126 SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET, oldTarget, target));
127 }
128 }
129 return target;
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 public CommSubsystem basicGetTarget() {
138 return target;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public void setTarget(CommSubsystem newTarget) {
148 CommSubsystem oldTarget = target;
149 target = newTarget;
150 if (eNotificationRequired())
151 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET,
152 oldTarget, target));
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public Object eGet(int featureID, boolean resolve, boolean coreType) {
162 switch (featureID) {
163 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
164 if (resolve)
165 return getSource();
166 return basicGetSource();
167 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
168 if (resolve)
169 return getTarget();
170 return basicGetTarget();
171 }
172 return super.eGet(featureID, resolve, coreType);
173 }
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 @Override
181 public void eSet(int featureID, Object newValue) {
182 switch (featureID) {
183 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
184 setSource((CommSubsystem) newValue);
185 return;
186 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
187 setTarget((CommSubsystem) newValue);
188 return;
189 }
190 super.eSet(featureID, newValue);
191 }
192
193 /**
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @generated
197 */
198 @Override
199 public void eUnset(int featureID) {
200 switch (featureID) {
201 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
202 setSource((CommSubsystem) null);
203 return;
204 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
205 setTarget((CommSubsystem) null);
206 return;
207 }
208 super.eUnset(featureID);
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public boolean eIsSet(int featureID) {
218 switch (featureID) {
219 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
220 return source != null;
221 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
222 return target != null;
223 }
224 return super.eIsSet(featureID);
225 }
226
227} //DirectedCommunicationLinkImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/GroundStationNetworkImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/GroundStationNetworkImpl.java
new file mode 100644
index 00000000..890e807c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/GroundStationNetworkImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Ground Station Network</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class GroundStationNetworkImpl extends CommunicatingElementImpl implements GroundStationNetwork {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected GroundStationNetworkImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.GROUND_STATION_NETWORK;
35 }
36
37} //GroundStationNetworkImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryMissionImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryMissionImpl.java
new file mode 100644
index 00000000..b2687ea3
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryMissionImpl.java
@@ -0,0 +1,166 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Interferometry Mission</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl#getObservationTime <em>Observation Time</em>}</li>
23 * </ul>
24 *
25 * @generated
26 */
27public class InterferometryMissionImpl extends ConstellationMissionImpl implements InterferometryMission {
28 /**
29 * The default value of the '{@link #getObservationTime() <em>Observation Time</em>}' attribute.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @see #getObservationTime()
33 * @generated
34 * @ordered
35 */
36 protected static final float OBSERVATION_TIME_EDEFAULT = 2.0F;
37
38 /**
39 * The cached value of the '{@link #getObservationTime() <em>Observation Time</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #getObservationTime()
43 * @generated
44 * @ordered
45 */
46 protected float observationTime = OBSERVATION_TIME_EDEFAULT;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 protected InterferometryMissionImpl() {
54 super();
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 @Override
63 protected EClass eStaticClass() {
64 return SatellitePackage.Literals.INTERFEROMETRY_MISSION;
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 public float getObservationTime() {
74 return observationTime;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public void setObservationTime(float newObservationTime) {
84 float oldObservationTime = observationTime;
85 observationTime = newObservationTime;
86 if (eNotificationRequired())
87 eNotify(new ENotificationImpl(this, Notification.SET,
88 SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME, oldObservationTime, observationTime));
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
100 return getObservationTime();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
114 setObservationTime((Float) newValue);
115 return;
116 }
117 super.eSet(featureID, newValue);
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 public void eUnset(int featureID) {
127 switch (featureID) {
128 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
129 setObservationTime(OBSERVATION_TIME_EDEFAULT);
130 return;
131 }
132 super.eUnset(featureID);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public boolean eIsSet(int featureID) {
142 switch (featureID) {
143 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
144 return observationTime != OBSERVATION_TIME_EDEFAULT;
145 }
146 return super.eIsSet(featureID);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public String toString() {
156 if (eIsProxy())
157 return super.toString();
158
159 StringBuilder result = new StringBuilder(super.toString());
160 result.append(" (observationTime: ");
161 result.append(observationTime);
162 result.append(')');
163 return result.toString();
164 }
165
166} //InterferometryMissionImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryPayloadImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryPayloadImpl.java
new file mode 100644
index 00000000..5657c268
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/InterferometryPayloadImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Interferometry Payload</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class InterferometryPayloadImpl extends PayloadImpl implements InterferometryPayload {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected InterferometryPayloadImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.INTERFEROMETRY_PAYLOAD;
35 }
36
37} //InterferometryPayloadImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/PayloadImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/PayloadImpl.java
new file mode 100644
index 00000000..78625d22
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/PayloadImpl.java
@@ -0,0 +1,39 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.Payload;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
11
12/**
13 * <!-- begin-user-doc -->
14 * An implementation of the model object '<em><b>Payload</b></em>'.
15 * <!-- end-user-doc -->
16 *
17 * @generated
18 */
19public abstract class PayloadImpl extends MinimalEObjectImpl.Container implements Payload {
20 /**
21 * <!-- begin-user-doc -->
22 * <!-- end-user-doc -->
23 * @generated
24 */
25 protected PayloadImpl() {
26 super();
27 }
28
29 /**
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 @Override
35 protected EClass eStaticClass() {
36 return SatellitePackage.Literals.PAYLOAD;
37 }
38
39} //PayloadImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatelliteFactoryImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatelliteFactoryImpl.java
new file mode 100644
index 00000000..028ba662
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatelliteFactoryImpl.java
@@ -0,0 +1,294 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.*;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.EDataType;
9import org.eclipse.emf.ecore.EObject;
10import org.eclipse.emf.ecore.EPackage;
11
12import org.eclipse.emf.ecore.impl.EFactoryImpl;
13
14import org.eclipse.emf.ecore.plugin.EcorePlugin;
15
16/**
17 * <!-- begin-user-doc -->
18 * An implementation of the model <b>Factory</b>.
19 * <!-- end-user-doc -->
20 * @generated
21 */
22public class SatelliteFactoryImpl extends EFactoryImpl implements SatelliteFactory {
23 /**
24 * Creates the default factory implementation.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 public static SatelliteFactory init() {
30 try {
31 SatelliteFactory theSatelliteFactory = (SatelliteFactory) EPackage.Registry.INSTANCE
32 .getEFactory(SatellitePackage.eNS_URI);
33 if (theSatelliteFactory != null) {
34 return theSatelliteFactory;
35 }
36 } catch (Exception exception) {
37 EcorePlugin.INSTANCE.log(exception);
38 }
39 return new SatelliteFactoryImpl();
40 }
41
42 /**
43 * Creates an instance of the factory.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 public SatelliteFactoryImpl() {
49 super();
50 }
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 @Override
58 public EObject create(EClass eClass) {
59 switch (eClass.getClassifierID()) {
60 case SatellitePackage.INTERFEROMETRY_MISSION:
61 return createInterferometryMission();
62 case SatellitePackage.GROUND_STATION_NETWORK:
63 return createGroundStationNetwork();
64 case SatellitePackage.COMM_SUBSYSTEM:
65 return createCommSubsystem();
66 case SatellitePackage.DIRECTED_COMMUNICATION_LINK:
67 return createDirectedCommunicationLink();
68 case SatellitePackage.INTERFEROMETRY_PAYLOAD:
69 return createInterferometryPayload();
70 case SatellitePackage.CUBE_SAT3_U:
71 return createCubeSat3U();
72 case SatellitePackage.CUBE_SAT6_U:
73 return createCubeSat6U();
74 case SatellitePackage.SMALL_SAT:
75 return createSmallSat();
76 default:
77 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
78 }
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 @Override
87 public Object createFromString(EDataType eDataType, String initialValue) {
88 switch (eDataType.getClassifierID()) {
89 case SatellitePackage.TRANSCEIVER_BAND:
90 return createTransceiverBandFromString(eDataType, initialValue);
91 case SatellitePackage.ANTENNA_GAIN:
92 return createAntennaGainFromString(eDataType, initialValue);
93 case SatellitePackage.SPACECRAFT_KIND:
94 return createSpacecraftKindFromString(eDataType, initialValue);
95 default:
96 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
97 }
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @generated
104 */
105 @Override
106 public String convertToString(EDataType eDataType, Object instanceValue) {
107 switch (eDataType.getClassifierID()) {
108 case SatellitePackage.TRANSCEIVER_BAND:
109 return convertTransceiverBandToString(eDataType, instanceValue);
110 case SatellitePackage.ANTENNA_GAIN:
111 return convertAntennaGainToString(eDataType, instanceValue);
112 case SatellitePackage.SPACECRAFT_KIND:
113 return convertSpacecraftKindToString(eDataType, instanceValue);
114 default:
115 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
116 }
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public InterferometryMission createInterferometryMission() {
126 InterferometryMissionImpl interferometryMission = new InterferometryMissionImpl();
127 return interferometryMission;
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 @Override
136 public GroundStationNetwork createGroundStationNetwork() {
137 GroundStationNetworkImpl groundStationNetwork = new GroundStationNetworkImpl();
138 return groundStationNetwork;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public CommSubsystem createCommSubsystem() {
148 CommSubsystemImpl commSubsystem = new CommSubsystemImpl();
149 return commSubsystem;
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public DirectedCommunicationLink createDirectedCommunicationLink() {
159 DirectedCommunicationLinkImpl directedCommunicationLink = new DirectedCommunicationLinkImpl();
160 return directedCommunicationLink;
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 @Override
169 public InterferometryPayload createInterferometryPayload() {
170 InterferometryPayloadImpl interferometryPayload = new InterferometryPayloadImpl();
171 return interferometryPayload;
172 }
173
174 /**
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @generated
178 */
179 @Override
180 public CubeSat3U createCubeSat3U() {
181 CubeSat3UImpl cubeSat3U = new CubeSat3UImpl();
182 return cubeSat3U;
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public CubeSat6U createCubeSat6U() {
192 CubeSat6UImpl cubeSat6U = new CubeSat6UImpl();
193 return cubeSat6U;
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public SmallSat createSmallSat() {
203 SmallSatImpl smallSat = new SmallSatImpl();
204 return smallSat;
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 public TransceiverBand createTransceiverBandFromString(EDataType eDataType, String initialValue) {
213 TransceiverBand result = TransceiverBand.get(initialValue);
214 if (result == null)
215 throw new IllegalArgumentException(
216 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
217 return result;
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 public String convertTransceiverBandToString(EDataType eDataType, Object instanceValue) {
226 return instanceValue == null ? null : instanceValue.toString();
227 }
228
229 /**
230 * <!-- begin-user-doc -->
231 * <!-- end-user-doc -->
232 * @generated
233 */
234 public AntennaGain createAntennaGainFromString(EDataType eDataType, String initialValue) {
235 AntennaGain result = AntennaGain.get(initialValue);
236 if (result == null)
237 throw new IllegalArgumentException(
238 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
239 return result;
240 }
241
242 /**
243 * <!-- begin-user-doc -->
244 * <!-- end-user-doc -->
245 * @generated
246 */
247 public String convertAntennaGainToString(EDataType eDataType, Object instanceValue) {
248 return instanceValue == null ? null : instanceValue.toString();
249 }
250
251 /**
252 * <!-- begin-user-doc -->
253 * <!-- end-user-doc -->
254 * @generated
255 */
256 public SpacecraftKind createSpacecraftKindFromString(EDataType eDataType, String initialValue) {
257 SpacecraftKind result = SpacecraftKind.get(initialValue);
258 if (result == null)
259 throw new IllegalArgumentException(
260 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
261 return result;
262 }
263
264 /**
265 * <!-- begin-user-doc -->
266 * <!-- end-user-doc -->
267 * @generated
268 */
269 public String convertSpacecraftKindToString(EDataType eDataType, Object instanceValue) {
270 return instanceValue == null ? null : instanceValue.toString();
271 }
272
273 /**
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 */
278 @Override
279 public SatellitePackage getSatellitePackage() {
280 return (SatellitePackage) getEPackage();
281 }
282
283 /**
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @deprecated
287 * @generated
288 */
289 @Deprecated
290 public static SatellitePackage getPackage() {
291 return SatellitePackage.eINSTANCE;
292 }
293
294} //SatelliteFactoryImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatellitePackageImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatellitePackageImpl.java
new file mode 100644
index 00000000..bbe77e4d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatellitePackageImpl.java
@@ -0,0 +1,684 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.Payload;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.SatelliteFactory;
18import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
19import hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat;
20import hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft;
21import hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind;
22import hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand;
23
24import org.eclipse.emf.ecore.EAttribute;
25import org.eclipse.emf.ecore.EClass;
26import org.eclipse.emf.ecore.EEnum;
27import org.eclipse.emf.ecore.EPackage;
28import org.eclipse.emf.ecore.EReference;
29
30import org.eclipse.emf.ecore.impl.EPackageImpl;
31
32/**
33 * <!-- begin-user-doc -->
34 * An implementation of the model <b>Package</b>.
35 * <!-- end-user-doc -->
36 * @generated
37 */
38public class SatellitePackageImpl extends EPackageImpl implements SatellitePackage {
39 /**
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @generated
43 */
44 private EClass constellationMissionEClass = null;
45
46 /**
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 private EClass interferometryMissionEClass = null;
52
53 /**
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 private EClass communicatingElementEClass = null;
59
60 /**
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @generated
64 */
65 private EClass groundStationNetworkEClass = null;
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 private EClass spacecraftEClass = null;
73
74 /**
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @generated
78 */
79 private EClass commSubsystemEClass = null;
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 private EClass directedCommunicationLinkEClass = null;
87
88 /**
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 */
93 private EClass payloadEClass = null;
94
95 /**
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @generated
99 */
100 private EClass interferometryPayloadEClass = null;
101
102 /**
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @generated
106 */
107 private EClass cubeSat3UEClass = null;
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @generated
113 */
114 private EClass cubeSat6UEClass = null;
115
116 /**
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @generated
120 */
121 private EClass smallSatEClass = null;
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 private EClass cubeSatEClass = null;
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 private EEnum transceiverBandEEnum = null;
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 private EEnum antennaGainEEnum = null;
143
144 /**
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 */
149 private EEnum spacecraftKindEEnum = null;
150
151 /**
152 * Creates an instance of the model <b>Package</b>, registered with
153 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
154 * package URI value.
155 * <p>Note: the correct way to create the package is via the static
156 * factory method {@link #init init()}, which also performs
157 * initialization of the package, or returns the registered package,
158 * if one already exists.
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @see org.eclipse.emf.ecore.EPackage.Registry
162 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#eNS_URI
163 * @see #init()
164 * @generated
165 */
166 private SatellitePackageImpl() {
167 super(eNS_URI, SatelliteFactory.eINSTANCE);
168 }
169
170 /**
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 */
175 private static boolean isInited = false;
176
177 /**
178 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
179 *
180 * <p>This method is used to initialize {@link SatellitePackage#eINSTANCE} when that field is accessed.
181 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @see #eNS_URI
185 * @see #createPackageContents()
186 * @see #initializePackageContents()
187 * @generated
188 */
189 public static SatellitePackage init() {
190 if (isInited)
191 return (SatellitePackage) EPackage.Registry.INSTANCE.getEPackage(SatellitePackage.eNS_URI);
192
193 // Obtain or create and register package
194 Object registeredSatellitePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
195 SatellitePackageImpl theSatellitePackage = registeredSatellitePackage instanceof SatellitePackageImpl
196 ? (SatellitePackageImpl) registeredSatellitePackage
197 : new SatellitePackageImpl();
198
199 isInited = true;
200
201 // Create package meta-data objects
202 theSatellitePackage.createPackageContents();
203
204 // Initialize created meta-data
205 theSatellitePackage.initializePackageContents();
206
207 // Mark meta-data to indicate it can't be changed
208 theSatellitePackage.freeze();
209
210 // Update the registry and return the package
211 EPackage.Registry.INSTANCE.put(SatellitePackage.eNS_URI, theSatellitePackage);
212 return theSatellitePackage;
213 }
214
215 /**
216 * <!-- begin-user-doc -->
217 * <!-- end-user-doc -->
218 * @generated
219 */
220 @Override
221 public EClass getConstellationMission() {
222 return constellationMissionEClass;
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 @Override
231 public EReference getConstellationMission_GroundStationNetwork() {
232 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(0);
233 }
234
235 /**
236 * <!-- begin-user-doc -->
237 * <!-- end-user-doc -->
238 * @generated
239 */
240 @Override
241 public EReference getConstellationMission_Spacecraft() {
242 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(1);
243 }
244
245 /**
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 @Override
251 public EClass getInterferometryMission() {
252 return interferometryMissionEClass;
253 }
254
255 /**
256 * <!-- begin-user-doc -->
257 * <!-- end-user-doc -->
258 * @generated
259 */
260 @Override
261 public EAttribute getInterferometryMission_ObservationTime() {
262 return (EAttribute) interferometryMissionEClass.getEStructuralFeatures().get(0);
263 }
264
265 /**
266 * <!-- begin-user-doc -->
267 * <!-- end-user-doc -->
268 * @generated
269 */
270 @Override
271 public EClass getCommunicatingElement() {
272 return communicatingElementEClass;
273 }
274
275 /**
276 * <!-- begin-user-doc -->
277 * <!-- end-user-doc -->
278 * @generated
279 */
280 @Override
281 public EReference getCommunicatingElement_CommSubsystem() {
282 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(0);
283 }
284
285 /**
286 * <!-- begin-user-doc -->
287 * <!-- end-user-doc -->
288 * @generated
289 */
290 @Override
291 public EReference getCommunicatingElement_CommunicationLink() {
292 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(1);
293 }
294
295 /**
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @generated
299 */
300 @Override
301 public EClass getGroundStationNetwork() {
302 return groundStationNetworkEClass;
303 }
304
305 /**
306 * <!-- begin-user-doc -->
307 * <!-- end-user-doc -->
308 * @generated
309 */
310 @Override
311 public EClass getSpacecraft() {
312 return spacecraftEClass;
313 }
314
315 /**
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @generated
319 */
320 @Override
321 public EReference getSpacecraft_Payload() {
322 return (EReference) spacecraftEClass.getEStructuralFeatures().get(0);
323 }
324
325 /**
326 * <!-- begin-user-doc -->
327 * <!-- end-user-doc -->
328 * @generated
329 */
330 @Override
331 public EAttribute getSpacecraft_Kind() {
332 return (EAttribute) spacecraftEClass.getEStructuralFeatures().get(1);
333 }
334
335 /**
336 * <!-- begin-user-doc -->
337 * <!-- end-user-doc -->
338 * @generated
339 */
340 @Override
341 public EClass getCommSubsystem() {
342 return commSubsystemEClass;
343 }
344
345 /**
346 * <!-- begin-user-doc -->
347 * <!-- end-user-doc -->
348 * @generated
349 */
350 @Override
351 public EAttribute getCommSubsystem_Band() {
352 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(0);
353 }
354
355 /**
356 * <!-- begin-user-doc -->
357 * <!-- end-user-doc -->
358 * @generated
359 */
360 @Override
361 public EAttribute getCommSubsystem_Gain() {
362 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(1);
363 }
364
365 /**
366 * <!-- begin-user-doc -->
367 * <!-- end-user-doc -->
368 * @generated
369 */
370 @Override
371 public EClass getDirectedCommunicationLink() {
372 return directedCommunicationLinkEClass;
373 }
374
375 /**
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 */
380 @Override
381 public EReference getDirectedCommunicationLink_Source() {
382 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(0);
383 }
384
385 /**
386 * <!-- begin-user-doc -->
387 * <!-- end-user-doc -->
388 * @generated
389 */
390 @Override
391 public EReference getDirectedCommunicationLink_Target() {
392 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(1);
393 }
394
395 /**
396 * <!-- begin-user-doc -->
397 * <!-- end-user-doc -->
398 * @generated
399 */
400 @Override
401 public EClass getPayload() {
402 return payloadEClass;
403 }
404
405 /**
406 * <!-- begin-user-doc -->
407 * <!-- end-user-doc -->
408 * @generated
409 */
410 @Override
411 public EClass getInterferometryPayload() {
412 return interferometryPayloadEClass;
413 }
414
415 /**
416 * <!-- begin-user-doc -->
417 * <!-- end-user-doc -->
418 * @generated
419 */
420 @Override
421 public EClass getCubeSat3U() {
422 return cubeSat3UEClass;
423 }
424
425 /**
426 * <!-- begin-user-doc -->
427 * <!-- end-user-doc -->
428 * @generated
429 */
430 @Override
431 public EClass getCubeSat6U() {
432 return cubeSat6UEClass;
433 }
434
435 /**
436 * <!-- begin-user-doc -->
437 * <!-- end-user-doc -->
438 * @generated
439 */
440 @Override
441 public EClass getSmallSat() {
442 return smallSatEClass;
443 }
444
445 /**
446 * <!-- begin-user-doc -->
447 * <!-- end-user-doc -->
448 * @generated
449 */
450 @Override
451 public EClass getCubeSat() {
452 return cubeSatEClass;
453 }
454
455 /**
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @generated
459 */
460 @Override
461 public EEnum getTransceiverBand() {
462 return transceiverBandEEnum;
463 }
464
465 /**
466 * <!-- begin-user-doc -->
467 * <!-- end-user-doc -->
468 * @generated
469 */
470 @Override
471 public EEnum getAntennaGain() {
472 return antennaGainEEnum;
473 }
474
475 /**
476 * <!-- begin-user-doc -->
477 * <!-- end-user-doc -->
478 * @generated
479 */
480 @Override
481 public EEnum getSpacecraftKind() {
482 return spacecraftKindEEnum;
483 }
484
485 /**
486 * <!-- begin-user-doc -->
487 * <!-- end-user-doc -->
488 * @generated
489 */
490 @Override
491 public SatelliteFactory getSatelliteFactory() {
492 return (SatelliteFactory) getEFactoryInstance();
493 }
494
495 /**
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @generated
499 */
500 private boolean isCreated = false;
501
502 /**
503 * Creates the meta-model objects for the package. This method is
504 * guarded to have no affect on any invocation but its first.
505 * <!-- begin-user-doc -->
506 * <!-- end-user-doc -->
507 * @generated
508 */
509 public void createPackageContents() {
510 if (isCreated)
511 return;
512 isCreated = true;
513
514 // Create classes and their features
515 constellationMissionEClass = createEClass(CONSTELLATION_MISSION);
516 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__GROUND_STATION_NETWORK);
517 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__SPACECRAFT);
518
519 interferometryMissionEClass = createEClass(INTERFEROMETRY_MISSION);
520 createEAttribute(interferometryMissionEClass, INTERFEROMETRY_MISSION__OBSERVATION_TIME);
521
522 communicatingElementEClass = createEClass(COMMUNICATING_ELEMENT);
523 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMM_SUBSYSTEM);
524 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMMUNICATION_LINK);
525
526 groundStationNetworkEClass = createEClass(GROUND_STATION_NETWORK);
527
528 spacecraftEClass = createEClass(SPACECRAFT);
529 createEReference(spacecraftEClass, SPACECRAFT__PAYLOAD);
530 createEAttribute(spacecraftEClass, SPACECRAFT__KIND);
531
532 commSubsystemEClass = createEClass(COMM_SUBSYSTEM);
533 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__BAND);
534 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__GAIN);
535
536 directedCommunicationLinkEClass = createEClass(DIRECTED_COMMUNICATION_LINK);
537 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__SOURCE);
538 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__TARGET);
539
540 payloadEClass = createEClass(PAYLOAD);
541
542 interferometryPayloadEClass = createEClass(INTERFEROMETRY_PAYLOAD);
543
544 cubeSat3UEClass = createEClass(CUBE_SAT3_U);
545
546 cubeSat6UEClass = createEClass(CUBE_SAT6_U);
547
548 smallSatEClass = createEClass(SMALL_SAT);
549
550 cubeSatEClass = createEClass(CUBE_SAT);
551
552 // Create enums
553 transceiverBandEEnum = createEEnum(TRANSCEIVER_BAND);
554 antennaGainEEnum = createEEnum(ANTENNA_GAIN);
555 spacecraftKindEEnum = createEEnum(SPACECRAFT_KIND);
556 }
557
558 /**
559 * <!-- begin-user-doc -->
560 * <!-- end-user-doc -->
561 * @generated
562 */
563 private boolean isInitialized = false;
564
565 /**
566 * Complete the initialization of the package and its meta-model. This
567 * method is guarded to have no affect on any invocation but its first.
568 * <!-- begin-user-doc -->
569 * <!-- end-user-doc -->
570 * @generated
571 */
572 public void initializePackageContents() {
573 if (isInitialized)
574 return;
575 isInitialized = true;
576
577 // Initialize package
578 setName(eNAME);
579 setNsPrefix(eNS_PREFIX);
580 setNsURI(eNS_URI);
581
582 // Create type parameters
583
584 // Set bounds for type parameters
585
586 // Add supertypes to classes
587 interferometryMissionEClass.getESuperTypes().add(this.getConstellationMission());
588 groundStationNetworkEClass.getESuperTypes().add(this.getCommunicatingElement());
589 spacecraftEClass.getESuperTypes().add(this.getCommunicatingElement());
590 interferometryPayloadEClass.getESuperTypes().add(this.getPayload());
591 cubeSat3UEClass.getESuperTypes().add(this.getCubeSat());
592 cubeSat6UEClass.getESuperTypes().add(this.getCubeSat());
593 smallSatEClass.getESuperTypes().add(this.getSpacecraft());
594 cubeSatEClass.getESuperTypes().add(this.getSpacecraft());
595
596 // Initialize classes, features, and operations; add parameters
597 initEClass(constellationMissionEClass, ConstellationMission.class, "ConstellationMission", IS_ABSTRACT,
598 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
599 initEReference(getConstellationMission_GroundStationNetwork(), this.getGroundStationNetwork(), null,
600 "groundStationNetwork", null, 1, 1, ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE,
601 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
602 initEReference(getConstellationMission_Spacecraft(), this.getSpacecraft(), null, "spacecraft", null, 2, 50,
603 ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
604 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
605
606 initEClass(interferometryMissionEClass, InterferometryMission.class, "InterferometryMission", !IS_ABSTRACT,
607 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
608 initEAttribute(getInterferometryMission_ObservationTime(), ecorePackage.getEFloat(), "observationTime", "2.0",
609 1, 1, InterferometryMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
610 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
611
612 initEClass(communicatingElementEClass, CommunicatingElement.class, "CommunicatingElement", IS_ABSTRACT,
613 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
614 initEReference(getCommunicatingElement_CommSubsystem(), this.getCommSubsystem(), null, "commSubsystem", null, 1,
615 2, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
616 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
617 initEReference(getCommunicatingElement_CommunicationLink(), this.getDirectedCommunicationLink(), null,
618 "communicationLink", null, 0, 1, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
619 IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
620
621 initEClass(groundStationNetworkEClass, GroundStationNetwork.class, "GroundStationNetwork", !IS_ABSTRACT,
622 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
623
624 initEClass(spacecraftEClass, Spacecraft.class, "Spacecraft", IS_ABSTRACT, !IS_INTERFACE,
625 IS_GENERATED_INSTANCE_CLASS);
626 initEReference(getSpacecraft_Payload(), this.getPayload(), null, "payload", null, 0, 1, Spacecraft.class,
627 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
628 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
629 initEAttribute(getSpacecraft_Kind(), this.getSpacecraftKind(), "kind", null, 1, 1, Spacecraft.class,
630 IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
631
632 initEClass(commSubsystemEClass, CommSubsystem.class, "CommSubsystem", !IS_ABSTRACT, !IS_INTERFACE,
633 IS_GENERATED_INSTANCE_CLASS);
634 initEAttribute(getCommSubsystem_Band(), this.getTransceiverBand(), "band", null, 1, 1, CommSubsystem.class,
635 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
636 initEAttribute(getCommSubsystem_Gain(), this.getAntennaGain(), "gain", null, 1, 1, CommSubsystem.class,
637 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
638
639 initEClass(directedCommunicationLinkEClass, DirectedCommunicationLink.class, "DirectedCommunicationLink",
640 !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
641 initEReference(getDirectedCommunicationLink_Source(), this.getCommSubsystem(), null, "source", null, 1, 1,
642 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
643 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
644 initEReference(getDirectedCommunicationLink_Target(), this.getCommSubsystem(), null, "target", null, 1, 1,
645 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
646 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
647
648 initEClass(payloadEClass, Payload.class, "Payload", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
649
650 initEClass(interferometryPayloadEClass, InterferometryPayload.class, "InterferometryPayload", !IS_ABSTRACT,
651 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
652
653 initEClass(cubeSat3UEClass, CubeSat3U.class, "CubeSat3U", !IS_ABSTRACT, !IS_INTERFACE,
654 IS_GENERATED_INSTANCE_CLASS);
655
656 initEClass(cubeSat6UEClass, CubeSat6U.class, "CubeSat6U", !IS_ABSTRACT, !IS_INTERFACE,
657 IS_GENERATED_INSTANCE_CLASS);
658
659 initEClass(smallSatEClass, SmallSat.class, "SmallSat", !IS_ABSTRACT, !IS_INTERFACE,
660 IS_GENERATED_INSTANCE_CLASS);
661
662 initEClass(cubeSatEClass, CubeSat.class, "CubeSat", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
663
664 // Initialize enums and add enum literals
665 initEEnum(transceiverBandEEnum, TransceiverBand.class, "TransceiverBand");
666 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.UHF);
667 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.X);
668 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.KA);
669
670 initEEnum(antennaGainEEnum, AntennaGain.class, "AntennaGain");
671 addEEnumLiteral(antennaGainEEnum, AntennaGain.LOW);
672 addEEnumLiteral(antennaGainEEnum, AntennaGain.MEDIUM);
673 addEEnumLiteral(antennaGainEEnum, AntennaGain.HIGH);
674
675 initEEnum(spacecraftKindEEnum, SpacecraftKind.class, "SpacecraftKind");
676 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT3_U);
677 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT6_U);
678 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.SMALL_SAT);
679
680 // Create resource
681 createResource(eNS_URI);
682 }
683
684} //SatellitePackageImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SmallSatImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SmallSatImpl.java
new file mode 100644
index 00000000..522991ad
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SmallSatImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Small Sat</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class SmallSatImpl extends SpacecraftImpl implements SmallSat {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected SmallSatImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.SMALL_SAT;
35 }
36
37} //SmallSatImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SpacecraftImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SpacecraftImpl.java
new file mode 100644
index 00000000..9d74270a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SpacecraftImpl.java
@@ -0,0 +1,212 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.impl;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.Payload;
6import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft;
8
9import hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind;
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17
18/**
19 * <!-- begin-user-doc -->
20 * An implementation of the model object '<em><b>Spacecraft</b></em>'.
21 * <!-- end-user-doc -->
22 * <p>
23 * The following features are implemented:
24 * </p>
25 * <ul>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl#getPayload <em>Payload</em>}</li>
27 * <li>{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl#getKind <em>Kind</em>}</li>
28 * </ul>
29 *
30 * @generated
31 */
32public abstract class SpacecraftImpl extends CommunicatingElementImpl implements Spacecraft {
33 /**
34 * The cached value of the '{@link #getPayload() <em>Payload</em>}' containment reference.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @see #getPayload()
38 * @generated
39 * @ordered
40 */
41 protected Payload payload;
42
43 /**
44 * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @see #getKind()
48 * @generated
49 * @ordered
50 */
51 protected static final SpacecraftKind KIND_EDEFAULT = SpacecraftKind.CUBE_SAT3_U;
52
53 /**
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 protected SpacecraftImpl() {
59 super();
60 }
61
62 /**
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @generated
66 */
67 @Override
68 protected EClass eStaticClass() {
69 return SatellitePackage.Literals.SPACECRAFT;
70 }
71
72 /**
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 */
77 @Override
78 public Payload getPayload() {
79 return payload;
80 }
81
82 /**
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @generated
86 */
87 public NotificationChain basicSetPayload(Payload newPayload, NotificationChain msgs) {
88 Payload oldPayload = payload;
89 payload = newPayload;
90 if (eNotificationRequired()) {
91 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
92 SatellitePackage.SPACECRAFT__PAYLOAD, oldPayload, newPayload);
93 if (msgs == null)
94 msgs = notification;
95 else
96 msgs.add(notification);
97 }
98 return msgs;
99 }
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 @Override
107 public void setPayload(Payload newPayload) {
108 if (newPayload != payload) {
109 NotificationChain msgs = null;
110 if (payload != null)
111 msgs = ((InternalEObject) payload).eInverseRemove(this,
112 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
113 if (newPayload != null)
114 msgs = ((InternalEObject) newPayload).eInverseAdd(this,
115 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
116 msgs = basicSetPayload(newPayload, msgs);
117 if (msgs != null)
118 msgs.dispatch();
119 } else if (eNotificationRequired())
120 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.SPACECRAFT__PAYLOAD, newPayload,
121 newPayload));
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @Override
130 public SpacecraftKind getKind() {
131 // TODO: implement this method to return the 'Kind' attribute
132 // Ensure that you remove @generated or mark it @generated NOT
133 throw new UnsupportedOperationException();
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
143 switch (featureID) {
144 case SatellitePackage.SPACECRAFT__PAYLOAD:
145 return basicSetPayload(null, msgs);
146 }
147 return super.eInverseRemove(otherEnd, featureID, msgs);
148 }
149
150 /**
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @generated
154 */
155 @Override
156 public Object eGet(int featureID, boolean resolve, boolean coreType) {
157 switch (featureID) {
158 case SatellitePackage.SPACECRAFT__PAYLOAD:
159 return getPayload();
160 case SatellitePackage.SPACECRAFT__KIND:
161 return getKind();
162 }
163 return super.eGet(featureID, resolve, coreType);
164 }
165
166 /**
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @generated
170 */
171 @Override
172 public void eSet(int featureID, Object newValue) {
173 switch (featureID) {
174 case SatellitePackage.SPACECRAFT__PAYLOAD:
175 setPayload((Payload) newValue);
176 return;
177 }
178 super.eSet(featureID, newValue);
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 @Override
187 public void eUnset(int featureID) {
188 switch (featureID) {
189 case SatellitePackage.SPACECRAFT__PAYLOAD:
190 setPayload((Payload) null);
191 return;
192 }
193 super.eUnset(featureID);
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public boolean eIsSet(int featureID) {
203 switch (featureID) {
204 case SatellitePackage.SPACECRAFT__PAYLOAD:
205 return payload != null;
206 case SatellitePackage.SPACECRAFT__KIND:
207 return getKind() != KIND_EDEFAULT;
208 }
209 return super.eIsSet(featureID);
210 }
211
212} //SpacecraftImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteAdapterFactory.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteAdapterFactory.java
new file mode 100644
index 00000000..fd948334
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteAdapterFactory.java
@@ -0,0 +1,347 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.util;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.*;
6
7import org.eclipse.emf.common.notify.Adapter;
8import org.eclipse.emf.common.notify.Notifier;
9
10import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
11
12import org.eclipse.emf.ecore.EObject;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage
20 * @generated
21 */
22public class SatelliteAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static SatellitePackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public SatelliteAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = SatellitePackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject) object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected SatelliteSwitch<Adapter> modelSwitch = new SatelliteSwitch<Adapter>() {
69 @Override
70 public Adapter caseConstellationMission(ConstellationMission object) {
71 return createConstellationMissionAdapter();
72 }
73
74 @Override
75 public Adapter caseInterferometryMission(InterferometryMission object) {
76 return createInterferometryMissionAdapter();
77 }
78
79 @Override
80 public Adapter caseCommunicatingElement(CommunicatingElement object) {
81 return createCommunicatingElementAdapter();
82 }
83
84 @Override
85 public Adapter caseGroundStationNetwork(GroundStationNetwork object) {
86 return createGroundStationNetworkAdapter();
87 }
88
89 @Override
90 public Adapter caseSpacecraft(Spacecraft object) {
91 return createSpacecraftAdapter();
92 }
93
94 @Override
95 public Adapter caseCommSubsystem(CommSubsystem object) {
96 return createCommSubsystemAdapter();
97 }
98
99 @Override
100 public Adapter caseDirectedCommunicationLink(DirectedCommunicationLink object) {
101 return createDirectedCommunicationLinkAdapter();
102 }
103
104 @Override
105 public Adapter casePayload(Payload object) {
106 return createPayloadAdapter();
107 }
108
109 @Override
110 public Adapter caseInterferometryPayload(InterferometryPayload object) {
111 return createInterferometryPayloadAdapter();
112 }
113
114 @Override
115 public Adapter caseCubeSat3U(CubeSat3U object) {
116 return createCubeSat3UAdapter();
117 }
118
119 @Override
120 public Adapter caseCubeSat6U(CubeSat6U object) {
121 return createCubeSat6UAdapter();
122 }
123
124 @Override
125 public Adapter caseSmallSat(SmallSat object) {
126 return createSmallSatAdapter();
127 }
128
129 @Override
130 public Adapter caseCubeSat(CubeSat object) {
131 return createCubeSatAdapter();
132 }
133
134 @Override
135 public Adapter defaultCase(EObject object) {
136 return createEObjectAdapter();
137 }
138 };
139
140 /**
141 * Creates an adapter for the <code>target</code>.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @param target the object to adapt.
145 * @return the adapter for the <code>target</code>.
146 * @generated
147 */
148 @Override
149 public Adapter createAdapter(Notifier target) {
150 return modelSwitch.doSwitch((EObject) target);
151 }
152
153 /**
154 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission <em>Constellation Mission</em>}'.
155 * <!-- begin-user-doc -->
156 * This default implementation returns null so that we can easily ignore cases;
157 * it's useful to ignore a case when inheritance will catch all the cases anyway.
158 * <!-- end-user-doc -->
159 * @return the new adapter.
160 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission
161 * @generated
162 */
163 public Adapter createConstellationMissionAdapter() {
164 return null;
165 }
166
167 /**
168 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission <em>Interferometry Mission</em>}'.
169 * <!-- begin-user-doc -->
170 * This default implementation returns null so that we can easily ignore cases;
171 * it's useful to ignore a case when inheritance will catch all the cases anyway.
172 * <!-- end-user-doc -->
173 * @return the new adapter.
174 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission
175 * @generated
176 */
177 public Adapter createInterferometryMissionAdapter() {
178 return null;
179 }
180
181 /**
182 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement <em>Communicating Element</em>}'.
183 * <!-- begin-user-doc -->
184 * This default implementation returns null so that we can easily ignore cases;
185 * it's useful to ignore a case when inheritance will catch all the cases anyway.
186 * <!-- end-user-doc -->
187 * @return the new adapter.
188 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement
189 * @generated
190 */
191 public Adapter createCommunicatingElementAdapter() {
192 return null;
193 }
194
195 /**
196 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
197 * <!-- begin-user-doc -->
198 * This default implementation returns null so that we can easily ignore cases;
199 * it's useful to ignore a case when inheritance will catch all the cases anyway.
200 * <!-- end-user-doc -->
201 * @return the new adapter.
202 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork
203 * @generated
204 */
205 public Adapter createGroundStationNetworkAdapter() {
206 return null;
207 }
208
209 /**
210 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft <em>Spacecraft</em>}'.
211 * <!-- begin-user-doc -->
212 * This default implementation returns null so that we can easily ignore cases;
213 * it's useful to ignore a case when inheritance will catch all the cases anyway.
214 * <!-- end-user-doc -->
215 * @return the new adapter.
216 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft
217 * @generated
218 */
219 public Adapter createSpacecraftAdapter() {
220 return null;
221 }
222
223 /**
224 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem <em>Comm Subsystem</em>}'.
225 * <!-- begin-user-doc -->
226 * This default implementation returns null so that we can easily ignore cases;
227 * it's useful to ignore a case when inheritance will catch all the cases anyway.
228 * <!-- end-user-doc -->
229 * @return the new adapter.
230 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem
231 * @generated
232 */
233 public Adapter createCommSubsystemAdapter() {
234 return null;
235 }
236
237 /**
238 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
239 * <!-- begin-user-doc -->
240 * This default implementation returns null so that we can easily ignore cases;
241 * it's useful to ignore a case when inheritance will catch all the cases anyway.
242 * <!-- end-user-doc -->
243 * @return the new adapter.
244 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink
245 * @generated
246 */
247 public Adapter createDirectedCommunicationLinkAdapter() {
248 return null;
249 }
250
251 /**
252 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Payload <em>Payload</em>}'.
253 * <!-- begin-user-doc -->
254 * This default implementation returns null so that we can easily ignore cases;
255 * it's useful to ignore a case when inheritance will catch all the cases anyway.
256 * <!-- end-user-doc -->
257 * @return the new adapter.
258 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Payload
259 * @generated
260 */
261 public Adapter createPayloadAdapter() {
262 return null;
263 }
264
265 /**
266 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
267 * <!-- begin-user-doc -->
268 * This default implementation returns null so that we can easily ignore cases;
269 * it's useful to ignore a case when inheritance will catch all the cases anyway.
270 * <!-- end-user-doc -->
271 * @return the new adapter.
272 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload
273 * @generated
274 */
275 public Adapter createInterferometryPayloadAdapter() {
276 return null;
277 }
278
279 /**
280 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U <em>Cube Sat3 U</em>}'.
281 * <!-- begin-user-doc -->
282 * This default implementation returns null so that we can easily ignore cases;
283 * it's useful to ignore a case when inheritance will catch all the cases anyway.
284 * <!-- end-user-doc -->
285 * @return the new adapter.
286 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U
287 * @generated
288 */
289 public Adapter createCubeSat3UAdapter() {
290 return null;
291 }
292
293 /**
294 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U <em>Cube Sat6 U</em>}'.
295 * <!-- begin-user-doc -->
296 * This default implementation returns null so that we can easily ignore cases;
297 * it's useful to ignore a case when inheritance will catch all the cases anyway.
298 * <!-- end-user-doc -->
299 * @return the new adapter.
300 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat6U
301 * @generated
302 */
303 public Adapter createCubeSat6UAdapter() {
304 return null;
305 }
306
307 /**
308 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat <em>Small Sat</em>}'.
309 * <!-- begin-user-doc -->
310 * This default implementation returns null so that we can easily ignore cases;
311 * it's useful to ignore a case when inheritance will catch all the cases anyway.
312 * <!-- end-user-doc -->
313 * @return the new adapter.
314 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat
315 * @generated
316 */
317 public Adapter createSmallSatAdapter() {
318 return null;
319 }
320
321 /**
322 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat <em>Cube Sat</em>}'.
323 * <!-- begin-user-doc -->
324 * This default implementation returns null so that we can easily ignore cases;
325 * it's useful to ignore a case when inheritance will catch all the cases anyway.
326 * <!-- end-user-doc -->
327 * @return the new adapter.
328 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat
329 * @generated
330 */
331 public Adapter createCubeSatAdapter() {
332 return null;
333 }
334
335 /**
336 * Creates a new adapter for the default case.
337 * <!-- begin-user-doc -->
338 * This default implementation returns null.
339 * <!-- end-user-doc -->
340 * @return the new adapter.
341 * @generated
342 */
343 public Adapter createEObjectAdapter() {
344 return null;
345 }
346
347} //SatelliteAdapterFactory
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteSwitch.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteSwitch.java
new file mode 100644
index 00000000..08180b64
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteSwitch.java
@@ -0,0 +1,404 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.domains.satellite.util;
4
5import hu.bme.mit.inf.dslreasoner.domains.satellite.*;
6
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.util.Switch;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage
23 * @generated
24 */
25public class SatelliteSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static SatellitePackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public SatelliteSwitch() {
41 if (modelPackage == null) {
42 modelPackage = SatellitePackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case SatellitePackage.CONSTELLATION_MISSION: {
70 ConstellationMission constellationMission = (ConstellationMission) theEObject;
71 T result = caseConstellationMission(constellationMission);
72 if (result == null)
73 result = defaultCase(theEObject);
74 return result;
75 }
76 case SatellitePackage.INTERFEROMETRY_MISSION: {
77 InterferometryMission interferometryMission = (InterferometryMission) theEObject;
78 T result = caseInterferometryMission(interferometryMission);
79 if (result == null)
80 result = caseConstellationMission(interferometryMission);
81 if (result == null)
82 result = defaultCase(theEObject);
83 return result;
84 }
85 case SatellitePackage.COMMUNICATING_ELEMENT: {
86 CommunicatingElement communicatingElement = (CommunicatingElement) theEObject;
87 T result = caseCommunicatingElement(communicatingElement);
88 if (result == null)
89 result = defaultCase(theEObject);
90 return result;
91 }
92 case SatellitePackage.GROUND_STATION_NETWORK: {
93 GroundStationNetwork groundStationNetwork = (GroundStationNetwork) theEObject;
94 T result = caseGroundStationNetwork(groundStationNetwork);
95 if (result == null)
96 result = caseCommunicatingElement(groundStationNetwork);
97 if (result == null)
98 result = defaultCase(theEObject);
99 return result;
100 }
101 case SatellitePackage.SPACECRAFT: {
102 Spacecraft spacecraft = (Spacecraft) theEObject;
103 T result = caseSpacecraft(spacecraft);
104 if (result == null)
105 result = caseCommunicatingElement(spacecraft);
106 if (result == null)
107 result = defaultCase(theEObject);
108 return result;
109 }
110 case SatellitePackage.COMM_SUBSYSTEM: {
111 CommSubsystem commSubsystem = (CommSubsystem) theEObject;
112 T result = caseCommSubsystem(commSubsystem);
113 if (result == null)
114 result = defaultCase(theEObject);
115 return result;
116 }
117 case SatellitePackage.DIRECTED_COMMUNICATION_LINK: {
118 DirectedCommunicationLink directedCommunicationLink = (DirectedCommunicationLink) theEObject;
119 T result = caseDirectedCommunicationLink(directedCommunicationLink);
120 if (result == null)
121 result = defaultCase(theEObject);
122 return result;
123 }
124 case SatellitePackage.PAYLOAD: {
125 Payload payload = (Payload) theEObject;
126 T result = casePayload(payload);
127 if (result == null)
128 result = defaultCase(theEObject);
129 return result;
130 }
131 case SatellitePackage.INTERFEROMETRY_PAYLOAD: {
132 InterferometryPayload interferometryPayload = (InterferometryPayload) theEObject;
133 T result = caseInterferometryPayload(interferometryPayload);
134 if (result == null)
135 result = casePayload(interferometryPayload);
136 if (result == null)
137 result = defaultCase(theEObject);
138 return result;
139 }
140 case SatellitePackage.CUBE_SAT3_U: {
141 CubeSat3U cubeSat3U = (CubeSat3U) theEObject;
142 T result = caseCubeSat3U(cubeSat3U);
143 if (result == null)
144 result = caseCubeSat(cubeSat3U);
145 if (result == null)
146 result = caseSpacecraft(cubeSat3U);
147 if (result == null)
148 result = caseCommunicatingElement(cubeSat3U);
149 if (result == null)
150 result = defaultCase(theEObject);
151 return result;
152 }
153 case SatellitePackage.CUBE_SAT6_U: {
154 CubeSat6U cubeSat6U = (CubeSat6U) theEObject;
155 T result = caseCubeSat6U(cubeSat6U);
156 if (result == null)
157 result = caseCubeSat(cubeSat6U);
158 if (result == null)
159 result = caseSpacecraft(cubeSat6U);
160 if (result == null)
161 result = caseCommunicatingElement(cubeSat6U);
162 if (result == null)
163 result = defaultCase(theEObject);
164 return result;
165 }
166 case SatellitePackage.SMALL_SAT: {
167 SmallSat smallSat = (SmallSat) theEObject;
168 T result = caseSmallSat(smallSat);
169 if (result == null)
170 result = caseSpacecraft(smallSat);
171 if (result == null)
172 result = caseCommunicatingElement(smallSat);
173 if (result == null)
174 result = defaultCase(theEObject);
175 return result;
176 }
177 case SatellitePackage.CUBE_SAT: {
178 CubeSat cubeSat = (CubeSat) theEObject;
179 T result = caseCubeSat(cubeSat);
180 if (result == null)
181 result = caseSpacecraft(cubeSat);
182 if (result == null)
183 result = caseCommunicatingElement(cubeSat);
184 if (result == null)
185 result = defaultCase(theEObject);
186 return result;
187 }
188 default:
189 return defaultCase(theEObject);
190 }
191 }
192
193 /**
194 * Returns the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
195 * <!-- begin-user-doc -->
196 * This implementation returns null;
197 * returning a non-null result will terminate the switch.
198 * <!-- end-user-doc -->
199 * @param object the target of the switch.
200 * @return the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
201 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
202 * @generated
203 */
204 public T caseConstellationMission(ConstellationMission object) {
205 return null;
206 }
207
208 /**
209 * Returns the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
210 * <!-- begin-user-doc -->
211 * This implementation returns null;
212 * returning a non-null result will terminate the switch.
213 * <!-- end-user-doc -->
214 * @param object the target of the switch.
215 * @return the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
216 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
217 * @generated
218 */
219 public T caseInterferometryMission(InterferometryMission object) {
220 return null;
221 }
222
223 /**
224 * Returns the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
225 * <!-- begin-user-doc -->
226 * This implementation returns null;
227 * returning a non-null result will terminate the switch.
228 * <!-- end-user-doc -->
229 * @param object the target of the switch.
230 * @return the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
231 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
232 * @generated
233 */
234 public T caseCommunicatingElement(CommunicatingElement object) {
235 return null;
236 }
237
238 /**
239 * Returns the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
240 * <!-- begin-user-doc -->
241 * This implementation returns null;
242 * returning a non-null result will terminate the switch.
243 * <!-- end-user-doc -->
244 * @param object the target of the switch.
245 * @return the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
246 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
247 * @generated
248 */
249 public T caseGroundStationNetwork(GroundStationNetwork object) {
250 return null;
251 }
252
253 /**
254 * Returns the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
255 * <!-- begin-user-doc -->
256 * This implementation returns null;
257 * returning a non-null result will terminate the switch.
258 * <!-- end-user-doc -->
259 * @param object the target of the switch.
260 * @return the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
261 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
262 * @generated
263 */
264 public T caseSpacecraft(Spacecraft object) {
265 return null;
266 }
267
268 /**
269 * Returns the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
270 * <!-- begin-user-doc -->
271 * This implementation returns null;
272 * returning a non-null result will terminate the switch.
273 * <!-- end-user-doc -->
274 * @param object the target of the switch.
275 * @return the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
276 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
277 * @generated
278 */
279 public T caseCommSubsystem(CommSubsystem object) {
280 return null;
281 }
282
283 /**
284 * Returns the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
285 * <!-- begin-user-doc -->
286 * This implementation returns null;
287 * returning a non-null result will terminate the switch.
288 * <!-- end-user-doc -->
289 * @param object the target of the switch.
290 * @return the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
291 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
292 * @generated
293 */
294 public T caseDirectedCommunicationLink(DirectedCommunicationLink object) {
295 return null;
296 }
297
298 /**
299 * Returns the result of interpreting the object as an instance of '<em>Payload</em>'.
300 * <!-- begin-user-doc -->
301 * This implementation returns null;
302 * returning a non-null result will terminate the switch.
303 * <!-- end-user-doc -->
304 * @param object the target of the switch.
305 * @return the result of interpreting the object as an instance of '<em>Payload</em>'.
306 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
307 * @generated
308 */
309 public T casePayload(Payload object) {
310 return null;
311 }
312
313 /**
314 * Returns the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
315 * <!-- begin-user-doc -->
316 * This implementation returns null;
317 * returning a non-null result will terminate the switch.
318 * <!-- end-user-doc -->
319 * @param object the target of the switch.
320 * @return the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
321 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
322 * @generated
323 */
324 public T caseInterferometryPayload(InterferometryPayload object) {
325 return null;
326 }
327
328 /**
329 * Returns the result of interpreting the object as an instance of '<em>Cube Sat3 U</em>'.
330 * <!-- begin-user-doc -->
331 * This implementation returns null;
332 * returning a non-null result will terminate the switch.
333 * <!-- end-user-doc -->
334 * @param object the target of the switch.
335 * @return the result of interpreting the object as an instance of '<em>Cube Sat3 U</em>'.
336 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
337 * @generated
338 */
339 public T caseCubeSat3U(CubeSat3U object) {
340 return null;
341 }
342
343 /**
344 * Returns the result of interpreting the object as an instance of '<em>Cube Sat6 U</em>'.
345 * <!-- begin-user-doc -->
346 * This implementation returns null;
347 * returning a non-null result will terminate the switch.
348 * <!-- end-user-doc -->
349 * @param object the target of the switch.
350 * @return the result of interpreting the object as an instance of '<em>Cube Sat6 U</em>'.
351 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
352 * @generated
353 */
354 public T caseCubeSat6U(CubeSat6U object) {
355 return null;
356 }
357
358 /**
359 * Returns the result of interpreting the object as an instance of '<em>Small Sat</em>'.
360 * <!-- begin-user-doc -->
361 * This implementation returns null;
362 * returning a non-null result will terminate the switch.
363 * <!-- end-user-doc -->
364 * @param object the target of the switch.
365 * @return the result of interpreting the object as an instance of '<em>Small Sat</em>'.
366 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
367 * @generated
368 */
369 public T caseSmallSat(SmallSat object) {
370 return null;
371 }
372
373 /**
374 * Returns the result of interpreting the object as an instance of '<em>Cube Sat</em>'.
375 * <!-- begin-user-doc -->
376 * This implementation returns null;
377 * returning a non-null result will terminate the switch.
378 * <!-- end-user-doc -->
379 * @param object the target of the switch.
380 * @return the result of interpreting the object as an instance of '<em>Cube Sat</em>'.
381 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
382 * @generated
383 */
384 public T caseCubeSat(CubeSat object) {
385 return null;
386 }
387
388 /**
389 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
390 * <!-- begin-user-doc -->
391 * This implementation returns null;
392 * returning a non-null result will terminate the switch, but this is the last case anyway.
393 * <!-- end-user-doc -->
394 * @param object the target of the switch.
395 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
396 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
397 * @generated
398 */
399 @Override
400 public T defaultCase(EObject object) {
401 return null;
402 }
403
404} //SatelliteSwitch
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/AntennaGain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/AntennaGain.java
new file mode 100644
index 00000000..75bc548d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/AntennaGain.java
@@ -0,0 +1,242 @@
1/**
2 */
3package satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Antenna Gain</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see satellite.SatellitePackage#getAntennaGain()
17 * @model
18 * @generated
19 */
20public enum AntennaGain implements Enumerator {
21 /**
22 * The '<em><b>LOW</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #LOW_VALUE
26 * @generated
27 * @ordered
28 */
29 LOW(0, "LOW", "LOW"),
30
31 /**
32 * The '<em><b>MEDIUM</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #MEDIUM_VALUE
36 * @generated
37 * @ordered
38 */
39 MEDIUM(1, "MEDIUM", "MEDIUM"),
40
41 /**
42 * The '<em><b>HIGH</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #HIGH_VALUE
46 * @generated
47 * @ordered
48 */
49 HIGH(2, "HIGH", "HIGH");
50
51 /**
52 * The '<em><b>LOW</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>LOW</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #LOW
60 * @model
61 * @generated
62 * @ordered
63 */
64 public static final int LOW_VALUE = 0;
65
66 /**
67 * The '<em><b>MEDIUM</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>MEDIUM</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #MEDIUM
75 * @model
76 * @generated
77 * @ordered
78 */
79 public static final int MEDIUM_VALUE = 1;
80
81 /**
82 * The '<em><b>HIGH</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>HIGH</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #HIGH
90 * @model
91 * @generated
92 * @ordered
93 */
94 public static final int HIGH_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Antenna Gain</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final AntennaGain[] VALUES_ARRAY = new AntennaGain[] { LOW, MEDIUM, HIGH, };
103
104 /**
105 * A public read-only list of all the '<em><b>Antenna Gain</b></em>' enumerators.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public static final List<AntennaGain> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
111
112 /**
113 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @param literal the literal.
117 * @return the matching enumerator or <code>null</code>.
118 * @generated
119 */
120 public static AntennaGain get(String literal) {
121 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
122 AntennaGain result = VALUES_ARRAY[i];
123 if (result.toString().equals(literal)) {
124 return result;
125 }
126 }
127 return null;
128 }
129
130 /**
131 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified name.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param name the name.
135 * @return the matching enumerator or <code>null</code>.
136 * @generated
137 */
138 public static AntennaGain getByName(String name) {
139 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
140 AntennaGain result = VALUES_ARRAY[i];
141 if (result.getName().equals(name)) {
142 return result;
143 }
144 }
145 return null;
146 }
147
148 /**
149 * Returns the '<em><b>Antenna Gain</b></em>' literal with the specified integer value.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @param value the integer value.
153 * @return the matching enumerator or <code>null</code>.
154 * @generated
155 */
156 public static AntennaGain get(int value) {
157 switch (value) {
158 case LOW_VALUE:
159 return LOW;
160 case MEDIUM_VALUE:
161 return MEDIUM;
162 case HIGH_VALUE:
163 return HIGH;
164 }
165 return null;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private final int value;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private final String name;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private final String literal;
188
189 /**
190 * Only this class can construct instances.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private AntennaGain(int value, String name, String literal) {
196 this.value = value;
197 this.name = name;
198 this.literal = literal;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public int getValue() {
208 return value;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public String getLiteral() {
228 return literal;
229 }
230
231 /**
232 * Returns the literal value of the enumerator, which is its string representation.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public String toString() {
239 return literal;
240 }
241
242} //AntennaGain
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommSubsystem.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommSubsystem.java
new file mode 100644
index 00000000..072a9705
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommSubsystem.java
@@ -0,0 +1,83 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Comm Subsystem</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link satellite.CommSubsystem#getBand <em>Band</em>}</li>
17 * <li>{@link satellite.CommSubsystem#getGain <em>Gain</em>}</li>
18 * </ul>
19 *
20 * @see satellite.SatellitePackage#getCommSubsystem()
21 * @model
22 * @generated
23 */
24public interface CommSubsystem extends EObject {
25 /**
26 * Returns the value of the '<em><b>Band</b></em>' attribute.
27 * The literals are from the enumeration {@link satellite.TransceiverBand}.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Band</em>' attribute isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Band</em>' attribute.
35 * @see satellite.TransceiverBand
36 * @see #setBand(TransceiverBand)
37 * @see satellite.SatellitePackage#getCommSubsystem_Band()
38 * @model required="true"
39 * @generated
40 */
41 TransceiverBand getBand();
42
43 /**
44 * Sets the value of the '{@link satellite.CommSubsystem#getBand <em>Band</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Band</em>' attribute.
48 * @see satellite.TransceiverBand
49 * @see #getBand()
50 * @generated
51 */
52 void setBand(TransceiverBand value);
53
54 /**
55 * Returns the value of the '<em><b>Gain</b></em>' attribute.
56 * The literals are from the enumeration {@link satellite.AntennaGain}.
57 * <!-- begin-user-doc -->
58 * <p>
59 * If the meaning of the '<em>Gain</em>' attribute isn't clear,
60 * there really should be more of a description here...
61 * </p>
62 * <!-- end-user-doc -->
63 * @return the value of the '<em>Gain</em>' attribute.
64 * @see satellite.AntennaGain
65 * @see #setGain(AntennaGain)
66 * @see satellite.SatellitePackage#getCommSubsystem_Gain()
67 * @model required="true"
68 * @generated
69 */
70 AntennaGain getGain();
71
72 /**
73 * Sets the value of the '{@link satellite.CommSubsystem#getGain <em>Gain</em>}' attribute.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @param value the new value of the '<em>Gain</em>' attribute.
77 * @see satellite.AntennaGain
78 * @see #getGain()
79 * @generated
80 */
81 void setGain(AntennaGain value);
82
83} // CommSubsystem
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommunicatingElement.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommunicatingElement.java
new file mode 100644
index 00000000..b96b281f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CommunicatingElement.java
@@ -0,0 +1,69 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Communicating Element</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link satellite.CommunicatingElement#getCommSubsystem <em>Comm Subsystem</em>}</li>
19 * <li>{@link satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}</li>
20 * </ul>
21 *
22 * @see satellite.SatellitePackage#getCommunicatingElement()
23 * @model abstract="true"
24 * @generated
25 */
26public interface CommunicatingElement extends EObject {
27 /**
28 * Returns the value of the '<em><b>Comm Subsystem</b></em>' containment reference list.
29 * The list contents are of type {@link satellite.CommSubsystem}.
30 * <!-- begin-user-doc -->
31 * <p>
32 * If the meaning of the '<em>Comm Subsystem</em>' containment reference list isn't clear,
33 * there really should be more of a description here...
34 * </p>
35 * <!-- end-user-doc -->
36 * @return the value of the '<em>Comm Subsystem</em>' containment reference list.
37 * @see satellite.SatellitePackage#getCommunicatingElement_CommSubsystem()
38 * @model containment="true" required="true" upper="2"
39 * @generated
40 */
41 EList<CommSubsystem> getCommSubsystem();
42
43 /**
44 * Returns the value of the '<em><b>Communication Link</b></em>' containment reference.
45 * <!-- begin-user-doc -->
46 * <p>
47 * If the meaning of the '<em>Communication Link</em>' containment reference isn't clear,
48 * there really should be more of a description here...
49 * </p>
50 * <!-- end-user-doc -->
51 * @return the value of the '<em>Communication Link</em>' containment reference.
52 * @see #setCommunicationLink(DirectedCommunicationLink)
53 * @see satellite.SatellitePackage#getCommunicatingElement_CommunicationLink()
54 * @model containment="true"
55 * @generated
56 */
57 DirectedCommunicationLink getCommunicationLink();
58
59 /**
60 * Sets the value of the '{@link satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}' containment reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @param value the new value of the '<em>Communication Link</em>' containment reference.
64 * @see #getCommunicationLink()
65 * @generated
66 */
67 void setCommunicationLink(DirectedCommunicationLink value);
68
69} // CommunicatingElement
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/ConstellationMission.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/ConstellationMission.java
new file mode 100644
index 00000000..9402232d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/ConstellationMission.java
@@ -0,0 +1,69 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Constellation Mission</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}</li>
19 * <li>{@link satellite.ConstellationMission#getSpacecraft <em>Spacecraft</em>}</li>
20 * </ul>
21 *
22 * @see satellite.SatellitePackage#getConstellationMission()
23 * @model abstract="true"
24 * @generated
25 */
26public interface ConstellationMission extends EObject {
27 /**
28 * Returns the value of the '<em><b>Ground Station Network</b></em>' containment reference.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Ground Station Network</em>' containment reference isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Ground Station Network</em>' containment reference.
36 * @see #setGroundStationNetwork(GroundStationNetwork)
37 * @see satellite.SatellitePackage#getConstellationMission_GroundStationNetwork()
38 * @model containment="true" required="true"
39 * @generated
40 */
41 GroundStationNetwork getGroundStationNetwork();
42
43 /**
44 * Sets the value of the '{@link satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}' containment reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Ground Station Network</em>' containment reference.
48 * @see #getGroundStationNetwork()
49 * @generated
50 */
51 void setGroundStationNetwork(GroundStationNetwork value);
52
53 /**
54 * Returns the value of the '<em><b>Spacecraft</b></em>' containment reference list.
55 * The list contents are of type {@link satellite.Spacecraft}.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Spacecraft</em>' containment reference list isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Spacecraft</em>' containment reference list.
63 * @see satellite.SatellitePackage#getConstellationMission_Spacecraft()
64 * @model containment="true" lower="2" upper="50"
65 * @generated
66 */
67 EList<Spacecraft> getSpacecraft();
68
69} // ConstellationMission
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat3U.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat3U.java
new file mode 100644
index 00000000..5758e165
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat3U.java
@@ -0,0 +1,16 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Cube Sat3 U</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see satellite.SatellitePackage#getCubeSat3U()
12 * @model
13 * @generated
14 */
15public interface CubeSat3U extends Spacecraft {
16} // CubeSat3U
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat6U.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat6U.java
new file mode 100644
index 00000000..a8d8830f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/CubeSat6U.java
@@ -0,0 +1,16 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Cube Sat6 U</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see satellite.SatellitePackage#getCubeSat6U()
12 * @model
13 * @generated
14 */
15public interface CubeSat6U extends Spacecraft {
16} // CubeSat6U
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/DirectedCommunicationLink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/DirectedCommunicationLink.java
new file mode 100644
index 00000000..67c8fcc8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/DirectedCommunicationLink.java
@@ -0,0 +1,77 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Directed Communication Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link satellite.DirectedCommunicationLink#getSource <em>Source</em>}</li>
17 * <li>{@link satellite.DirectedCommunicationLink#getTarget <em>Target</em>}</li>
18 * </ul>
19 *
20 * @see satellite.SatellitePackage#getDirectedCommunicationLink()
21 * @model
22 * @generated
23 */
24public interface DirectedCommunicationLink extends EObject {
25 /**
26 * Returns the value of the '<em><b>Source</b></em>' reference.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Source</em>' reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Source</em>' reference.
34 * @see #setSource(CommSubsystem)
35 * @see satellite.SatellitePackage#getDirectedCommunicationLink_Source()
36 * @model required="true"
37 * @generated
38 */
39 CommSubsystem getSource();
40
41 /**
42 * Sets the value of the '{@link satellite.DirectedCommunicationLink#getSource <em>Source</em>}' reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @param value the new value of the '<em>Source</em>' reference.
46 * @see #getSource()
47 * @generated
48 */
49 void setSource(CommSubsystem value);
50
51 /**
52 * Returns the value of the '<em><b>Target</b></em>' reference.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of the '<em>Target</em>' reference isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @return the value of the '<em>Target</em>' reference.
60 * @see #setTarget(CommSubsystem)
61 * @see satellite.SatellitePackage#getDirectedCommunicationLink_Target()
62 * @model required="true"
63 * @generated
64 */
65 CommSubsystem getTarget();
66
67 /**
68 * Sets the value of the '{@link satellite.DirectedCommunicationLink#getTarget <em>Target</em>}' reference.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Target</em>' reference.
72 * @see #getTarget()
73 * @generated
74 */
75 void setTarget(CommSubsystem value);
76
77} // DirectedCommunicationLink
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/GroundStationNetwork.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/GroundStationNetwork.java
new file mode 100644
index 00000000..8df20913
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/GroundStationNetwork.java
@@ -0,0 +1,16 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Ground Station Network</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see satellite.SatellitePackage#getGroundStationNetwork()
12 * @model
13 * @generated
14 */
15public interface GroundStationNetwork extends CommunicatingElement {
16} // GroundStationNetwork
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryMission.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryMission.java
new file mode 100644
index 00000000..967923d4
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryMission.java
@@ -0,0 +1,49 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Interferometry Mission</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 * <p>
11 * The following features are supported:
12 * </p>
13 * <ul>
14 * <li>{@link satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}</li>
15 * </ul>
16 *
17 * @see satellite.SatellitePackage#getInterferometryMission()
18 * @model
19 * @generated
20 */
21public interface InterferometryMission extends ConstellationMission {
22 /**
23 * Returns the value of the '<em><b>Observation Time</b></em>' attribute.
24 * The default value is <code>"2.0"</code>.
25 * <!-- begin-user-doc -->
26 * <p>
27 * If the meaning of the '<em>Observation Time</em>' attribute isn't clear,
28 * there really should be more of a description here...
29 * </p>
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Observation Time</em>' attribute.
32 * @see #setObservationTime(float)
33 * @see satellite.SatellitePackage#getInterferometryMission_ObservationTime()
34 * @model default="2.0" required="true"
35 * @generated
36 */
37 float getObservationTime();
38
39 /**
40 * Sets the value of the '{@link satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Observation Time</em>' attribute.
44 * @see #getObservationTime()
45 * @generated
46 */
47 void setObservationTime(float value);
48
49} // InterferometryMission
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryPayload.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryPayload.java
new file mode 100644
index 00000000..67156bdb
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/InterferometryPayload.java
@@ -0,0 +1,16 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Interferometry Payload</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see satellite.SatellitePackage#getInterferometryPayload()
12 * @model
13 * @generated
14 */
15public interface InterferometryPayload extends Payload {
16} // InterferometryPayload
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Payload.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Payload.java
new file mode 100644
index 00000000..3222fd3b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Payload.java
@@ -0,0 +1,18 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Payload</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see satellite.SatellitePackage#getPayload()
14 * @model abstract="true"
15 * @generated
16 */
17public interface Payload extends EObject {
18} // Payload
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatelliteFactory.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatelliteFactory.java
new file mode 100644
index 00000000..04cb80ce
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatelliteFactory.java
@@ -0,0 +1,105 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see satellite.SatellitePackage
13 * @generated
14 */
15public interface SatelliteFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 SatelliteFactory eINSTANCE = satellite.impl.SatelliteFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Interferometry Mission</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Interferometry Mission</em>'.
29 * @generated
30 */
31 InterferometryMission createInterferometryMission();
32
33 /**
34 * Returns a new object of class '<em>Ground Station Network</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Ground Station Network</em>'.
38 * @generated
39 */
40 GroundStationNetwork createGroundStationNetwork();
41
42 /**
43 * Returns a new object of class '<em>Comm Subsystem</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Comm Subsystem</em>'.
47 * @generated
48 */
49 CommSubsystem createCommSubsystem();
50
51 /**
52 * Returns a new object of class '<em>Directed Communication Link</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Directed Communication Link</em>'.
56 * @generated
57 */
58 DirectedCommunicationLink createDirectedCommunicationLink();
59
60 /**
61 * Returns a new object of class '<em>Interferometry Payload</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Interferometry Payload</em>'.
65 * @generated
66 */
67 InterferometryPayload createInterferometryPayload();
68
69 /**
70 * Returns a new object of class '<em>Cube Sat3 U</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>Cube Sat3 U</em>'.
74 * @generated
75 */
76 CubeSat3U createCubeSat3U();
77
78 /**
79 * Returns a new object of class '<em>Cube Sat6 U</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Cube Sat6 U</em>'.
83 * @generated
84 */
85 CubeSat6U createCubeSat6U();
86
87 /**
88 * Returns a new object of class '<em>Small Sat</em>'.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return a new object of class '<em>Small Sat</em>'.
92 * @generated
93 */
94 SmallSat createSmallSat();
95
96 /**
97 * Returns the package supported by this factory.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return the package supported by this factory.
101 * @generated
102 */
103 SatellitePackage getSatellitePackage();
104
105} //SatelliteFactory
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatellitePackage.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatellitePackage.java
new file mode 100644
index 00000000..f0d80ac2
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SatellitePackage.java
@@ -0,0 +1,1223 @@
1/**
2 */
3package satellite;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EEnum;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.EReference;
10
11/**
12 * <!-- begin-user-doc -->
13 * The <b>Package</b> for the model.
14 * It contains accessors for the meta objects to represent
15 * <ul>
16 * <li>each class,</li>
17 * <li>each feature of each class,</li>
18 * <li>each operation of each class,</li>
19 * <li>each enum,</li>
20 * <li>and each data type</li>
21 * </ul>
22 * <!-- end-user-doc -->
23 * @see satellite.SatelliteFactory
24 * @model kind="package"
25 * annotation="http://www.eclipse.org/emf/2002/Ecore settingDelegates='org.eclipse.viatra.query.querybasedfeature'"
26 * @generated
27 */
28public interface SatellitePackage extends EPackage {
29 /**
30 * The package name.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @generated
34 */
35 String eNAME = "satellite";
36
37 /**
38 * The package namespace URI.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @generated
42 */
43 String eNS_URI = "http://www.example.org/satellite";
44
45 /**
46 * The package namespace name.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 String eNS_PREFIX = "satellite";
52
53 /**
54 * The singleton instance of the package.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 SatellitePackage eINSTANCE = satellite.impl.SatellitePackageImpl.init();
60
61 /**
62 * The meta object id for the '{@link satellite.impl.ConstellationMissionImpl <em>Constellation Mission</em>}' class.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see satellite.impl.ConstellationMissionImpl
66 * @see satellite.impl.SatellitePackageImpl#getConstellationMission()
67 * @generated
68 */
69 int CONSTELLATION_MISSION = 0;
70
71 /**
72 * The feature id for the '<em><b>Ground Station Network</b></em>' containment reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 * @ordered
77 */
78 int CONSTELLATION_MISSION__GROUND_STATION_NETWORK = 0;
79
80 /**
81 * The feature id for the '<em><b>Spacecraft</b></em>' containment reference list.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 * @ordered
86 */
87 int CONSTELLATION_MISSION__SPACECRAFT = 1;
88
89 /**
90 * The number of structural features of the '<em>Constellation Mission</em>' class.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 * @ordered
95 */
96 int CONSTELLATION_MISSION_FEATURE_COUNT = 2;
97
98 /**
99 * The number of operations of the '<em>Constellation Mission</em>' class.
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 * @ordered
104 */
105 int CONSTELLATION_MISSION_OPERATION_COUNT = 0;
106
107 /**
108 * The meta object id for the '{@link satellite.impl.InterferometryMissionImpl <em>Interferometry Mission</em>}' class.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @see satellite.impl.InterferometryMissionImpl
112 * @see satellite.impl.SatellitePackageImpl#getInterferometryMission()
113 * @generated
114 */
115 int INTERFEROMETRY_MISSION = 1;
116
117 /**
118 * The feature id for the '<em><b>Ground Station Network</b></em>' containment reference.
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 * @ordered
123 */
124 int INTERFEROMETRY_MISSION__GROUND_STATION_NETWORK = CONSTELLATION_MISSION__GROUND_STATION_NETWORK;
125
126 /**
127 * The feature id for the '<em><b>Spacecraft</b></em>' containment reference list.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 * @ordered
132 */
133 int INTERFEROMETRY_MISSION__SPACECRAFT = CONSTELLATION_MISSION__SPACECRAFT;
134
135 /**
136 * The feature id for the '<em><b>Observation Time</b></em>' attribute.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 * @ordered
141 */
142 int INTERFEROMETRY_MISSION__OBSERVATION_TIME = CONSTELLATION_MISSION_FEATURE_COUNT + 0;
143
144 /**
145 * The number of structural features of the '<em>Interferometry Mission</em>' class.
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @generated
149 * @ordered
150 */
151 int INTERFEROMETRY_MISSION_FEATURE_COUNT = CONSTELLATION_MISSION_FEATURE_COUNT + 1;
152
153 /**
154 * The number of operations of the '<em>Interferometry Mission</em>' class.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @generated
158 * @ordered
159 */
160 int INTERFEROMETRY_MISSION_OPERATION_COUNT = CONSTELLATION_MISSION_OPERATION_COUNT + 0;
161
162 /**
163 * The meta object id for the '{@link satellite.impl.CommunicatingElementImpl <em>Communicating Element</em>}' class.
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @see satellite.impl.CommunicatingElementImpl
167 * @see satellite.impl.SatellitePackageImpl#getCommunicatingElement()
168 * @generated
169 */
170 int COMMUNICATING_ELEMENT = 2;
171
172 /**
173 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 * @ordered
178 */
179 int COMMUNICATING_ELEMENT__COMM_SUBSYSTEM = 0;
180
181 /**
182 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 * @ordered
187 */
188 int COMMUNICATING_ELEMENT__COMMUNICATION_LINK = 1;
189
190 /**
191 * The number of structural features of the '<em>Communicating Element</em>' class.
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 * @ordered
196 */
197 int COMMUNICATING_ELEMENT_FEATURE_COUNT = 2;
198
199 /**
200 * The number of operations of the '<em>Communicating Element</em>' class.
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 * @ordered
205 */
206 int COMMUNICATING_ELEMENT_OPERATION_COUNT = 0;
207
208 /**
209 * The meta object id for the '{@link satellite.impl.GroundStationNetworkImpl <em>Ground Station Network</em>}' class.
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @see satellite.impl.GroundStationNetworkImpl
213 * @see satellite.impl.SatellitePackageImpl#getGroundStationNetwork()
214 * @generated
215 */
216 int GROUND_STATION_NETWORK = 3;
217
218 /**
219 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
220 * <!-- begin-user-doc -->
221 * <!-- end-user-doc -->
222 * @generated
223 * @ordered
224 */
225 int GROUND_STATION_NETWORK__COMM_SUBSYSTEM = COMMUNICATING_ELEMENT__COMM_SUBSYSTEM;
226
227 /**
228 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
229 * <!-- begin-user-doc -->
230 * <!-- end-user-doc -->
231 * @generated
232 * @ordered
233 */
234 int GROUND_STATION_NETWORK__COMMUNICATION_LINK = COMMUNICATING_ELEMENT__COMMUNICATION_LINK;
235
236 /**
237 * The number of structural features of the '<em>Ground Station Network</em>' class.
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 * @ordered
242 */
243 int GROUND_STATION_NETWORK_FEATURE_COUNT = COMMUNICATING_ELEMENT_FEATURE_COUNT + 0;
244
245 /**
246 * The number of operations of the '<em>Ground Station Network</em>' class.
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @generated
250 * @ordered
251 */
252 int GROUND_STATION_NETWORK_OPERATION_COUNT = COMMUNICATING_ELEMENT_OPERATION_COUNT + 0;
253
254 /**
255 * The meta object id for the '{@link satellite.impl.SpacecraftImpl <em>Spacecraft</em>}' class.
256 * <!-- begin-user-doc -->
257 * <!-- end-user-doc -->
258 * @see satellite.impl.SpacecraftImpl
259 * @see satellite.impl.SatellitePackageImpl#getSpacecraft()
260 * @generated
261 */
262 int SPACECRAFT = 4;
263
264 /**
265 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
266 * <!-- begin-user-doc -->
267 * <!-- end-user-doc -->
268 * @generated
269 * @ordered
270 */
271 int SPACECRAFT__COMM_SUBSYSTEM = COMMUNICATING_ELEMENT__COMM_SUBSYSTEM;
272
273 /**
274 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
275 * <!-- begin-user-doc -->
276 * <!-- end-user-doc -->
277 * @generated
278 * @ordered
279 */
280 int SPACECRAFT__COMMUNICATION_LINK = COMMUNICATING_ELEMENT__COMMUNICATION_LINK;
281
282 /**
283 * The feature id for the '<em><b>Payload</b></em>' containment reference.
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @generated
287 * @ordered
288 */
289 int SPACECRAFT__PAYLOAD = COMMUNICATING_ELEMENT_FEATURE_COUNT + 0;
290
291 /**
292 * The feature id for the '<em><b>Kind</b></em>' attribute.
293 * <!-- begin-user-doc -->
294 * <!-- end-user-doc -->
295 * @generated
296 * @ordered
297 */
298 int SPACECRAFT__KIND = COMMUNICATING_ELEMENT_FEATURE_COUNT + 1;
299
300 /**
301 * The number of structural features of the '<em>Spacecraft</em>' class.
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @generated
305 * @ordered
306 */
307 int SPACECRAFT_FEATURE_COUNT = COMMUNICATING_ELEMENT_FEATURE_COUNT + 2;
308
309 /**
310 * The number of operations of the '<em>Spacecraft</em>' class.
311 * <!-- begin-user-doc -->
312 * <!-- end-user-doc -->
313 * @generated
314 * @ordered
315 */
316 int SPACECRAFT_OPERATION_COUNT = COMMUNICATING_ELEMENT_OPERATION_COUNT + 0;
317
318 /**
319 * The meta object id for the '{@link satellite.impl.CommSubsystemImpl <em>Comm Subsystem</em>}' class.
320 * <!-- begin-user-doc -->
321 * <!-- end-user-doc -->
322 * @see satellite.impl.CommSubsystemImpl
323 * @see satellite.impl.SatellitePackageImpl#getCommSubsystem()
324 * @generated
325 */
326 int COMM_SUBSYSTEM = 5;
327
328 /**
329 * The feature id for the '<em><b>Band</b></em>' attribute.
330 * <!-- begin-user-doc -->
331 * <!-- end-user-doc -->
332 * @generated
333 * @ordered
334 */
335 int COMM_SUBSYSTEM__BAND = 0;
336
337 /**
338 * The feature id for the '<em><b>Gain</b></em>' attribute.
339 * <!-- begin-user-doc -->
340 * <!-- end-user-doc -->
341 * @generated
342 * @ordered
343 */
344 int COMM_SUBSYSTEM__GAIN = 1;
345
346 /**
347 * The number of structural features of the '<em>Comm Subsystem</em>' class.
348 * <!-- begin-user-doc -->
349 * <!-- end-user-doc -->
350 * @generated
351 * @ordered
352 */
353 int COMM_SUBSYSTEM_FEATURE_COUNT = 2;
354
355 /**
356 * The number of operations of the '<em>Comm Subsystem</em>' class.
357 * <!-- begin-user-doc -->
358 * <!-- end-user-doc -->
359 * @generated
360 * @ordered
361 */
362 int COMM_SUBSYSTEM_OPERATION_COUNT = 0;
363
364 /**
365 * The meta object id for the '{@link satellite.impl.DirectedCommunicationLinkImpl <em>Directed Communication Link</em>}' class.
366 * <!-- begin-user-doc -->
367 * <!-- end-user-doc -->
368 * @see satellite.impl.DirectedCommunicationLinkImpl
369 * @see satellite.impl.SatellitePackageImpl#getDirectedCommunicationLink()
370 * @generated
371 */
372 int DIRECTED_COMMUNICATION_LINK = 6;
373
374 /**
375 * The feature id for the '<em><b>Source</b></em>' reference.
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 * @ordered
380 */
381 int DIRECTED_COMMUNICATION_LINK__SOURCE = 0;
382
383 /**
384 * The feature id for the '<em><b>Target</b></em>' reference.
385 * <!-- begin-user-doc -->
386 * <!-- end-user-doc -->
387 * @generated
388 * @ordered
389 */
390 int DIRECTED_COMMUNICATION_LINK__TARGET = 1;
391
392 /**
393 * The number of structural features of the '<em>Directed Communication Link</em>' class.
394 * <!-- begin-user-doc -->
395 * <!-- end-user-doc -->
396 * @generated
397 * @ordered
398 */
399 int DIRECTED_COMMUNICATION_LINK_FEATURE_COUNT = 2;
400
401 /**
402 * The number of operations of the '<em>Directed Communication Link</em>' class.
403 * <!-- begin-user-doc -->
404 * <!-- end-user-doc -->
405 * @generated
406 * @ordered
407 */
408 int DIRECTED_COMMUNICATION_LINK_OPERATION_COUNT = 0;
409
410 /**
411 * The meta object id for the '{@link satellite.impl.PayloadImpl <em>Payload</em>}' class.
412 * <!-- begin-user-doc -->
413 * <!-- end-user-doc -->
414 * @see satellite.impl.PayloadImpl
415 * @see satellite.impl.SatellitePackageImpl#getPayload()
416 * @generated
417 */
418 int PAYLOAD = 7;
419
420 /**
421 * The number of structural features of the '<em>Payload</em>' class.
422 * <!-- begin-user-doc -->
423 * <!-- end-user-doc -->
424 * @generated
425 * @ordered
426 */
427 int PAYLOAD_FEATURE_COUNT = 0;
428
429 /**
430 * The number of operations of the '<em>Payload</em>' class.
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @generated
434 * @ordered
435 */
436 int PAYLOAD_OPERATION_COUNT = 0;
437
438 /**
439 * The meta object id for the '{@link satellite.impl.InterferometryPayloadImpl <em>Interferometry Payload</em>}' class.
440 * <!-- begin-user-doc -->
441 * <!-- end-user-doc -->
442 * @see satellite.impl.InterferometryPayloadImpl
443 * @see satellite.impl.SatellitePackageImpl#getInterferometryPayload()
444 * @generated
445 */
446 int INTERFEROMETRY_PAYLOAD = 8;
447
448 /**
449 * The number of structural features of the '<em>Interferometry Payload</em>' class.
450 * <!-- begin-user-doc -->
451 * <!-- end-user-doc -->
452 * @generated
453 * @ordered
454 */
455 int INTERFEROMETRY_PAYLOAD_FEATURE_COUNT = PAYLOAD_FEATURE_COUNT + 0;
456
457 /**
458 * The number of operations of the '<em>Interferometry Payload</em>' class.
459 * <!-- begin-user-doc -->
460 * <!-- end-user-doc -->
461 * @generated
462 * @ordered
463 */
464 int INTERFEROMETRY_PAYLOAD_OPERATION_COUNT = PAYLOAD_OPERATION_COUNT + 0;
465
466 /**
467 * The meta object id for the '{@link satellite.impl.CubeSat3UImpl <em>Cube Sat3 U</em>}' class.
468 * <!-- begin-user-doc -->
469 * <!-- end-user-doc -->
470 * @see satellite.impl.CubeSat3UImpl
471 * @see satellite.impl.SatellitePackageImpl#getCubeSat3U()
472 * @generated
473 */
474 int CUBE_SAT3_U = 9;
475
476 /**
477 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
478 * <!-- begin-user-doc -->
479 * <!-- end-user-doc -->
480 * @generated
481 * @ordered
482 */
483 int CUBE_SAT3_U__COMM_SUBSYSTEM = SPACECRAFT__COMM_SUBSYSTEM;
484
485 /**
486 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @generated
490 * @ordered
491 */
492 int CUBE_SAT3_U__COMMUNICATION_LINK = SPACECRAFT__COMMUNICATION_LINK;
493
494 /**
495 * The feature id for the '<em><b>Payload</b></em>' containment reference.
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @generated
499 * @ordered
500 */
501 int CUBE_SAT3_U__PAYLOAD = SPACECRAFT__PAYLOAD;
502
503 /**
504 * The feature id for the '<em><b>Kind</b></em>' attribute.
505 * <!-- begin-user-doc -->
506 * <!-- end-user-doc -->
507 * @generated
508 * @ordered
509 */
510 int CUBE_SAT3_U__KIND = SPACECRAFT__KIND;
511
512 /**
513 * The number of structural features of the '<em>Cube Sat3 U</em>' class.
514 * <!-- begin-user-doc -->
515 * <!-- end-user-doc -->
516 * @generated
517 * @ordered
518 */
519 int CUBE_SAT3_U_FEATURE_COUNT = SPACECRAFT_FEATURE_COUNT + 0;
520
521 /**
522 * The number of operations of the '<em>Cube Sat3 U</em>' class.
523 * <!-- begin-user-doc -->
524 * <!-- end-user-doc -->
525 * @generated
526 * @ordered
527 */
528 int CUBE_SAT3_U_OPERATION_COUNT = SPACECRAFT_OPERATION_COUNT + 0;
529
530 /**
531 * The meta object id for the '{@link satellite.impl.CubeSat6UImpl <em>Cube Sat6 U</em>}' class.
532 * <!-- begin-user-doc -->
533 * <!-- end-user-doc -->
534 * @see satellite.impl.CubeSat6UImpl
535 * @see satellite.impl.SatellitePackageImpl#getCubeSat6U()
536 * @generated
537 */
538 int CUBE_SAT6_U = 10;
539
540 /**
541 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
542 * <!-- begin-user-doc -->
543 * <!-- end-user-doc -->
544 * @generated
545 * @ordered
546 */
547 int CUBE_SAT6_U__COMM_SUBSYSTEM = SPACECRAFT__COMM_SUBSYSTEM;
548
549 /**
550 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
551 * <!-- begin-user-doc -->
552 * <!-- end-user-doc -->
553 * @generated
554 * @ordered
555 */
556 int CUBE_SAT6_U__COMMUNICATION_LINK = SPACECRAFT__COMMUNICATION_LINK;
557
558 /**
559 * The feature id for the '<em><b>Payload</b></em>' containment reference.
560 * <!-- begin-user-doc -->
561 * <!-- end-user-doc -->
562 * @generated
563 * @ordered
564 */
565 int CUBE_SAT6_U__PAYLOAD = SPACECRAFT__PAYLOAD;
566
567 /**
568 * The feature id for the '<em><b>Kind</b></em>' attribute.
569 * <!-- begin-user-doc -->
570 * <!-- end-user-doc -->
571 * @generated
572 * @ordered
573 */
574 int CUBE_SAT6_U__KIND = SPACECRAFT__KIND;
575
576 /**
577 * The number of structural features of the '<em>Cube Sat6 U</em>' class.
578 * <!-- begin-user-doc -->
579 * <!-- end-user-doc -->
580 * @generated
581 * @ordered
582 */
583 int CUBE_SAT6_U_FEATURE_COUNT = SPACECRAFT_FEATURE_COUNT + 0;
584
585 /**
586 * The number of operations of the '<em>Cube Sat6 U</em>' class.
587 * <!-- begin-user-doc -->
588 * <!-- end-user-doc -->
589 * @generated
590 * @ordered
591 */
592 int CUBE_SAT6_U_OPERATION_COUNT = SPACECRAFT_OPERATION_COUNT + 0;
593
594 /**
595 * The meta object id for the '{@link satellite.impl.SmallSatImpl <em>Small Sat</em>}' class.
596 * <!-- begin-user-doc -->
597 * <!-- end-user-doc -->
598 * @see satellite.impl.SmallSatImpl
599 * @see satellite.impl.SatellitePackageImpl#getSmallSat()
600 * @generated
601 */
602 int SMALL_SAT = 11;
603
604 /**
605 * The feature id for the '<em><b>Comm Subsystem</b></em>' containment reference list.
606 * <!-- begin-user-doc -->
607 * <!-- end-user-doc -->
608 * @generated
609 * @ordered
610 */
611 int SMALL_SAT__COMM_SUBSYSTEM = SPACECRAFT__COMM_SUBSYSTEM;
612
613 /**
614 * The feature id for the '<em><b>Communication Link</b></em>' containment reference.
615 * <!-- begin-user-doc -->
616 * <!-- end-user-doc -->
617 * @generated
618 * @ordered
619 */
620 int SMALL_SAT__COMMUNICATION_LINK = SPACECRAFT__COMMUNICATION_LINK;
621
622 /**
623 * The feature id for the '<em><b>Payload</b></em>' containment reference.
624 * <!-- begin-user-doc -->
625 * <!-- end-user-doc -->
626 * @generated
627 * @ordered
628 */
629 int SMALL_SAT__PAYLOAD = SPACECRAFT__PAYLOAD;
630
631 /**
632 * The feature id for the '<em><b>Kind</b></em>' attribute.
633 * <!-- begin-user-doc -->
634 * <!-- end-user-doc -->
635 * @generated
636 * @ordered
637 */
638 int SMALL_SAT__KIND = SPACECRAFT__KIND;
639
640 /**
641 * The number of structural features of the '<em>Small Sat</em>' class.
642 * <!-- begin-user-doc -->
643 * <!-- end-user-doc -->
644 * @generated
645 * @ordered
646 */
647 int SMALL_SAT_FEATURE_COUNT = SPACECRAFT_FEATURE_COUNT + 0;
648
649 /**
650 * The number of operations of the '<em>Small Sat</em>' class.
651 * <!-- begin-user-doc -->
652 * <!-- end-user-doc -->
653 * @generated
654 * @ordered
655 */
656 int SMALL_SAT_OPERATION_COUNT = SPACECRAFT_OPERATION_COUNT + 0;
657
658 /**
659 * The meta object id for the '{@link satellite.TransceiverBand <em>Transceiver Band</em>}' enum.
660 * <!-- begin-user-doc -->
661 * <!-- end-user-doc -->
662 * @see satellite.TransceiverBand
663 * @see satellite.impl.SatellitePackageImpl#getTransceiverBand()
664 * @generated
665 */
666 int TRANSCEIVER_BAND = 12;
667
668 /**
669 * The meta object id for the '{@link satellite.AntennaGain <em>Antenna Gain</em>}' enum.
670 * <!-- begin-user-doc -->
671 * <!-- end-user-doc -->
672 * @see satellite.AntennaGain
673 * @see satellite.impl.SatellitePackageImpl#getAntennaGain()
674 * @generated
675 */
676 int ANTENNA_GAIN = 13;
677
678 /**
679 * The meta object id for the '{@link satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
680 * <!-- begin-user-doc -->
681 * <!-- end-user-doc -->
682 * @see satellite.SpacecraftKind
683 * @see satellite.impl.SatellitePackageImpl#getSpacecraftKind()
684 * @generated
685 */
686 int SPACECRAFT_KIND = 14;
687
688 /**
689 * Returns the meta object for class '{@link satellite.ConstellationMission <em>Constellation Mission</em>}'.
690 * <!-- begin-user-doc -->
691 * <!-- end-user-doc -->
692 * @return the meta object for class '<em>Constellation Mission</em>'.
693 * @see satellite.ConstellationMission
694 * @generated
695 */
696 EClass getConstellationMission();
697
698 /**
699 * Returns the meta object for the containment reference '{@link satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}'.
700 * <!-- begin-user-doc -->
701 * <!-- end-user-doc -->
702 * @return the meta object for the containment reference '<em>Ground Station Network</em>'.
703 * @see satellite.ConstellationMission#getGroundStationNetwork()
704 * @see #getConstellationMission()
705 * @generated
706 */
707 EReference getConstellationMission_GroundStationNetwork();
708
709 /**
710 * Returns the meta object for the containment reference list '{@link satellite.ConstellationMission#getSpacecraft <em>Spacecraft</em>}'.
711 * <!-- begin-user-doc -->
712 * <!-- end-user-doc -->
713 * @return the meta object for the containment reference list '<em>Spacecraft</em>'.
714 * @see satellite.ConstellationMission#getSpacecraft()
715 * @see #getConstellationMission()
716 * @generated
717 */
718 EReference getConstellationMission_Spacecraft();
719
720 /**
721 * Returns the meta object for class '{@link satellite.InterferometryMission <em>Interferometry Mission</em>}'.
722 * <!-- begin-user-doc -->
723 * <!-- end-user-doc -->
724 * @return the meta object for class '<em>Interferometry Mission</em>'.
725 * @see satellite.InterferometryMission
726 * @generated
727 */
728 EClass getInterferometryMission();
729
730 /**
731 * Returns the meta object for the attribute '{@link satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}'.
732 * <!-- begin-user-doc -->
733 * <!-- end-user-doc -->
734 * @return the meta object for the attribute '<em>Observation Time</em>'.
735 * @see satellite.InterferometryMission#getObservationTime()
736 * @see #getInterferometryMission()
737 * @generated
738 */
739 EAttribute getInterferometryMission_ObservationTime();
740
741 /**
742 * Returns the meta object for class '{@link satellite.CommunicatingElement <em>Communicating Element</em>}'.
743 * <!-- begin-user-doc -->
744 * <!-- end-user-doc -->
745 * @return the meta object for class '<em>Communicating Element</em>'.
746 * @see satellite.CommunicatingElement
747 * @generated
748 */
749 EClass getCommunicatingElement();
750
751 /**
752 * Returns the meta object for the containment reference list '{@link satellite.CommunicatingElement#getCommSubsystem <em>Comm Subsystem</em>}'.
753 * <!-- begin-user-doc -->
754 * <!-- end-user-doc -->
755 * @return the meta object for the containment reference list '<em>Comm Subsystem</em>'.
756 * @see satellite.CommunicatingElement#getCommSubsystem()
757 * @see #getCommunicatingElement()
758 * @generated
759 */
760 EReference getCommunicatingElement_CommSubsystem();
761
762 /**
763 * Returns the meta object for the containment reference '{@link satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}'.
764 * <!-- begin-user-doc -->
765 * <!-- end-user-doc -->
766 * @return the meta object for the containment reference '<em>Communication Link</em>'.
767 * @see satellite.CommunicatingElement#getCommunicationLink()
768 * @see #getCommunicatingElement()
769 * @generated
770 */
771 EReference getCommunicatingElement_CommunicationLink();
772
773 /**
774 * Returns the meta object for class '{@link satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
775 * <!-- begin-user-doc -->
776 * <!-- end-user-doc -->
777 * @return the meta object for class '<em>Ground Station Network</em>'.
778 * @see satellite.GroundStationNetwork
779 * @generated
780 */
781 EClass getGroundStationNetwork();
782
783 /**
784 * Returns the meta object for class '{@link satellite.Spacecraft <em>Spacecraft</em>}'.
785 * <!-- begin-user-doc -->
786 * <!-- end-user-doc -->
787 * @return the meta object for class '<em>Spacecraft</em>'.
788 * @see satellite.Spacecraft
789 * @generated
790 */
791 EClass getSpacecraft();
792
793 /**
794 * Returns the meta object for the containment reference '{@link satellite.Spacecraft#getPayload <em>Payload</em>}'.
795 * <!-- begin-user-doc -->
796 * <!-- end-user-doc -->
797 * @return the meta object for the containment reference '<em>Payload</em>'.
798 * @see satellite.Spacecraft#getPayload()
799 * @see #getSpacecraft()
800 * @generated
801 */
802 EReference getSpacecraft_Payload();
803
804 /**
805 * Returns the meta object for the attribute '{@link satellite.Spacecraft#getKind <em>Kind</em>}'.
806 * <!-- begin-user-doc -->
807 * <!-- end-user-doc -->
808 * @return the meta object for the attribute '<em>Kind</em>'.
809 * @see satellite.Spacecraft#getKind()
810 * @see #getSpacecraft()
811 * @generated
812 */
813 EAttribute getSpacecraft_Kind();
814
815 /**
816 * Returns the meta object for class '{@link satellite.CommSubsystem <em>Comm Subsystem</em>}'.
817 * <!-- begin-user-doc -->
818 * <!-- end-user-doc -->
819 * @return the meta object for class '<em>Comm Subsystem</em>'.
820 * @see satellite.CommSubsystem
821 * @generated
822 */
823 EClass getCommSubsystem();
824
825 /**
826 * Returns the meta object for the attribute '{@link satellite.CommSubsystem#getBand <em>Band</em>}'.
827 * <!-- begin-user-doc -->
828 * <!-- end-user-doc -->
829 * @return the meta object for the attribute '<em>Band</em>'.
830 * @see satellite.CommSubsystem#getBand()
831 * @see #getCommSubsystem()
832 * @generated
833 */
834 EAttribute getCommSubsystem_Band();
835
836 /**
837 * Returns the meta object for the attribute '{@link satellite.CommSubsystem#getGain <em>Gain</em>}'.
838 * <!-- begin-user-doc -->
839 * <!-- end-user-doc -->
840 * @return the meta object for the attribute '<em>Gain</em>'.
841 * @see satellite.CommSubsystem#getGain()
842 * @see #getCommSubsystem()
843 * @generated
844 */
845 EAttribute getCommSubsystem_Gain();
846
847 /**
848 * Returns the meta object for class '{@link satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
849 * <!-- begin-user-doc -->
850 * <!-- end-user-doc -->
851 * @return the meta object for class '<em>Directed Communication Link</em>'.
852 * @see satellite.DirectedCommunicationLink
853 * @generated
854 */
855 EClass getDirectedCommunicationLink();
856
857 /**
858 * Returns the meta object for the reference '{@link satellite.DirectedCommunicationLink#getSource <em>Source</em>}'.
859 * <!-- begin-user-doc -->
860 * <!-- end-user-doc -->
861 * @return the meta object for the reference '<em>Source</em>'.
862 * @see satellite.DirectedCommunicationLink#getSource()
863 * @see #getDirectedCommunicationLink()
864 * @generated
865 */
866 EReference getDirectedCommunicationLink_Source();
867
868 /**
869 * Returns the meta object for the reference '{@link satellite.DirectedCommunicationLink#getTarget <em>Target</em>}'.
870 * <!-- begin-user-doc -->
871 * <!-- end-user-doc -->
872 * @return the meta object for the reference '<em>Target</em>'.
873 * @see satellite.DirectedCommunicationLink#getTarget()
874 * @see #getDirectedCommunicationLink()
875 * @generated
876 */
877 EReference getDirectedCommunicationLink_Target();
878
879 /**
880 * Returns the meta object for class '{@link satellite.Payload <em>Payload</em>}'.
881 * <!-- begin-user-doc -->
882 * <!-- end-user-doc -->
883 * @return the meta object for class '<em>Payload</em>'.
884 * @see satellite.Payload
885 * @generated
886 */
887 EClass getPayload();
888
889 /**
890 * Returns the meta object for class '{@link satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
891 * <!-- begin-user-doc -->
892 * <!-- end-user-doc -->
893 * @return the meta object for class '<em>Interferometry Payload</em>'.
894 * @see satellite.InterferometryPayload
895 * @generated
896 */
897 EClass getInterferometryPayload();
898
899 /**
900 * Returns the meta object for class '{@link satellite.CubeSat3U <em>Cube Sat3 U</em>}'.
901 * <!-- begin-user-doc -->
902 * <!-- end-user-doc -->
903 * @return the meta object for class '<em>Cube Sat3 U</em>'.
904 * @see satellite.CubeSat3U
905 * @generated
906 */
907 EClass getCubeSat3U();
908
909 /**
910 * Returns the meta object for class '{@link satellite.CubeSat6U <em>Cube Sat6 U</em>}'.
911 * <!-- begin-user-doc -->
912 * <!-- end-user-doc -->
913 * @return the meta object for class '<em>Cube Sat6 U</em>'.
914 * @see satellite.CubeSat6U
915 * @generated
916 */
917 EClass getCubeSat6U();
918
919 /**
920 * Returns the meta object for class '{@link satellite.SmallSat <em>Small Sat</em>}'.
921 * <!-- begin-user-doc -->
922 * <!-- end-user-doc -->
923 * @return the meta object for class '<em>Small Sat</em>'.
924 * @see satellite.SmallSat
925 * @generated
926 */
927 EClass getSmallSat();
928
929 /**
930 * Returns the meta object for enum '{@link satellite.TransceiverBand <em>Transceiver Band</em>}'.
931 * <!-- begin-user-doc -->
932 * <!-- end-user-doc -->
933 * @return the meta object for enum '<em>Transceiver Band</em>'.
934 * @see satellite.TransceiverBand
935 * @generated
936 */
937 EEnum getTransceiverBand();
938
939 /**
940 * Returns the meta object for enum '{@link satellite.AntennaGain <em>Antenna Gain</em>}'.
941 * <!-- begin-user-doc -->
942 * <!-- end-user-doc -->
943 * @return the meta object for enum '<em>Antenna Gain</em>'.
944 * @see satellite.AntennaGain
945 * @generated
946 */
947 EEnum getAntennaGain();
948
949 /**
950 * Returns the meta object for enum '{@link satellite.SpacecraftKind <em>Spacecraft Kind</em>}'.
951 * <!-- begin-user-doc -->
952 * <!-- end-user-doc -->
953 * @return the meta object for enum '<em>Spacecraft Kind</em>'.
954 * @see satellite.SpacecraftKind
955 * @generated
956 */
957 EEnum getSpacecraftKind();
958
959 /**
960 * Returns the factory that creates the instances of the model.
961 * <!-- begin-user-doc -->
962 * <!-- end-user-doc -->
963 * @return the factory that creates the instances of the model.
964 * @generated
965 */
966 SatelliteFactory getSatelliteFactory();
967
968 /**
969 * <!-- begin-user-doc -->
970 * Defines literals for the meta objects that represent
971 * <ul>
972 * <li>each class,</li>
973 * <li>each feature of each class,</li>
974 * <li>each operation of each class,</li>
975 * <li>each enum,</li>
976 * <li>and each data type</li>
977 * </ul>
978 * <!-- end-user-doc -->
979 * @generated
980 */
981 interface Literals {
982 /**
983 * The meta object literal for the '{@link satellite.impl.ConstellationMissionImpl <em>Constellation Mission</em>}' class.
984 * <!-- begin-user-doc -->
985 * <!-- end-user-doc -->
986 * @see satellite.impl.ConstellationMissionImpl
987 * @see satellite.impl.SatellitePackageImpl#getConstellationMission()
988 * @generated
989 */
990 EClass CONSTELLATION_MISSION = eINSTANCE.getConstellationMission();
991
992 /**
993 * The meta object literal for the '<em><b>Ground Station Network</b></em>' containment reference feature.
994 * <!-- begin-user-doc -->
995 * <!-- end-user-doc -->
996 * @generated
997 */
998 EReference CONSTELLATION_MISSION__GROUND_STATION_NETWORK = eINSTANCE
999 .getConstellationMission_GroundStationNetwork();
1000
1001 /**
1002 * The meta object literal for the '<em><b>Spacecraft</b></em>' containment reference list feature.
1003 * <!-- begin-user-doc -->
1004 * <!-- end-user-doc -->
1005 * @generated
1006 */
1007 EReference CONSTELLATION_MISSION__SPACECRAFT = eINSTANCE.getConstellationMission_Spacecraft();
1008
1009 /**
1010 * The meta object literal for the '{@link satellite.impl.InterferometryMissionImpl <em>Interferometry Mission</em>}' class.
1011 * <!-- begin-user-doc -->
1012 * <!-- end-user-doc -->
1013 * @see satellite.impl.InterferometryMissionImpl
1014 * @see satellite.impl.SatellitePackageImpl#getInterferometryMission()
1015 * @generated
1016 */
1017 EClass INTERFEROMETRY_MISSION = eINSTANCE.getInterferometryMission();
1018
1019 /**
1020 * The meta object literal for the '<em><b>Observation Time</b></em>' attribute feature.
1021 * <!-- begin-user-doc -->
1022 * <!-- end-user-doc -->
1023 * @generated
1024 */
1025 EAttribute INTERFEROMETRY_MISSION__OBSERVATION_TIME = eINSTANCE.getInterferometryMission_ObservationTime();
1026
1027 /**
1028 * The meta object literal for the '{@link satellite.impl.CommunicatingElementImpl <em>Communicating Element</em>}' class.
1029 * <!-- begin-user-doc -->
1030 * <!-- end-user-doc -->
1031 * @see satellite.impl.CommunicatingElementImpl
1032 * @see satellite.impl.SatellitePackageImpl#getCommunicatingElement()
1033 * @generated
1034 */
1035 EClass COMMUNICATING_ELEMENT = eINSTANCE.getCommunicatingElement();
1036
1037 /**
1038 * The meta object literal for the '<em><b>Comm Subsystem</b></em>' containment reference list feature.
1039 * <!-- begin-user-doc -->
1040 * <!-- end-user-doc -->
1041 * @generated
1042 */
1043 EReference COMMUNICATING_ELEMENT__COMM_SUBSYSTEM = eINSTANCE.getCommunicatingElement_CommSubsystem();
1044
1045 /**
1046 * The meta object literal for the '<em><b>Communication Link</b></em>' containment reference feature.
1047 * <!-- begin-user-doc -->
1048 * <!-- end-user-doc -->
1049 * @generated
1050 */
1051 EReference COMMUNICATING_ELEMENT__COMMUNICATION_LINK = eINSTANCE.getCommunicatingElement_CommunicationLink();
1052
1053 /**
1054 * The meta object literal for the '{@link satellite.impl.GroundStationNetworkImpl <em>Ground Station Network</em>}' class.
1055 * <!-- begin-user-doc -->
1056 * <!-- end-user-doc -->
1057 * @see satellite.impl.GroundStationNetworkImpl
1058 * @see satellite.impl.SatellitePackageImpl#getGroundStationNetwork()
1059 * @generated
1060 */
1061 EClass GROUND_STATION_NETWORK = eINSTANCE.getGroundStationNetwork();
1062
1063 /**
1064 * The meta object literal for the '{@link satellite.impl.SpacecraftImpl <em>Spacecraft</em>}' class.
1065 * <!-- begin-user-doc -->
1066 * <!-- end-user-doc -->
1067 * @see satellite.impl.SpacecraftImpl
1068 * @see satellite.impl.SatellitePackageImpl#getSpacecraft()
1069 * @generated
1070 */
1071 EClass SPACECRAFT = eINSTANCE.getSpacecraft();
1072
1073 /**
1074 * The meta object literal for the '<em><b>Payload</b></em>' containment reference feature.
1075 * <!-- begin-user-doc -->
1076 * <!-- end-user-doc -->
1077 * @generated
1078 */
1079 EReference SPACECRAFT__PAYLOAD = eINSTANCE.getSpacecraft_Payload();
1080
1081 /**
1082 * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
1083 * <!-- begin-user-doc -->
1084 * <!-- end-user-doc -->
1085 * @generated
1086 */
1087 EAttribute SPACECRAFT__KIND = eINSTANCE.getSpacecraft_Kind();
1088
1089 /**
1090 * The meta object literal for the '{@link satellite.impl.CommSubsystemImpl <em>Comm Subsystem</em>}' class.
1091 * <!-- begin-user-doc -->
1092 * <!-- end-user-doc -->
1093 * @see satellite.impl.CommSubsystemImpl
1094 * @see satellite.impl.SatellitePackageImpl#getCommSubsystem()
1095 * @generated
1096 */
1097 EClass COMM_SUBSYSTEM = eINSTANCE.getCommSubsystem();
1098
1099 /**
1100 * The meta object literal for the '<em><b>Band</b></em>' attribute feature.
1101 * <!-- begin-user-doc -->
1102 * <!-- end-user-doc -->
1103 * @generated
1104 */
1105 EAttribute COMM_SUBSYSTEM__BAND = eINSTANCE.getCommSubsystem_Band();
1106
1107 /**
1108 * The meta object literal for the '<em><b>Gain</b></em>' attribute feature.
1109 * <!-- begin-user-doc -->
1110 * <!-- end-user-doc -->
1111 * @generated
1112 */
1113 EAttribute COMM_SUBSYSTEM__GAIN = eINSTANCE.getCommSubsystem_Gain();
1114
1115 /**
1116 * The meta object literal for the '{@link satellite.impl.DirectedCommunicationLinkImpl <em>Directed Communication Link</em>}' class.
1117 * <!-- begin-user-doc -->
1118 * <!-- end-user-doc -->
1119 * @see satellite.impl.DirectedCommunicationLinkImpl
1120 * @see satellite.impl.SatellitePackageImpl#getDirectedCommunicationLink()
1121 * @generated
1122 */
1123 EClass DIRECTED_COMMUNICATION_LINK = eINSTANCE.getDirectedCommunicationLink();
1124
1125 /**
1126 * The meta object literal for the '<em><b>Source</b></em>' reference feature.
1127 * <!-- begin-user-doc -->
1128 * <!-- end-user-doc -->
1129 * @generated
1130 */
1131 EReference DIRECTED_COMMUNICATION_LINK__SOURCE = eINSTANCE.getDirectedCommunicationLink_Source();
1132
1133 /**
1134 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
1135 * <!-- begin-user-doc -->
1136 * <!-- end-user-doc -->
1137 * @generated
1138 */
1139 EReference DIRECTED_COMMUNICATION_LINK__TARGET = eINSTANCE.getDirectedCommunicationLink_Target();
1140
1141 /**
1142 * The meta object literal for the '{@link satellite.impl.PayloadImpl <em>Payload</em>}' class.
1143 * <!-- begin-user-doc -->
1144 * <!-- end-user-doc -->
1145 * @see satellite.impl.PayloadImpl
1146 * @see satellite.impl.SatellitePackageImpl#getPayload()
1147 * @generated
1148 */
1149 EClass PAYLOAD = eINSTANCE.getPayload();
1150
1151 /**
1152 * The meta object literal for the '{@link satellite.impl.InterferometryPayloadImpl <em>Interferometry Payload</em>}' class.
1153 * <!-- begin-user-doc -->
1154 * <!-- end-user-doc -->
1155 * @see satellite.impl.InterferometryPayloadImpl
1156 * @see satellite.impl.SatellitePackageImpl#getInterferometryPayload()
1157 * @generated
1158 */
1159 EClass INTERFEROMETRY_PAYLOAD = eINSTANCE.getInterferometryPayload();
1160
1161 /**
1162 * The meta object literal for the '{@link satellite.impl.CubeSat3UImpl <em>Cube Sat3 U</em>}' class.
1163 * <!-- begin-user-doc -->
1164 * <!-- end-user-doc -->
1165 * @see satellite.impl.CubeSat3UImpl
1166 * @see satellite.impl.SatellitePackageImpl#getCubeSat3U()
1167 * @generated
1168 */
1169 EClass CUBE_SAT3_U = eINSTANCE.getCubeSat3U();
1170
1171 /**
1172 * The meta object literal for the '{@link satellite.impl.CubeSat6UImpl <em>Cube Sat6 U</em>}' class.
1173 * <!-- begin-user-doc -->
1174 * <!-- end-user-doc -->
1175 * @see satellite.impl.CubeSat6UImpl
1176 * @see satellite.impl.SatellitePackageImpl#getCubeSat6U()
1177 * @generated
1178 */
1179 EClass CUBE_SAT6_U = eINSTANCE.getCubeSat6U();
1180
1181 /**
1182 * The meta object literal for the '{@link satellite.impl.SmallSatImpl <em>Small Sat</em>}' class.
1183 * <!-- begin-user-doc -->
1184 * <!-- end-user-doc -->
1185 * @see satellite.impl.SmallSatImpl
1186 * @see satellite.impl.SatellitePackageImpl#getSmallSat()
1187 * @generated
1188 */
1189 EClass SMALL_SAT = eINSTANCE.getSmallSat();
1190
1191 /**
1192 * The meta object literal for the '{@link satellite.TransceiverBand <em>Transceiver Band</em>}' enum.
1193 * <!-- begin-user-doc -->
1194 * <!-- end-user-doc -->
1195 * @see satellite.TransceiverBand
1196 * @see satellite.impl.SatellitePackageImpl#getTransceiverBand()
1197 * @generated
1198 */
1199 EEnum TRANSCEIVER_BAND = eINSTANCE.getTransceiverBand();
1200
1201 /**
1202 * The meta object literal for the '{@link satellite.AntennaGain <em>Antenna Gain</em>}' enum.
1203 * <!-- begin-user-doc -->
1204 * <!-- end-user-doc -->
1205 * @see satellite.AntennaGain
1206 * @see satellite.impl.SatellitePackageImpl#getAntennaGain()
1207 * @generated
1208 */
1209 EEnum ANTENNA_GAIN = eINSTANCE.getAntennaGain();
1210
1211 /**
1212 * The meta object literal for the '{@link satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
1213 * <!-- begin-user-doc -->
1214 * <!-- end-user-doc -->
1215 * @see satellite.SpacecraftKind
1216 * @see satellite.impl.SatellitePackageImpl#getSpacecraftKind()
1217 * @generated
1218 */
1219 EEnum SPACECRAFT_KIND = eINSTANCE.getSpacecraftKind();
1220
1221 }
1222
1223} //SatellitePackage
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SmallSat.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SmallSat.java
new file mode 100644
index 00000000..230958f6
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SmallSat.java
@@ -0,0 +1,16 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Small Sat</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 *
11 * @see satellite.SatellitePackage#getSmallSat()
12 * @model
13 * @generated
14 */
15public interface SmallSat extends Spacecraft {
16} // SmallSat
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Spacecraft.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Spacecraft.java
new file mode 100644
index 00000000..d8775572
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/Spacecraft.java
@@ -0,0 +1,67 @@
1/**
2 */
3package satellite;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Spacecraft</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 * <p>
11 * The following features are supported:
12 * </p>
13 * <ul>
14 * <li>{@link satellite.Spacecraft#getPayload <em>Payload</em>}</li>
15 * <li>{@link satellite.Spacecraft#getKind <em>Kind</em>}</li>
16 * </ul>
17 *
18 * @see satellite.SatellitePackage#getSpacecraft()
19 * @model abstract="true"
20 * @generated
21 */
22public interface Spacecraft extends CommunicatingElement {
23 /**
24 * Returns the value of the '<em><b>Payload</b></em>' containment reference.
25 * <!-- begin-user-doc -->
26 * <p>
27 * If the meaning of the '<em>Payload</em>' containment reference isn't clear,
28 * there really should be more of a description here...
29 * </p>
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Payload</em>' containment reference.
32 * @see #setPayload(Payload)
33 * @see satellite.SatellitePackage#getSpacecraft_Payload()
34 * @model containment="true"
35 * @generated
36 */
37 Payload getPayload();
38
39 /**
40 * Sets the value of the '{@link satellite.Spacecraft#getPayload <em>Payload</em>}' containment reference.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Payload</em>' containment reference.
44 * @see #getPayload()
45 * @generated
46 */
47 void setPayload(Payload value);
48
49 /**
50 * Returns the value of the '<em><b>Kind</b></em>' attribute.
51 * The literals are from the enumeration {@link satellite.SpacecraftKind}.
52 * <!-- begin-user-doc -->
53 * <p>
54 * If the meaning of the '<em>Kind</em>' attribute isn't clear,
55 * there really should be more of a description here...
56 * </p>
57 * <!-- end-user-doc -->
58 * @return the value of the '<em>Kind</em>' attribute.
59 * @see satellite.SpacecraftKind
60 * @see satellite.SatellitePackage#getSpacecraft_Kind()
61 * @model required="true" transient="true" changeable="false" volatile="true" derived="true"
62 * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind'"
63 * @generated
64 */
65 SpacecraftKind getKind();
66
67} // Spacecraft
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SpacecraftKind.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SpacecraftKind.java
new file mode 100644
index 00000000..40bb432d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/SpacecraftKind.java
@@ -0,0 +1,242 @@
1/**
2 */
3package satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Spacecraft Kind</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see satellite.SatellitePackage#getSpacecraftKind()
17 * @model
18 * @generated
19 */
20public enum SpacecraftKind implements Enumerator {
21 /**
22 * The '<em><b>Cube Sat3 U</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #CUBE_SAT3_U_VALUE
26 * @generated
27 * @ordered
28 */
29 CUBE_SAT3_U(0, "CubeSat3U", "CubeSat3U"),
30
31 /**
32 * The '<em><b>Cube Sat6 U</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #CUBE_SAT6_U_VALUE
36 * @generated
37 * @ordered
38 */
39 CUBE_SAT6_U(1, "CubeSat6U", "CubeSat6U"),
40
41 /**
42 * The '<em><b>Small Sat</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #SMALL_SAT_VALUE
46 * @generated
47 * @ordered
48 */
49 SMALL_SAT(2, "SmallSat", "SmallSat");
50
51 /**
52 * The '<em><b>Cube Sat3 U</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>Cube Sat3 U</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #CUBE_SAT3_U
60 * @model name="CubeSat3U"
61 * @generated
62 * @ordered
63 */
64 public static final int CUBE_SAT3_U_VALUE = 0;
65
66 /**
67 * The '<em><b>Cube Sat6 U</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>Cube Sat6 U</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #CUBE_SAT6_U
75 * @model name="CubeSat6U"
76 * @generated
77 * @ordered
78 */
79 public static final int CUBE_SAT6_U_VALUE = 1;
80
81 /**
82 * The '<em><b>Small Sat</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>Small Sat</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #SMALL_SAT
90 * @model name="SmallSat"
91 * @generated
92 * @ordered
93 */
94 public static final int SMALL_SAT_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Spacecraft Kind</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final SpacecraftKind[] VALUES_ARRAY = new SpacecraftKind[] { CUBE_SAT3_U, CUBE_SAT6_U, SMALL_SAT, };
103
104 /**
105 * A public read-only list of all the '<em><b>Spacecraft Kind</b></em>' enumerators.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public static final List<SpacecraftKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
111
112 /**
113 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @param literal the literal.
117 * @return the matching enumerator or <code>null</code>.
118 * @generated
119 */
120 public static SpacecraftKind get(String literal) {
121 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
122 SpacecraftKind result = VALUES_ARRAY[i];
123 if (result.toString().equals(literal)) {
124 return result;
125 }
126 }
127 return null;
128 }
129
130 /**
131 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified name.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param name the name.
135 * @return the matching enumerator or <code>null</code>.
136 * @generated
137 */
138 public static SpacecraftKind getByName(String name) {
139 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
140 SpacecraftKind result = VALUES_ARRAY[i];
141 if (result.getName().equals(name)) {
142 return result;
143 }
144 }
145 return null;
146 }
147
148 /**
149 * Returns the '<em><b>Spacecraft Kind</b></em>' literal with the specified integer value.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @param value the integer value.
153 * @return the matching enumerator or <code>null</code>.
154 * @generated
155 */
156 public static SpacecraftKind get(int value) {
157 switch (value) {
158 case CUBE_SAT3_U_VALUE:
159 return CUBE_SAT3_U;
160 case CUBE_SAT6_U_VALUE:
161 return CUBE_SAT6_U;
162 case SMALL_SAT_VALUE:
163 return SMALL_SAT;
164 }
165 return null;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private final int value;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private final String name;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private final String literal;
188
189 /**
190 * Only this class can construct instances.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private SpacecraftKind(int value, String name, String literal) {
196 this.value = value;
197 this.name = name;
198 this.literal = literal;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public int getValue() {
208 return value;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public String getLiteral() {
228 return literal;
229 }
230
231 /**
232 * Returns the literal value of the enumerator, which is its string representation.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public String toString() {
239 return literal;
240 }
241
242} //SpacecraftKind
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/TransceiverBand.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/TransceiverBand.java
new file mode 100644
index 00000000..b6be75bf
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/TransceiverBand.java
@@ -0,0 +1,242 @@
1/**
2 */
3package satellite;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Transceiver Band</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see satellite.SatellitePackage#getTransceiverBand()
17 * @model
18 * @generated
19 */
20public enum TransceiverBand implements Enumerator {
21 /**
22 * The '<em><b>UHF</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #UHF_VALUE
26 * @generated
27 * @ordered
28 */
29 UHF(0, "UHF", "UHF"),
30
31 /**
32 * The '<em><b>X</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #X_VALUE
36 * @generated
37 * @ordered
38 */
39 X(1, "X", "X"),
40
41 /**
42 * The '<em><b>Ka</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #KA_VALUE
46 * @generated
47 * @ordered
48 */
49 KA(2, "Ka", "Ka");
50
51 /**
52 * The '<em><b>UHF</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>UHF</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #UHF
60 * @model
61 * @generated
62 * @ordered
63 */
64 public static final int UHF_VALUE = 0;
65
66 /**
67 * The '<em><b>X</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>X</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #X
75 * @model
76 * @generated
77 * @ordered
78 */
79 public static final int X_VALUE = 1;
80
81 /**
82 * The '<em><b>Ka</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>Ka</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #KA
90 * @model name="Ka"
91 * @generated
92 * @ordered
93 */
94 public static final int KA_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Transceiver Band</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final TransceiverBand[] VALUES_ARRAY = new TransceiverBand[] { UHF, X, KA, };
103
104 /**
105 * A public read-only list of all the '<em><b>Transceiver Band</b></em>' enumerators.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public static final List<TransceiverBand> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
111
112 /**
113 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @param literal the literal.
117 * @return the matching enumerator or <code>null</code>.
118 * @generated
119 */
120 public static TransceiverBand get(String literal) {
121 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
122 TransceiverBand result = VALUES_ARRAY[i];
123 if (result.toString().equals(literal)) {
124 return result;
125 }
126 }
127 return null;
128 }
129
130 /**
131 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified name.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param name the name.
135 * @return the matching enumerator or <code>null</code>.
136 * @generated
137 */
138 public static TransceiverBand getByName(String name) {
139 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
140 TransceiverBand result = VALUES_ARRAY[i];
141 if (result.getName().equals(name)) {
142 return result;
143 }
144 }
145 return null;
146 }
147
148 /**
149 * Returns the '<em><b>Transceiver Band</b></em>' literal with the specified integer value.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @param value the integer value.
153 * @return the matching enumerator or <code>null</code>.
154 * @generated
155 */
156 public static TransceiverBand get(int value) {
157 switch (value) {
158 case UHF_VALUE:
159 return UHF;
160 case X_VALUE:
161 return X;
162 case KA_VALUE:
163 return KA;
164 }
165 return null;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private final int value;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private final String name;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private final String literal;
188
189 /**
190 * Only this class can construct instances.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private TransceiverBand(int value, String name, String literal) {
196 this.value = value;
197 this.name = name;
198 this.literal = literal;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public int getValue() {
208 return value;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public String getLiteral() {
228 return literal;
229 }
230
231 /**
232 * Returns the literal value of the enumerator, which is its string representation.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public String toString() {
239 return literal;
240 }
241
242} //TransceiverBand
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommSubsystemImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommSubsystemImpl.java
new file mode 100644
index 00000000..cf8f1fe8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommSubsystemImpl.java
@@ -0,0 +1,226 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.common.notify.Notification;
6
7import org.eclipse.emf.ecore.EClass;
8
9import org.eclipse.emf.ecore.impl.ENotificationImpl;
10import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
11
12import satellite.AntennaGain;
13import satellite.CommSubsystem;
14import satellite.SatellitePackage;
15import satellite.TransceiverBand;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Comm Subsystem</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link satellite.impl.CommSubsystemImpl#getBand <em>Band</em>}</li>
26 * <li>{@link satellite.impl.CommSubsystemImpl#getGain <em>Gain</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class CommSubsystemImpl extends MinimalEObjectImpl.Container implements CommSubsystem {
32 /**
33 * The default value of the '{@link #getBand() <em>Band</em>}' attribute.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getBand()
37 * @generated
38 * @ordered
39 */
40 protected static final TransceiverBand BAND_EDEFAULT = TransceiverBand.UHF;
41
42 /**
43 * The cached value of the '{@link #getBand() <em>Band</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getBand()
47 * @generated
48 * @ordered
49 */
50 protected TransceiverBand band = BAND_EDEFAULT;
51
52 /**
53 * The default value of the '{@link #getGain() <em>Gain</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #getGain()
57 * @generated
58 * @ordered
59 */
60 protected static final AntennaGain GAIN_EDEFAULT = AntennaGain.LOW;
61
62 /**
63 * The cached value of the '{@link #getGain() <em>Gain</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #getGain()
67 * @generated
68 * @ordered
69 */
70 protected AntennaGain gain = GAIN_EDEFAULT;
71
72 /**
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 */
77 protected CommSubsystemImpl() {
78 super();
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 @Override
87 protected EClass eStaticClass() {
88 return SatellitePackage.Literals.COMM_SUBSYSTEM;
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public TransceiverBand getBand() {
98 return band;
99 }
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 @Override
107 public void setBand(TransceiverBand newBand) {
108 TransceiverBand oldBand = band;
109 band = newBand == null ? BAND_EDEFAULT : newBand;
110 if (eNotificationRequired())
111 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.COMM_SUBSYSTEM__BAND, oldBand,
112 band));
113 }
114
115 /**
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 */
120 @Override
121 public AntennaGain getGain() {
122 return gain;
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 @Override
131 public void setGain(AntennaGain newGain) {
132 AntennaGain oldGain = gain;
133 gain = newGain == null ? GAIN_EDEFAULT : newGain;
134 if (eNotificationRequired())
135 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.COMM_SUBSYSTEM__GAIN, oldGain,
136 gain));
137 }
138
139 /**
140 * <!-- begin-user-doc -->
141 * <!-- end-user-doc -->
142 * @generated
143 */
144 @Override
145 public Object eGet(int featureID, boolean resolve, boolean coreType) {
146 switch (featureID) {
147 case SatellitePackage.COMM_SUBSYSTEM__BAND:
148 return getBand();
149 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
150 return getGain();
151 }
152 return super.eGet(featureID, resolve, coreType);
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public void eSet(int featureID, Object newValue) {
162 switch (featureID) {
163 case SatellitePackage.COMM_SUBSYSTEM__BAND:
164 setBand((TransceiverBand) newValue);
165 return;
166 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
167 setGain((AntennaGain) newValue);
168 return;
169 }
170 super.eSet(featureID, newValue);
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 @Override
179 public void eUnset(int featureID) {
180 switch (featureID) {
181 case SatellitePackage.COMM_SUBSYSTEM__BAND:
182 setBand(BAND_EDEFAULT);
183 return;
184 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
185 setGain(GAIN_EDEFAULT);
186 return;
187 }
188 super.eUnset(featureID);
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public boolean eIsSet(int featureID) {
198 switch (featureID) {
199 case SatellitePackage.COMM_SUBSYSTEM__BAND:
200 return band != BAND_EDEFAULT;
201 case SatellitePackage.COMM_SUBSYSTEM__GAIN:
202 return gain != GAIN_EDEFAULT;
203 }
204 return super.eIsSet(featureID);
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 @Override
213 public String toString() {
214 if (eIsProxy())
215 return super.toString();
216
217 StringBuilder result = new StringBuilder(super.toString());
218 result.append(" (band: ");
219 result.append(band);
220 result.append(", gain: ");
221 result.append(gain);
222 result.append(')');
223 return result.toString();
224 }
225
226} //CommSubsystemImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommunicatingElementImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommunicatingElementImpl.java
new file mode 100644
index 00000000..1f79da3b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CommunicatingElementImpl.java
@@ -0,0 +1,237 @@
1/**
2 */
3package satellite.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.notify.Notification;
8import org.eclipse.emf.common.notify.NotificationChain;
9
10import org.eclipse.emf.common.util.EList;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21import satellite.CommSubsystem;
22import satellite.CommunicatingElement;
23import satellite.DirectedCommunicationLink;
24import satellite.SatellitePackage;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Communicating Element</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link satellite.impl.CommunicatingElementImpl#getCommSubsystem <em>Comm Subsystem</em>}</li>
35 * <li>{@link satellite.impl.CommunicatingElementImpl#getCommunicationLink <em>Communication Link</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public abstract class CommunicatingElementImpl extends MinimalEObjectImpl.Container implements CommunicatingElement {
41 /**
42 * The cached value of the '{@link #getCommSubsystem() <em>Comm Subsystem</em>}' containment reference list.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getCommSubsystem()
46 * @generated
47 * @ordered
48 */
49 protected EList<CommSubsystem> commSubsystem;
50
51 /**
52 * The cached value of the '{@link #getCommunicationLink() <em>Communication Link</em>}' containment reference.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getCommunicationLink()
56 * @generated
57 * @ordered
58 */
59 protected DirectedCommunicationLink communicationLink;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected CommunicatingElementImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return SatellitePackage.Literals.COMMUNICATING_ELEMENT;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 @Override
86 public EList<CommSubsystem> getCommSubsystem() {
87 if (commSubsystem == null) {
88 commSubsystem = new EObjectContainmentEList<CommSubsystem>(CommSubsystem.class, this,
89 SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM);
90 }
91 return commSubsystem;
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public DirectedCommunicationLink getCommunicationLink() {
101 return communicationLink;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public NotificationChain basicSetCommunicationLink(DirectedCommunicationLink newCommunicationLink,
110 NotificationChain msgs) {
111 DirectedCommunicationLink oldCommunicationLink = communicationLink;
112 communicationLink = newCommunicationLink;
113 if (eNotificationRequired()) {
114 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
115 SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, oldCommunicationLink,
116 newCommunicationLink);
117 if (msgs == null)
118 msgs = notification;
119 else
120 msgs.add(notification);
121 }
122 return msgs;
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 @Override
131 public void setCommunicationLink(DirectedCommunicationLink newCommunicationLink) {
132 if (newCommunicationLink != communicationLink) {
133 NotificationChain msgs = null;
134 if (communicationLink != null)
135 msgs = ((InternalEObject) communicationLink).eInverseRemove(this,
136 EOPPOSITE_FEATURE_BASE - SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, null,
137 msgs);
138 if (newCommunicationLink != null)
139 msgs = ((InternalEObject) newCommunicationLink).eInverseAdd(this,
140 EOPPOSITE_FEATURE_BASE - SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, null,
141 msgs);
142 msgs = basicSetCommunicationLink(newCommunicationLink, msgs);
143 if (msgs != null)
144 msgs.dispatch();
145 } else if (eNotificationRequired())
146 eNotify(new ENotificationImpl(this, Notification.SET,
147 SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK, newCommunicationLink,
148 newCommunicationLink));
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
158 switch (featureID) {
159 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
160 return ((InternalEList<?>) getCommSubsystem()).basicRemove(otherEnd, msgs);
161 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
162 return basicSetCommunicationLink(null, msgs);
163 }
164 return super.eInverseRemove(otherEnd, featureID, msgs);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public Object eGet(int featureID, boolean resolve, boolean coreType) {
174 switch (featureID) {
175 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
176 return getCommSubsystem();
177 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
178 return getCommunicationLink();
179 }
180 return super.eGet(featureID, resolve, coreType);
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @SuppressWarnings("unchecked")
189 @Override
190 public void eSet(int featureID, Object newValue) {
191 switch (featureID) {
192 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
193 getCommSubsystem().clear();
194 getCommSubsystem().addAll((Collection<? extends CommSubsystem>) newValue);
195 return;
196 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
197 setCommunicationLink((DirectedCommunicationLink) newValue);
198 return;
199 }
200 super.eSet(featureID, newValue);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public void eUnset(int featureID) {
210 switch (featureID) {
211 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
212 getCommSubsystem().clear();
213 return;
214 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
215 setCommunicationLink((DirectedCommunicationLink) null);
216 return;
217 }
218 super.eUnset(featureID);
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public boolean eIsSet(int featureID) {
228 switch (featureID) {
229 case SatellitePackage.COMMUNICATING_ELEMENT__COMM_SUBSYSTEM:
230 return commSubsystem != null && !commSubsystem.isEmpty();
231 case SatellitePackage.COMMUNICATING_ELEMENT__COMMUNICATION_LINK:
232 return communicationLink != null;
233 }
234 return super.eIsSet(featureID);
235 }
236
237} //CommunicatingElementImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/ConstellationMissionImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/ConstellationMissionImpl.java
new file mode 100644
index 00000000..7635d7cd
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/ConstellationMissionImpl.java
@@ -0,0 +1,237 @@
1/**
2 */
3package satellite.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.notify.Notification;
8import org.eclipse.emf.common.notify.NotificationChain;
9
10import org.eclipse.emf.common.util.EList;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21import satellite.ConstellationMission;
22import satellite.GroundStationNetwork;
23import satellite.SatellitePackage;
24import satellite.Spacecraft;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Constellation Mission</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link satellite.impl.ConstellationMissionImpl#getGroundStationNetwork <em>Ground Station Network</em>}</li>
35 * <li>{@link satellite.impl.ConstellationMissionImpl#getSpacecraft <em>Spacecraft</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public abstract class ConstellationMissionImpl extends MinimalEObjectImpl.Container implements ConstellationMission {
41 /**
42 * The cached value of the '{@link #getGroundStationNetwork() <em>Ground Station Network</em>}' containment reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getGroundStationNetwork()
46 * @generated
47 * @ordered
48 */
49 protected GroundStationNetwork groundStationNetwork;
50
51 /**
52 * The cached value of the '{@link #getSpacecraft() <em>Spacecraft</em>}' containment reference list.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getSpacecraft()
56 * @generated
57 * @ordered
58 */
59 protected EList<Spacecraft> spacecraft;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected ConstellationMissionImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return SatellitePackage.Literals.CONSTELLATION_MISSION;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 @Override
86 public GroundStationNetwork getGroundStationNetwork() {
87 return groundStationNetwork;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public NotificationChain basicSetGroundStationNetwork(GroundStationNetwork newGroundStationNetwork,
96 NotificationChain msgs) {
97 GroundStationNetwork oldGroundStationNetwork = groundStationNetwork;
98 groundStationNetwork = newGroundStationNetwork;
99 if (eNotificationRequired()) {
100 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
101 SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, oldGroundStationNetwork,
102 newGroundStationNetwork);
103 if (msgs == null)
104 msgs = notification;
105 else
106 msgs.add(notification);
107 }
108 return msgs;
109 }
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 @Override
117 public void setGroundStationNetwork(GroundStationNetwork newGroundStationNetwork) {
118 if (newGroundStationNetwork != groundStationNetwork) {
119 NotificationChain msgs = null;
120 if (groundStationNetwork != null)
121 msgs = ((InternalEObject) groundStationNetwork).eInverseRemove(this,
122 EOPPOSITE_FEATURE_BASE - SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, null,
123 msgs);
124 if (newGroundStationNetwork != null)
125 msgs = ((InternalEObject) newGroundStationNetwork).eInverseAdd(this,
126 EOPPOSITE_FEATURE_BASE - SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, null,
127 msgs);
128 msgs = basicSetGroundStationNetwork(newGroundStationNetwork, msgs);
129 if (msgs != null)
130 msgs.dispatch();
131 } else if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET,
133 SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK, newGroundStationNetwork,
134 newGroundStationNetwork));
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 @Override
143 public EList<Spacecraft> getSpacecraft() {
144 if (spacecraft == null) {
145 spacecraft = new EObjectContainmentEList<Spacecraft>(Spacecraft.class, this,
146 SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT);
147 }
148 return spacecraft;
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
158 switch (featureID) {
159 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
160 return basicSetGroundStationNetwork(null, msgs);
161 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
162 return ((InternalEList<?>) getSpacecraft()).basicRemove(otherEnd, msgs);
163 }
164 return super.eInverseRemove(otherEnd, featureID, msgs);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public Object eGet(int featureID, boolean resolve, boolean coreType) {
174 switch (featureID) {
175 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
176 return getGroundStationNetwork();
177 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
178 return getSpacecraft();
179 }
180 return super.eGet(featureID, resolve, coreType);
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @SuppressWarnings("unchecked")
189 @Override
190 public void eSet(int featureID, Object newValue) {
191 switch (featureID) {
192 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
193 setGroundStationNetwork((GroundStationNetwork) newValue);
194 return;
195 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
196 getSpacecraft().clear();
197 getSpacecraft().addAll((Collection<? extends Spacecraft>) newValue);
198 return;
199 }
200 super.eSet(featureID, newValue);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public void eUnset(int featureID) {
210 switch (featureID) {
211 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
212 setGroundStationNetwork((GroundStationNetwork) null);
213 return;
214 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
215 getSpacecraft().clear();
216 return;
217 }
218 super.eUnset(featureID);
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 @Override
227 public boolean eIsSet(int featureID) {
228 switch (featureID) {
229 case SatellitePackage.CONSTELLATION_MISSION__GROUND_STATION_NETWORK:
230 return groundStationNetwork != null;
231 case SatellitePackage.CONSTELLATION_MISSION__SPACECRAFT:
232 return spacecraft != null && !spacecraft.isEmpty();
233 }
234 return super.eIsSet(featureID);
235 }
236
237} //ConstellationMissionImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat3UImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat3UImpl.java
new file mode 100644
index 00000000..a7ba37a7
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat3UImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import satellite.CubeSat3U;
8import satellite.SatellitePackage;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Cube Sat3 U</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CubeSat3UImpl extends SpacecraftImpl implements CubeSat3U {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CubeSat3UImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.CUBE_SAT3_U;
35 }
36
37} //CubeSat3UImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat6UImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat6UImpl.java
new file mode 100644
index 00000000..d4f42e6c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/CubeSat6UImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import satellite.CubeSat6U;
8import satellite.SatellitePackage;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Cube Sat6 U</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CubeSat6UImpl extends SpacecraftImpl implements CubeSat6U {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CubeSat6UImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.CUBE_SAT6_U;
35 }
36
37} //CubeSat6UImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/DirectedCommunicationLinkImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/DirectedCommunicationLinkImpl.java
new file mode 100644
index 00000000..2df1328f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/DirectedCommunicationLinkImpl.java
@@ -0,0 +1,227 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.common.notify.Notification;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.InternalEObject;
9
10import org.eclipse.emf.ecore.impl.ENotificationImpl;
11import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
12
13import satellite.CommSubsystem;
14import satellite.DirectedCommunicationLink;
15import satellite.SatellitePackage;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Directed Communication Link</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link satellite.impl.DirectedCommunicationLinkImpl#getSource <em>Source</em>}</li>
26 * <li>{@link satellite.impl.DirectedCommunicationLinkImpl#getTarget <em>Target</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class DirectedCommunicationLinkImpl extends MinimalEObjectImpl.Container implements DirectedCommunicationLink {
32 /**
33 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getSource()
37 * @generated
38 * @ordered
39 */
40 protected CommSubsystem source;
41
42 /**
43 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getTarget()
47 * @generated
48 * @ordered
49 */
50 protected CommSubsystem target;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 protected DirectedCommunicationLinkImpl() {
58 super();
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 @Override
67 protected EClass eStaticClass() {
68 return SatellitePackage.Literals.DIRECTED_COMMUNICATION_LINK;
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 @Override
77 public CommSubsystem getSource() {
78 if (source != null && source.eIsProxy()) {
79 InternalEObject oldSource = (InternalEObject) source;
80 source = (CommSubsystem) eResolveProxy(oldSource);
81 if (source != oldSource) {
82 if (eNotificationRequired())
83 eNotify(new ENotificationImpl(this, Notification.RESOLVE,
84 SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE, oldSource, source));
85 }
86 }
87 return source;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public CommSubsystem basicGetSource() {
96 return source;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setSource(CommSubsystem newSource) {
106 CommSubsystem oldSource = source;
107 source = newSource;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE,
110 oldSource, source));
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public CommSubsystem getTarget() {
120 if (target != null && target.eIsProxy()) {
121 InternalEObject oldTarget = (InternalEObject) target;
122 target = (CommSubsystem) eResolveProxy(oldTarget);
123 if (target != oldTarget) {
124 if (eNotificationRequired())
125 eNotify(new ENotificationImpl(this, Notification.RESOLVE,
126 SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET, oldTarget, target));
127 }
128 }
129 return target;
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 public CommSubsystem basicGetTarget() {
138 return target;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public void setTarget(CommSubsystem newTarget) {
148 CommSubsystem oldTarget = target;
149 target = newTarget;
150 if (eNotificationRequired())
151 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET,
152 oldTarget, target));
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public Object eGet(int featureID, boolean resolve, boolean coreType) {
162 switch (featureID) {
163 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
164 if (resolve)
165 return getSource();
166 return basicGetSource();
167 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
168 if (resolve)
169 return getTarget();
170 return basicGetTarget();
171 }
172 return super.eGet(featureID, resolve, coreType);
173 }
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 @Override
181 public void eSet(int featureID, Object newValue) {
182 switch (featureID) {
183 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
184 setSource((CommSubsystem) newValue);
185 return;
186 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
187 setTarget((CommSubsystem) newValue);
188 return;
189 }
190 super.eSet(featureID, newValue);
191 }
192
193 /**
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @generated
197 */
198 @Override
199 public void eUnset(int featureID) {
200 switch (featureID) {
201 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
202 setSource((CommSubsystem) null);
203 return;
204 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
205 setTarget((CommSubsystem) null);
206 return;
207 }
208 super.eUnset(featureID);
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public boolean eIsSet(int featureID) {
218 switch (featureID) {
219 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__SOURCE:
220 return source != null;
221 case SatellitePackage.DIRECTED_COMMUNICATION_LINK__TARGET:
222 return target != null;
223 }
224 return super.eIsSet(featureID);
225 }
226
227} //DirectedCommunicationLinkImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/GroundStationNetworkImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/GroundStationNetworkImpl.java
new file mode 100644
index 00000000..244b9568
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/GroundStationNetworkImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import satellite.GroundStationNetwork;
8import satellite.SatellitePackage;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Ground Station Network</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class GroundStationNetworkImpl extends CommunicatingElementImpl implements GroundStationNetwork {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected GroundStationNetworkImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.GROUND_STATION_NETWORK;
35 }
36
37} //GroundStationNetworkImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryMissionImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryMissionImpl.java
new file mode 100644
index 00000000..3401ad51
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryMissionImpl.java
@@ -0,0 +1,166 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.common.notify.Notification;
6
7import org.eclipse.emf.ecore.EClass;
8
9import org.eclipse.emf.ecore.impl.ENotificationImpl;
10
11import satellite.InterferometryMission;
12import satellite.SatellitePackage;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Interferometry Mission</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link satellite.impl.InterferometryMissionImpl#getObservationTime <em>Observation Time</em>}</li>
23 * </ul>
24 *
25 * @generated
26 */
27public class InterferometryMissionImpl extends ConstellationMissionImpl implements InterferometryMission {
28 /**
29 * The default value of the '{@link #getObservationTime() <em>Observation Time</em>}' attribute.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @see #getObservationTime()
33 * @generated
34 * @ordered
35 */
36 protected static final float OBSERVATION_TIME_EDEFAULT = 2.0F;
37
38 /**
39 * The cached value of the '{@link #getObservationTime() <em>Observation Time</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #getObservationTime()
43 * @generated
44 * @ordered
45 */
46 protected float observationTime = OBSERVATION_TIME_EDEFAULT;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 protected InterferometryMissionImpl() {
54 super();
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 @Override
63 protected EClass eStaticClass() {
64 return SatellitePackage.Literals.INTERFEROMETRY_MISSION;
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 public float getObservationTime() {
74 return observationTime;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public void setObservationTime(float newObservationTime) {
84 float oldObservationTime = observationTime;
85 observationTime = newObservationTime;
86 if (eNotificationRequired())
87 eNotify(new ENotificationImpl(this, Notification.SET,
88 SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME, oldObservationTime, observationTime));
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
100 return getObservationTime();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
114 setObservationTime((Float) newValue);
115 return;
116 }
117 super.eSet(featureID, newValue);
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 public void eUnset(int featureID) {
127 switch (featureID) {
128 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
129 setObservationTime(OBSERVATION_TIME_EDEFAULT);
130 return;
131 }
132 super.eUnset(featureID);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public boolean eIsSet(int featureID) {
142 switch (featureID) {
143 case SatellitePackage.INTERFEROMETRY_MISSION__OBSERVATION_TIME:
144 return observationTime != OBSERVATION_TIME_EDEFAULT;
145 }
146 return super.eIsSet(featureID);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public String toString() {
156 if (eIsProxy())
157 return super.toString();
158
159 StringBuilder result = new StringBuilder(super.toString());
160 result.append(" (observationTime: ");
161 result.append(observationTime);
162 result.append(')');
163 return result.toString();
164 }
165
166} //InterferometryMissionImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryPayloadImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryPayloadImpl.java
new file mode 100644
index 00000000..c8f9e816
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/InterferometryPayloadImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import satellite.InterferometryPayload;
8import satellite.SatellitePackage;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Interferometry Payload</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class InterferometryPayloadImpl extends PayloadImpl implements InterferometryPayload {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected InterferometryPayloadImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.INTERFEROMETRY_PAYLOAD;
35 }
36
37} //InterferometryPayloadImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/PayloadImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/PayloadImpl.java
new file mode 100644
index 00000000..6ee96353
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/PayloadImpl.java
@@ -0,0 +1,39 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
8
9import satellite.Payload;
10import satellite.SatellitePackage;
11
12/**
13 * <!-- begin-user-doc -->
14 * An implementation of the model object '<em><b>Payload</b></em>'.
15 * <!-- end-user-doc -->
16 *
17 * @generated
18 */
19public abstract class PayloadImpl extends MinimalEObjectImpl.Container implements Payload {
20 /**
21 * <!-- begin-user-doc -->
22 * <!-- end-user-doc -->
23 * @generated
24 */
25 protected PayloadImpl() {
26 super();
27 }
28
29 /**
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 @Override
35 protected EClass eStaticClass() {
36 return SatellitePackage.Literals.PAYLOAD;
37 }
38
39} //PayloadImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatelliteFactoryImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatelliteFactoryImpl.java
new file mode 100644
index 00000000..e899dc79
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatelliteFactoryImpl.java
@@ -0,0 +1,294 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EDataType;
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.impl.EFactoryImpl;
11
12import org.eclipse.emf.ecore.plugin.EcorePlugin;
13
14import satellite.*;
15
16/**
17 * <!-- begin-user-doc -->
18 * An implementation of the model <b>Factory</b>.
19 * <!-- end-user-doc -->
20 * @generated
21 */
22public class SatelliteFactoryImpl extends EFactoryImpl implements SatelliteFactory {
23 /**
24 * Creates the default factory implementation.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 public static SatelliteFactory init() {
30 try {
31 SatelliteFactory theSatelliteFactory = (SatelliteFactory) EPackage.Registry.INSTANCE
32 .getEFactory(SatellitePackage.eNS_URI);
33 if (theSatelliteFactory != null) {
34 return theSatelliteFactory;
35 }
36 } catch (Exception exception) {
37 EcorePlugin.INSTANCE.log(exception);
38 }
39 return new SatelliteFactoryImpl();
40 }
41
42 /**
43 * Creates an instance of the factory.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 public SatelliteFactoryImpl() {
49 super();
50 }
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 @Override
58 public EObject create(EClass eClass) {
59 switch (eClass.getClassifierID()) {
60 case SatellitePackage.INTERFEROMETRY_MISSION:
61 return createInterferometryMission();
62 case SatellitePackage.GROUND_STATION_NETWORK:
63 return createGroundStationNetwork();
64 case SatellitePackage.COMM_SUBSYSTEM:
65 return createCommSubsystem();
66 case SatellitePackage.DIRECTED_COMMUNICATION_LINK:
67 return createDirectedCommunicationLink();
68 case SatellitePackage.INTERFEROMETRY_PAYLOAD:
69 return createInterferometryPayload();
70 case SatellitePackage.CUBE_SAT3_U:
71 return createCubeSat3U();
72 case SatellitePackage.CUBE_SAT6_U:
73 return createCubeSat6U();
74 case SatellitePackage.SMALL_SAT:
75 return createSmallSat();
76 default:
77 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
78 }
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 @Override
87 public Object createFromString(EDataType eDataType, String initialValue) {
88 switch (eDataType.getClassifierID()) {
89 case SatellitePackage.TRANSCEIVER_BAND:
90 return createTransceiverBandFromString(eDataType, initialValue);
91 case SatellitePackage.ANTENNA_GAIN:
92 return createAntennaGainFromString(eDataType, initialValue);
93 case SatellitePackage.SPACECRAFT_KIND:
94 return createSpacecraftKindFromString(eDataType, initialValue);
95 default:
96 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
97 }
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @generated
104 */
105 @Override
106 public String convertToString(EDataType eDataType, Object instanceValue) {
107 switch (eDataType.getClassifierID()) {
108 case SatellitePackage.TRANSCEIVER_BAND:
109 return convertTransceiverBandToString(eDataType, instanceValue);
110 case SatellitePackage.ANTENNA_GAIN:
111 return convertAntennaGainToString(eDataType, instanceValue);
112 case SatellitePackage.SPACECRAFT_KIND:
113 return convertSpacecraftKindToString(eDataType, instanceValue);
114 default:
115 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
116 }
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public InterferometryMission createInterferometryMission() {
126 InterferometryMissionImpl interferometryMission = new InterferometryMissionImpl();
127 return interferometryMission;
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 @Override
136 public GroundStationNetwork createGroundStationNetwork() {
137 GroundStationNetworkImpl groundStationNetwork = new GroundStationNetworkImpl();
138 return groundStationNetwork;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public CommSubsystem createCommSubsystem() {
148 CommSubsystemImpl commSubsystem = new CommSubsystemImpl();
149 return commSubsystem;
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public DirectedCommunicationLink createDirectedCommunicationLink() {
159 DirectedCommunicationLinkImpl directedCommunicationLink = new DirectedCommunicationLinkImpl();
160 return directedCommunicationLink;
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 @Override
169 public InterferometryPayload createInterferometryPayload() {
170 InterferometryPayloadImpl interferometryPayload = new InterferometryPayloadImpl();
171 return interferometryPayload;
172 }
173
174 /**
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @generated
178 */
179 @Override
180 public CubeSat3U createCubeSat3U() {
181 CubeSat3UImpl cubeSat3U = new CubeSat3UImpl();
182 return cubeSat3U;
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public CubeSat6U createCubeSat6U() {
192 CubeSat6UImpl cubeSat6U = new CubeSat6UImpl();
193 return cubeSat6U;
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public SmallSat createSmallSat() {
203 SmallSatImpl smallSat = new SmallSatImpl();
204 return smallSat;
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 public TransceiverBand createTransceiverBandFromString(EDataType eDataType, String initialValue) {
213 TransceiverBand result = TransceiverBand.get(initialValue);
214 if (result == null)
215 throw new IllegalArgumentException(
216 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
217 return result;
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 public String convertTransceiverBandToString(EDataType eDataType, Object instanceValue) {
226 return instanceValue == null ? null : instanceValue.toString();
227 }
228
229 /**
230 * <!-- begin-user-doc -->
231 * <!-- end-user-doc -->
232 * @generated
233 */
234 public AntennaGain createAntennaGainFromString(EDataType eDataType, String initialValue) {
235 AntennaGain result = AntennaGain.get(initialValue);
236 if (result == null)
237 throw new IllegalArgumentException(
238 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
239 return result;
240 }
241
242 /**
243 * <!-- begin-user-doc -->
244 * <!-- end-user-doc -->
245 * @generated
246 */
247 public String convertAntennaGainToString(EDataType eDataType, Object instanceValue) {
248 return instanceValue == null ? null : instanceValue.toString();
249 }
250
251 /**
252 * <!-- begin-user-doc -->
253 * <!-- end-user-doc -->
254 * @generated
255 */
256 public SpacecraftKind createSpacecraftKindFromString(EDataType eDataType, String initialValue) {
257 SpacecraftKind result = SpacecraftKind.get(initialValue);
258 if (result == null)
259 throw new IllegalArgumentException(
260 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
261 return result;
262 }
263
264 /**
265 * <!-- begin-user-doc -->
266 * <!-- end-user-doc -->
267 * @generated
268 */
269 public String convertSpacecraftKindToString(EDataType eDataType, Object instanceValue) {
270 return instanceValue == null ? null : instanceValue.toString();
271 }
272
273 /**
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 */
278 @Override
279 public SatellitePackage getSatellitePackage() {
280 return (SatellitePackage) getEPackage();
281 }
282
283 /**
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @deprecated
287 * @generated
288 */
289 @Deprecated
290 public static SatellitePackage getPackage() {
291 return SatellitePackage.eINSTANCE;
292 }
293
294} //SatelliteFactoryImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatellitePackageImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatellitePackageImpl.java
new file mode 100644
index 00000000..2347fe07
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SatellitePackageImpl.java
@@ -0,0 +1,690 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EEnum;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.EReference;
10
11import org.eclipse.emf.ecore.impl.EPackageImpl;
12
13import satellite.AntennaGain;
14import satellite.CommSubsystem;
15import satellite.CommunicatingElement;
16import satellite.ConstellationMission;
17import satellite.CubeSat3U;
18import satellite.CubeSat6U;
19import satellite.DirectedCommunicationLink;
20import satellite.GroundStationNetwork;
21import satellite.InterferometryMission;
22import satellite.InterferometryPayload;
23import satellite.Payload;
24import satellite.SatelliteFactory;
25import satellite.SatellitePackage;
26import satellite.SmallSat;
27import satellite.Spacecraft;
28import satellite.SpacecraftKind;
29import satellite.TransceiverBand;
30
31/**
32 * <!-- begin-user-doc -->
33 * An implementation of the model <b>Package</b>.
34 * <!-- end-user-doc -->
35 * @generated
36 */
37public class SatellitePackageImpl extends EPackageImpl implements SatellitePackage {
38 /**
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @generated
42 */
43 private EClass constellationMissionEClass = null;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 private EClass interferometryMissionEClass = null;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 private EClass communicatingElementEClass = null;
58
59 /**
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @generated
63 */
64 private EClass groundStationNetworkEClass = null;
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 private EClass spacecraftEClass = null;
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 private EClass commSubsystemEClass = null;
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 private EClass directedCommunicationLinkEClass = null;
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 private EClass payloadEClass = null;
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 private EClass interferometryPayloadEClass = null;
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 private EClass cubeSat3UEClass = null;
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 private EClass cubeSat6UEClass = null;
114
115 /**
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 */
120 private EClass smallSatEClass = null;
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 private EEnum transceiverBandEEnum = null;
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 private EEnum antennaGainEEnum = null;
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 private EEnum spacecraftKindEEnum = null;
142
143 /**
144 * Creates an instance of the model <b>Package</b>, registered with
145 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
146 * package URI value.
147 * <p>Note: the correct way to create the package is via the static
148 * factory method {@link #init init()}, which also performs
149 * initialization of the package, or returns the registered package,
150 * if one already exists.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @see org.eclipse.emf.ecore.EPackage.Registry
154 * @see satellite.SatellitePackage#eNS_URI
155 * @see #init()
156 * @generated
157 */
158 private SatellitePackageImpl() {
159 super(eNS_URI, SatelliteFactory.eINSTANCE);
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 private static boolean isInited = false;
168
169 /**
170 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
171 *
172 * <p>This method is used to initialize {@link SatellitePackage#eINSTANCE} when that field is accessed.
173 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @see #eNS_URI
177 * @see #createPackageContents()
178 * @see #initializePackageContents()
179 * @generated
180 */
181 public static SatellitePackage init() {
182 if (isInited)
183 return (SatellitePackage) EPackage.Registry.INSTANCE.getEPackage(SatellitePackage.eNS_URI);
184
185 // Obtain or create and register package
186 Object registeredSatellitePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
187 SatellitePackageImpl theSatellitePackage = registeredSatellitePackage instanceof SatellitePackageImpl
188 ? (SatellitePackageImpl) registeredSatellitePackage
189 : new SatellitePackageImpl();
190
191 isInited = true;
192
193 // Create package meta-data objects
194 theSatellitePackage.createPackageContents();
195
196 // Initialize created meta-data
197 theSatellitePackage.initializePackageContents();
198
199 // Mark meta-data to indicate it can't be changed
200 theSatellitePackage.freeze();
201
202 // Update the registry and return the package
203 EPackage.Registry.INSTANCE.put(SatellitePackage.eNS_URI, theSatellitePackage);
204 return theSatellitePackage;
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 @Override
213 public EClass getConstellationMission() {
214 return constellationMissionEClass;
215 }
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 @Override
223 public EReference getConstellationMission_GroundStationNetwork() {
224 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(0);
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 @Override
233 public EReference getConstellationMission_Spacecraft() {
234 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(1);
235 }
236
237 /**
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 */
242 @Override
243 public EClass getInterferometryMission() {
244 return interferometryMissionEClass;
245 }
246
247 /**
248 * <!-- begin-user-doc -->
249 * <!-- end-user-doc -->
250 * @generated
251 */
252 @Override
253 public EAttribute getInterferometryMission_ObservationTime() {
254 return (EAttribute) interferometryMissionEClass.getEStructuralFeatures().get(0);
255 }
256
257 /**
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 @Override
263 public EClass getCommunicatingElement() {
264 return communicatingElementEClass;
265 }
266
267 /**
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 @Override
273 public EReference getCommunicatingElement_CommSubsystem() {
274 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(0);
275 }
276
277 /**
278 * <!-- begin-user-doc -->
279 * <!-- end-user-doc -->
280 * @generated
281 */
282 @Override
283 public EReference getCommunicatingElement_CommunicationLink() {
284 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(1);
285 }
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 @Override
293 public EClass getGroundStationNetwork() {
294 return groundStationNetworkEClass;
295 }
296
297 /**
298 * <!-- begin-user-doc -->
299 * <!-- end-user-doc -->
300 * @generated
301 */
302 @Override
303 public EClass getSpacecraft() {
304 return spacecraftEClass;
305 }
306
307 /**
308 * <!-- begin-user-doc -->
309 * <!-- end-user-doc -->
310 * @generated
311 */
312 @Override
313 public EReference getSpacecraft_Payload() {
314 return (EReference) spacecraftEClass.getEStructuralFeatures().get(0);
315 }
316
317 /**
318 * <!-- begin-user-doc -->
319 * <!-- end-user-doc -->
320 * @generated
321 */
322 @Override
323 public EAttribute getSpacecraft_Kind() {
324 return (EAttribute) spacecraftEClass.getEStructuralFeatures().get(1);
325 }
326
327 /**
328 * <!-- begin-user-doc -->
329 * <!-- end-user-doc -->
330 * @generated
331 */
332 @Override
333 public EClass getCommSubsystem() {
334 return commSubsystemEClass;
335 }
336
337 /**
338 * <!-- begin-user-doc -->
339 * <!-- end-user-doc -->
340 * @generated
341 */
342 @Override
343 public EAttribute getCommSubsystem_Band() {
344 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(0);
345 }
346
347 /**
348 * <!-- begin-user-doc -->
349 * <!-- end-user-doc -->
350 * @generated
351 */
352 @Override
353 public EAttribute getCommSubsystem_Gain() {
354 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(1);
355 }
356
357 /**
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @generated
361 */
362 @Override
363 public EClass getDirectedCommunicationLink() {
364 return directedCommunicationLinkEClass;
365 }
366
367 /**
368 * <!-- begin-user-doc -->
369 * <!-- end-user-doc -->
370 * @generated
371 */
372 @Override
373 public EReference getDirectedCommunicationLink_Source() {
374 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(0);
375 }
376
377 /**
378 * <!-- begin-user-doc -->
379 * <!-- end-user-doc -->
380 * @generated
381 */
382 @Override
383 public EReference getDirectedCommunicationLink_Target() {
384 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(1);
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 @Override
393 public EClass getPayload() {
394 return payloadEClass;
395 }
396
397 /**
398 * <!-- begin-user-doc -->
399 * <!-- end-user-doc -->
400 * @generated
401 */
402 @Override
403 public EClass getInterferometryPayload() {
404 return interferometryPayloadEClass;
405 }
406
407 /**
408 * <!-- begin-user-doc -->
409 * <!-- end-user-doc -->
410 * @generated
411 */
412 @Override
413 public EClass getCubeSat3U() {
414 return cubeSat3UEClass;
415 }
416
417 /**
418 * <!-- begin-user-doc -->
419 * <!-- end-user-doc -->
420 * @generated
421 */
422 @Override
423 public EClass getCubeSat6U() {
424 return cubeSat6UEClass;
425 }
426
427 /**
428 * <!-- begin-user-doc -->
429 * <!-- end-user-doc -->
430 * @generated
431 */
432 @Override
433 public EClass getSmallSat() {
434 return smallSatEClass;
435 }
436
437 /**
438 * <!-- begin-user-doc -->
439 * <!-- end-user-doc -->
440 * @generated
441 */
442 @Override
443 public EEnum getTransceiverBand() {
444 return transceiverBandEEnum;
445 }
446
447 /**
448 * <!-- begin-user-doc -->
449 * <!-- end-user-doc -->
450 * @generated
451 */
452 @Override
453 public EEnum getAntennaGain() {
454 return antennaGainEEnum;
455 }
456
457 /**
458 * <!-- begin-user-doc -->
459 * <!-- end-user-doc -->
460 * @generated
461 */
462 @Override
463 public EEnum getSpacecraftKind() {
464 return spacecraftKindEEnum;
465 }
466
467 /**
468 * <!-- begin-user-doc -->
469 * <!-- end-user-doc -->
470 * @generated
471 */
472 @Override
473 public SatelliteFactory getSatelliteFactory() {
474 return (SatelliteFactory) getEFactoryInstance();
475 }
476
477 /**
478 * <!-- begin-user-doc -->
479 * <!-- end-user-doc -->
480 * @generated
481 */
482 private boolean isCreated = false;
483
484 /**
485 * Creates the meta-model objects for the package. This method is
486 * guarded to have no affect on any invocation but its first.
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @generated
490 */
491 public void createPackageContents() {
492 if (isCreated)
493 return;
494 isCreated = true;
495
496 // Create classes and their features
497 constellationMissionEClass = createEClass(CONSTELLATION_MISSION);
498 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__GROUND_STATION_NETWORK);
499 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__SPACECRAFT);
500
501 interferometryMissionEClass = createEClass(INTERFEROMETRY_MISSION);
502 createEAttribute(interferometryMissionEClass, INTERFEROMETRY_MISSION__OBSERVATION_TIME);
503
504 communicatingElementEClass = createEClass(COMMUNICATING_ELEMENT);
505 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMM_SUBSYSTEM);
506 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMMUNICATION_LINK);
507
508 groundStationNetworkEClass = createEClass(GROUND_STATION_NETWORK);
509
510 spacecraftEClass = createEClass(SPACECRAFT);
511 createEReference(spacecraftEClass, SPACECRAFT__PAYLOAD);
512 createEAttribute(spacecraftEClass, SPACECRAFT__KIND);
513
514 commSubsystemEClass = createEClass(COMM_SUBSYSTEM);
515 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__BAND);
516 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__GAIN);
517
518 directedCommunicationLinkEClass = createEClass(DIRECTED_COMMUNICATION_LINK);
519 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__SOURCE);
520 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__TARGET);
521
522 payloadEClass = createEClass(PAYLOAD);
523
524 interferometryPayloadEClass = createEClass(INTERFEROMETRY_PAYLOAD);
525
526 cubeSat3UEClass = createEClass(CUBE_SAT3_U);
527
528 cubeSat6UEClass = createEClass(CUBE_SAT6_U);
529
530 smallSatEClass = createEClass(SMALL_SAT);
531
532 // Create enums
533 transceiverBandEEnum = createEEnum(TRANSCEIVER_BAND);
534 antennaGainEEnum = createEEnum(ANTENNA_GAIN);
535 spacecraftKindEEnum = createEEnum(SPACECRAFT_KIND);
536 }
537
538 /**
539 * <!-- begin-user-doc -->
540 * <!-- end-user-doc -->
541 * @generated
542 */
543 private boolean isInitialized = false;
544
545 /**
546 * Complete the initialization of the package and its meta-model. This
547 * method is guarded to have no affect on any invocation but its first.
548 * <!-- begin-user-doc -->
549 * <!-- end-user-doc -->
550 * @generated
551 */
552 public void initializePackageContents() {
553 if (isInitialized)
554 return;
555 isInitialized = true;
556
557 // Initialize package
558 setName(eNAME);
559 setNsPrefix(eNS_PREFIX);
560 setNsURI(eNS_URI);
561
562 // Create type parameters
563
564 // Set bounds for type parameters
565
566 // Add supertypes to classes
567 interferometryMissionEClass.getESuperTypes().add(this.getConstellationMission());
568 groundStationNetworkEClass.getESuperTypes().add(this.getCommunicatingElement());
569 spacecraftEClass.getESuperTypes().add(this.getCommunicatingElement());
570 interferometryPayloadEClass.getESuperTypes().add(this.getPayload());
571 cubeSat3UEClass.getESuperTypes().add(this.getSpacecraft());
572 cubeSat6UEClass.getESuperTypes().add(this.getSpacecraft());
573 smallSatEClass.getESuperTypes().add(this.getSpacecraft());
574
575 // Initialize classes, features, and operations; add parameters
576 initEClass(constellationMissionEClass, ConstellationMission.class, "ConstellationMission", IS_ABSTRACT,
577 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
578 initEReference(getConstellationMission_GroundStationNetwork(), this.getGroundStationNetwork(), null,
579 "groundStationNetwork", null, 1, 1, ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE,
580 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
581 initEReference(getConstellationMission_Spacecraft(), this.getSpacecraft(), null, "spacecraft", null, 2, 50,
582 ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
583 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
584
585 initEClass(interferometryMissionEClass, InterferometryMission.class, "InterferometryMission", !IS_ABSTRACT,
586 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
587 initEAttribute(getInterferometryMission_ObservationTime(), ecorePackage.getEFloat(), "observationTime", "2.0",
588 1, 1, InterferometryMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
589 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
590
591 initEClass(communicatingElementEClass, CommunicatingElement.class, "CommunicatingElement", IS_ABSTRACT,
592 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
593 initEReference(getCommunicatingElement_CommSubsystem(), this.getCommSubsystem(), null, "commSubsystem", null, 1,
594 2, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
595 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
596 initEReference(getCommunicatingElement_CommunicationLink(), this.getDirectedCommunicationLink(), null,
597 "communicationLink", null, 0, 1, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
598 IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
599
600 initEClass(groundStationNetworkEClass, GroundStationNetwork.class, "GroundStationNetwork", !IS_ABSTRACT,
601 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
602
603 initEClass(spacecraftEClass, Spacecraft.class, "Spacecraft", IS_ABSTRACT, !IS_INTERFACE,
604 IS_GENERATED_INSTANCE_CLASS);
605 initEReference(getSpacecraft_Payload(), this.getPayload(), null, "payload", null, 0, 1, Spacecraft.class,
606 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
607 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
608 initEAttribute(getSpacecraft_Kind(), this.getSpacecraftKind(), "kind", null, 1, 1, Spacecraft.class,
609 IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
610
611 initEClass(commSubsystemEClass, CommSubsystem.class, "CommSubsystem", !IS_ABSTRACT, !IS_INTERFACE,
612 IS_GENERATED_INSTANCE_CLASS);
613 initEAttribute(getCommSubsystem_Band(), this.getTransceiverBand(), "band", null, 1, 1, CommSubsystem.class,
614 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
615 initEAttribute(getCommSubsystem_Gain(), this.getAntennaGain(), "gain", null, 1, 1, CommSubsystem.class,
616 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
617
618 initEClass(directedCommunicationLinkEClass, DirectedCommunicationLink.class, "DirectedCommunicationLink",
619 !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
620 initEReference(getDirectedCommunicationLink_Source(), this.getCommSubsystem(), null, "source", null, 1, 1,
621 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
622 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
623 initEReference(getDirectedCommunicationLink_Target(), this.getCommSubsystem(), null, "target", null, 1, 1,
624 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
625 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
626
627 initEClass(payloadEClass, Payload.class, "Payload", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
628
629 initEClass(interferometryPayloadEClass, InterferometryPayload.class, "InterferometryPayload", !IS_ABSTRACT,
630 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
631
632 initEClass(cubeSat3UEClass, CubeSat3U.class, "CubeSat3U", !IS_ABSTRACT, !IS_INTERFACE,
633 IS_GENERATED_INSTANCE_CLASS);
634
635 initEClass(cubeSat6UEClass, CubeSat6U.class, "CubeSat6U", !IS_ABSTRACT, !IS_INTERFACE,
636 IS_GENERATED_INSTANCE_CLASS);
637
638 initEClass(smallSatEClass, SmallSat.class, "SmallSat", !IS_ABSTRACT, !IS_INTERFACE,
639 IS_GENERATED_INSTANCE_CLASS);
640
641 // Initialize enums and add enum literals
642 initEEnum(transceiverBandEEnum, TransceiverBand.class, "TransceiverBand");
643 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.UHF);
644 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.X);
645 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.KA);
646
647 initEEnum(antennaGainEEnum, AntennaGain.class, "AntennaGain");
648 addEEnumLiteral(antennaGainEEnum, AntennaGain.LOW);
649 addEEnumLiteral(antennaGainEEnum, AntennaGain.MEDIUM);
650 addEEnumLiteral(antennaGainEEnum, AntennaGain.HIGH);
651
652 initEEnum(spacecraftKindEEnum, SpacecraftKind.class, "SpacecraftKind");
653 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT3_U);
654 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT6_U);
655 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.SMALL_SAT);
656
657 // Create resource
658 createResource(eNS_URI);
659
660 // Create annotations
661 // http://www.eclipse.org/emf/2002/Ecore
662 createEcoreAnnotations();
663 // org.eclipse.viatra.query.querybasedfeature
664 createOrgAnnotations();
665 }
666
667 /**
668 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
669 * <!-- begin-user-doc -->
670 * <!-- end-user-doc -->
671 * @generated
672 */
673 protected void createEcoreAnnotations() {
674 String source = "http://www.eclipse.org/emf/2002/Ecore";
675 addAnnotation(this, source, new String[] { "settingDelegates", "org.eclipse.viatra.query.querybasedfeature" });
676 }
677
678 /**
679 * Initializes the annotations for <b>org.eclipse.viatra.query.querybasedfeature</b>.
680 * <!-- begin-user-doc -->
681 * <!-- end-user-doc -->
682 * @generated
683 */
684 protected void createOrgAnnotations() {
685 String source = "org.eclipse.viatra.query.querybasedfeature";
686 addAnnotation(getSpacecraft_Kind(), source,
687 new String[] { "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind" });
688 }
689
690} //SatellitePackageImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SmallSatImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SmallSatImpl.java
new file mode 100644
index 00000000..1785dbf3
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SmallSatImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.ecore.EClass;
6
7import satellite.SatellitePackage;
8import satellite.SmallSat;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Small Sat</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class SmallSatImpl extends SpacecraftImpl implements SmallSat {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected SmallSatImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return SatellitePackage.Literals.SMALL_SAT;
35 }
36
37} //SmallSatImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SpacecraftImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SpacecraftImpl.java
new file mode 100644
index 00000000..73609fbd
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/impl/SpacecraftImpl.java
@@ -0,0 +1,212 @@
1/**
2 */
3package satellite.impl;
4
5import org.eclipse.emf.common.notify.Notification;
6import org.eclipse.emf.common.notify.NotificationChain;
7
8import org.eclipse.emf.ecore.EClass;
9import org.eclipse.emf.ecore.EStructuralFeature;
10import org.eclipse.emf.ecore.InternalEObject;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14import satellite.Payload;
15import satellite.SatellitePackage;
16import satellite.Spacecraft;
17import satellite.SpacecraftKind;
18
19/**
20 * <!-- begin-user-doc -->
21 * An implementation of the model object '<em><b>Spacecraft</b></em>'.
22 * <!-- end-user-doc -->
23 * <p>
24 * The following features are implemented:
25 * </p>
26 * <ul>
27 * <li>{@link satellite.impl.SpacecraftImpl#getPayload <em>Payload</em>}</li>
28 * <li>{@link satellite.impl.SpacecraftImpl#getKind <em>Kind</em>}</li>
29 * </ul>
30 *
31 * @generated
32 */
33public abstract class SpacecraftImpl extends CommunicatingElementImpl implements Spacecraft {
34 /**
35 * The cached value of the '{@link #getPayload() <em>Payload</em>}' containment reference.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @see #getPayload()
39 * @generated
40 * @ordered
41 */
42 protected Payload payload;
43
44 /**
45 * The cached setting delegate for the '{@link #getKind() <em>Kind</em>}' attribute.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @see #getKind()
49 * @generated
50 * @ordered
51 */
52 protected EStructuralFeature.Internal.SettingDelegate KIND__ESETTING_DELEGATE = ((EStructuralFeature.Internal) SatellitePackage.Literals.SPACECRAFT__KIND)
53 .getSettingDelegate();
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 protected SpacecraftImpl() {
61 super();
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 @Override
70 protected EClass eStaticClass() {
71 return SatellitePackage.Literals.SPACECRAFT;
72 }
73
74 /**
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @generated
78 */
79 @Override
80 public Payload getPayload() {
81 return payload;
82 }
83
84 /**
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @generated
88 */
89 public NotificationChain basicSetPayload(Payload newPayload, NotificationChain msgs) {
90 Payload oldPayload = payload;
91 payload = newPayload;
92 if (eNotificationRequired()) {
93 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
94 SatellitePackage.SPACECRAFT__PAYLOAD, oldPayload, newPayload);
95 if (msgs == null)
96 msgs = notification;
97 else
98 msgs.add(notification);
99 }
100 return msgs;
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 @Override
109 public void setPayload(Payload newPayload) {
110 if (newPayload != payload) {
111 NotificationChain msgs = null;
112 if (payload != null)
113 msgs = ((InternalEObject) payload).eInverseRemove(this,
114 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
115 if (newPayload != null)
116 msgs = ((InternalEObject) newPayload).eInverseAdd(this,
117 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
118 msgs = basicSetPayload(newPayload, msgs);
119 if (msgs != null)
120 msgs.dispatch();
121 } else if (eNotificationRequired())
122 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.SPACECRAFT__PAYLOAD, newPayload,
123 newPayload));
124 }
125
126 /**
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 */
131 @Override
132 public SpacecraftKind getKind() {
133 return (SpacecraftKind) KIND__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false);
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
143 switch (featureID) {
144 case SatellitePackage.SPACECRAFT__PAYLOAD:
145 return basicSetPayload(null, msgs);
146 }
147 return super.eInverseRemove(otherEnd, featureID, msgs);
148 }
149
150 /**
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @generated
154 */
155 @Override
156 public Object eGet(int featureID, boolean resolve, boolean coreType) {
157 switch (featureID) {
158 case SatellitePackage.SPACECRAFT__PAYLOAD:
159 return getPayload();
160 case SatellitePackage.SPACECRAFT__KIND:
161 return getKind();
162 }
163 return super.eGet(featureID, resolve, coreType);
164 }
165
166 /**
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @generated
170 */
171 @Override
172 public void eSet(int featureID, Object newValue) {
173 switch (featureID) {
174 case SatellitePackage.SPACECRAFT__PAYLOAD:
175 setPayload((Payload) newValue);
176 return;
177 }
178 super.eSet(featureID, newValue);
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 @Override
187 public void eUnset(int featureID) {
188 switch (featureID) {
189 case SatellitePackage.SPACECRAFT__PAYLOAD:
190 setPayload((Payload) null);
191 return;
192 }
193 super.eUnset(featureID);
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public boolean eIsSet(int featureID) {
203 switch (featureID) {
204 case SatellitePackage.SPACECRAFT__PAYLOAD:
205 return payload != null;
206 case SatellitePackage.SPACECRAFT__KIND:
207 return KIND__ESETTING_DELEGATE.dynamicIsSet(this, null, 0);
208 }
209 return super.eIsSet(featureID);
210 }
211
212} //SpacecraftImpl
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteAdapterFactory.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteAdapterFactory.java
new file mode 100644
index 00000000..1ecf7b19
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteAdapterFactory.java
@@ -0,0 +1,328 @@
1/**
2 */
3package satellite.util;
4
5import org.eclipse.emf.common.notify.Adapter;
6import org.eclipse.emf.common.notify.Notifier;
7
8import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
9
10import org.eclipse.emf.ecore.EObject;
11
12import satellite.*;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see satellite.SatellitePackage
20 * @generated
21 */
22public class SatelliteAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static SatellitePackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public SatelliteAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = SatellitePackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject) object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected SatelliteSwitch<Adapter> modelSwitch = new SatelliteSwitch<Adapter>() {
69 @Override
70 public Adapter caseConstellationMission(ConstellationMission object) {
71 return createConstellationMissionAdapter();
72 }
73
74 @Override
75 public Adapter caseInterferometryMission(InterferometryMission object) {
76 return createInterferometryMissionAdapter();
77 }
78
79 @Override
80 public Adapter caseCommunicatingElement(CommunicatingElement object) {
81 return createCommunicatingElementAdapter();
82 }
83
84 @Override
85 public Adapter caseGroundStationNetwork(GroundStationNetwork object) {
86 return createGroundStationNetworkAdapter();
87 }
88
89 @Override
90 public Adapter caseSpacecraft(Spacecraft object) {
91 return createSpacecraftAdapter();
92 }
93
94 @Override
95 public Adapter caseCommSubsystem(CommSubsystem object) {
96 return createCommSubsystemAdapter();
97 }
98
99 @Override
100 public Adapter caseDirectedCommunicationLink(DirectedCommunicationLink object) {
101 return createDirectedCommunicationLinkAdapter();
102 }
103
104 @Override
105 public Adapter casePayload(Payload object) {
106 return createPayloadAdapter();
107 }
108
109 @Override
110 public Adapter caseInterferometryPayload(InterferometryPayload object) {
111 return createInterferometryPayloadAdapter();
112 }
113
114 @Override
115 public Adapter caseCubeSat3U(CubeSat3U object) {
116 return createCubeSat3UAdapter();
117 }
118
119 @Override
120 public Adapter caseCubeSat6U(CubeSat6U object) {
121 return createCubeSat6UAdapter();
122 }
123
124 @Override
125 public Adapter caseSmallSat(SmallSat object) {
126 return createSmallSatAdapter();
127 }
128
129 @Override
130 public Adapter defaultCase(EObject object) {
131 return createEObjectAdapter();
132 }
133 };
134
135 /**
136 * Creates an adapter for the <code>target</code>.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @param target the object to adapt.
140 * @return the adapter for the <code>target</code>.
141 * @generated
142 */
143 @Override
144 public Adapter createAdapter(Notifier target) {
145 return modelSwitch.doSwitch((EObject) target);
146 }
147
148 /**
149 * Creates a new adapter for an object of class '{@link satellite.ConstellationMission <em>Constellation Mission</em>}'.
150 * <!-- begin-user-doc -->
151 * This default implementation returns null so that we can easily ignore cases;
152 * it's useful to ignore a case when inheritance will catch all the cases anyway.
153 * <!-- end-user-doc -->
154 * @return the new adapter.
155 * @see satellite.ConstellationMission
156 * @generated
157 */
158 public Adapter createConstellationMissionAdapter() {
159 return null;
160 }
161
162 /**
163 * Creates a new adapter for an object of class '{@link satellite.InterferometryMission <em>Interferometry Mission</em>}'.
164 * <!-- begin-user-doc -->
165 * This default implementation returns null so that we can easily ignore cases;
166 * it's useful to ignore a case when inheritance will catch all the cases anyway.
167 * <!-- end-user-doc -->
168 * @return the new adapter.
169 * @see satellite.InterferometryMission
170 * @generated
171 */
172 public Adapter createInterferometryMissionAdapter() {
173 return null;
174 }
175
176 /**
177 * Creates a new adapter for an object of class '{@link satellite.CommunicatingElement <em>Communicating Element</em>}'.
178 * <!-- begin-user-doc -->
179 * This default implementation returns null so that we can easily ignore cases;
180 * it's useful to ignore a case when inheritance will catch all the cases anyway.
181 * <!-- end-user-doc -->
182 * @return the new adapter.
183 * @see satellite.CommunicatingElement
184 * @generated
185 */
186 public Adapter createCommunicatingElementAdapter() {
187 return null;
188 }
189
190 /**
191 * Creates a new adapter for an object of class '{@link satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
192 * <!-- begin-user-doc -->
193 * This default implementation returns null so that we can easily ignore cases;
194 * it's useful to ignore a case when inheritance will catch all the cases anyway.
195 * <!-- end-user-doc -->
196 * @return the new adapter.
197 * @see satellite.GroundStationNetwork
198 * @generated
199 */
200 public Adapter createGroundStationNetworkAdapter() {
201 return null;
202 }
203
204 /**
205 * Creates a new adapter for an object of class '{@link satellite.Spacecraft <em>Spacecraft</em>}'.
206 * <!-- begin-user-doc -->
207 * This default implementation returns null so that we can easily ignore cases;
208 * it's useful to ignore a case when inheritance will catch all the cases anyway.
209 * <!-- end-user-doc -->
210 * @return the new adapter.
211 * @see satellite.Spacecraft
212 * @generated
213 */
214 public Adapter createSpacecraftAdapter() {
215 return null;
216 }
217
218 /**
219 * Creates a new adapter for an object of class '{@link satellite.CommSubsystem <em>Comm Subsystem</em>}'.
220 * <!-- begin-user-doc -->
221 * This default implementation returns null so that we can easily ignore cases;
222 * it's useful to ignore a case when inheritance will catch all the cases anyway.
223 * <!-- end-user-doc -->
224 * @return the new adapter.
225 * @see satellite.CommSubsystem
226 * @generated
227 */
228 public Adapter createCommSubsystemAdapter() {
229 return null;
230 }
231
232 /**
233 * Creates a new adapter for an object of class '{@link satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
234 * <!-- begin-user-doc -->
235 * This default implementation returns null so that we can easily ignore cases;
236 * it's useful to ignore a case when inheritance will catch all the cases anyway.
237 * <!-- end-user-doc -->
238 * @return the new adapter.
239 * @see satellite.DirectedCommunicationLink
240 * @generated
241 */
242 public Adapter createDirectedCommunicationLinkAdapter() {
243 return null;
244 }
245
246 /**
247 * Creates a new adapter for an object of class '{@link satellite.Payload <em>Payload</em>}'.
248 * <!-- begin-user-doc -->
249 * This default implementation returns null so that we can easily ignore cases;
250 * it's useful to ignore a case when inheritance will catch all the cases anyway.
251 * <!-- end-user-doc -->
252 * @return the new adapter.
253 * @see satellite.Payload
254 * @generated
255 */
256 public Adapter createPayloadAdapter() {
257 return null;
258 }
259
260 /**
261 * Creates a new adapter for an object of class '{@link satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
262 * <!-- begin-user-doc -->
263 * This default implementation returns null so that we can easily ignore cases;
264 * it's useful to ignore a case when inheritance will catch all the cases anyway.
265 * <!-- end-user-doc -->
266 * @return the new adapter.
267 * @see satellite.InterferometryPayload
268 * @generated
269 */
270 public Adapter createInterferometryPayloadAdapter() {
271 return null;
272 }
273
274 /**
275 * Creates a new adapter for an object of class '{@link satellite.CubeSat3U <em>Cube Sat3 U</em>}'.
276 * <!-- begin-user-doc -->
277 * This default implementation returns null so that we can easily ignore cases;
278 * it's useful to ignore a case when inheritance will catch all the cases anyway.
279 * <!-- end-user-doc -->
280 * @return the new adapter.
281 * @see satellite.CubeSat3U
282 * @generated
283 */
284 public Adapter createCubeSat3UAdapter() {
285 return null;
286 }
287
288 /**
289 * Creates a new adapter for an object of class '{@link satellite.CubeSat6U <em>Cube Sat6 U</em>}'.
290 * <!-- begin-user-doc -->
291 * This default implementation returns null so that we can easily ignore cases;
292 * it's useful to ignore a case when inheritance will catch all the cases anyway.
293 * <!-- end-user-doc -->
294 * @return the new adapter.
295 * @see satellite.CubeSat6U
296 * @generated
297 */
298 public Adapter createCubeSat6UAdapter() {
299 return null;
300 }
301
302 /**
303 * Creates a new adapter for an object of class '{@link satellite.SmallSat <em>Small Sat</em>}'.
304 * <!-- begin-user-doc -->
305 * This default implementation returns null so that we can easily ignore cases;
306 * it's useful to ignore a case when inheritance will catch all the cases anyway.
307 * <!-- end-user-doc -->
308 * @return the new adapter.
309 * @see satellite.SmallSat
310 * @generated
311 */
312 public Adapter createSmallSatAdapter() {
313 return null;
314 }
315
316 /**
317 * Creates a new adapter for the default case.
318 * <!-- begin-user-doc -->
319 * This default implementation returns null.
320 * <!-- end-user-doc -->
321 * @return the new adapter.
322 * @generated
323 */
324 public Adapter createEObjectAdapter() {
325 return null;
326 }
327
328} //SatelliteAdapterFactory
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteSwitch.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteSwitch.java
new file mode 100644
index 00000000..3eb78d75
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/satellite/util/SatelliteSwitch.java
@@ -0,0 +1,374 @@
1/**
2 */
3package satellite.util;
4
5import org.eclipse.emf.ecore.EObject;
6import org.eclipse.emf.ecore.EPackage;
7
8import org.eclipse.emf.ecore.util.Switch;
9
10import satellite.*;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see satellite.SatellitePackage
23 * @generated
24 */
25public class SatelliteSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static SatellitePackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public SatelliteSwitch() {
41 if (modelPackage == null) {
42 modelPackage = SatellitePackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case SatellitePackage.CONSTELLATION_MISSION: {
70 ConstellationMission constellationMission = (ConstellationMission) theEObject;
71 T result = caseConstellationMission(constellationMission);
72 if (result == null)
73 result = defaultCase(theEObject);
74 return result;
75 }
76 case SatellitePackage.INTERFEROMETRY_MISSION: {
77 InterferometryMission interferometryMission = (InterferometryMission) theEObject;
78 T result = caseInterferometryMission(interferometryMission);
79 if (result == null)
80 result = caseConstellationMission(interferometryMission);
81 if (result == null)
82 result = defaultCase(theEObject);
83 return result;
84 }
85 case SatellitePackage.COMMUNICATING_ELEMENT: {
86 CommunicatingElement communicatingElement = (CommunicatingElement) theEObject;
87 T result = caseCommunicatingElement(communicatingElement);
88 if (result == null)
89 result = defaultCase(theEObject);
90 return result;
91 }
92 case SatellitePackage.GROUND_STATION_NETWORK: {
93 GroundStationNetwork groundStationNetwork = (GroundStationNetwork) theEObject;
94 T result = caseGroundStationNetwork(groundStationNetwork);
95 if (result == null)
96 result = caseCommunicatingElement(groundStationNetwork);
97 if (result == null)
98 result = defaultCase(theEObject);
99 return result;
100 }
101 case SatellitePackage.SPACECRAFT: {
102 Spacecraft spacecraft = (Spacecraft) theEObject;
103 T result = caseSpacecraft(spacecraft);
104 if (result == null)
105 result = caseCommunicatingElement(spacecraft);
106 if (result == null)
107 result = defaultCase(theEObject);
108 return result;
109 }
110 case SatellitePackage.COMM_SUBSYSTEM: {
111 CommSubsystem commSubsystem = (CommSubsystem) theEObject;
112 T result = caseCommSubsystem(commSubsystem);
113 if (result == null)
114 result = defaultCase(theEObject);
115 return result;
116 }
117 case SatellitePackage.DIRECTED_COMMUNICATION_LINK: {
118 DirectedCommunicationLink directedCommunicationLink = (DirectedCommunicationLink) theEObject;
119 T result = caseDirectedCommunicationLink(directedCommunicationLink);
120 if (result == null)
121 result = defaultCase(theEObject);
122 return result;
123 }
124 case SatellitePackage.PAYLOAD: {
125 Payload payload = (Payload) theEObject;
126 T result = casePayload(payload);
127 if (result == null)
128 result = defaultCase(theEObject);
129 return result;
130 }
131 case SatellitePackage.INTERFEROMETRY_PAYLOAD: {
132 InterferometryPayload interferometryPayload = (InterferometryPayload) theEObject;
133 T result = caseInterferometryPayload(interferometryPayload);
134 if (result == null)
135 result = casePayload(interferometryPayload);
136 if (result == null)
137 result = defaultCase(theEObject);
138 return result;
139 }
140 case SatellitePackage.CUBE_SAT3_U: {
141 CubeSat3U cubeSat3U = (CubeSat3U) theEObject;
142 T result = caseCubeSat3U(cubeSat3U);
143 if (result == null)
144 result = caseSpacecraft(cubeSat3U);
145 if (result == null)
146 result = caseCommunicatingElement(cubeSat3U);
147 if (result == null)
148 result = defaultCase(theEObject);
149 return result;
150 }
151 case SatellitePackage.CUBE_SAT6_U: {
152 CubeSat6U cubeSat6U = (CubeSat6U) theEObject;
153 T result = caseCubeSat6U(cubeSat6U);
154 if (result == null)
155 result = caseSpacecraft(cubeSat6U);
156 if (result == null)
157 result = caseCommunicatingElement(cubeSat6U);
158 if (result == null)
159 result = defaultCase(theEObject);
160 return result;
161 }
162 case SatellitePackage.SMALL_SAT: {
163 SmallSat smallSat = (SmallSat) theEObject;
164 T result = caseSmallSat(smallSat);
165 if (result == null)
166 result = caseSpacecraft(smallSat);
167 if (result == null)
168 result = caseCommunicatingElement(smallSat);
169 if (result == null)
170 result = defaultCase(theEObject);
171 return result;
172 }
173 default:
174 return defaultCase(theEObject);
175 }
176 }
177
178 /**
179 * Returns the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
180 * <!-- begin-user-doc -->
181 * This implementation returns null;
182 * returning a non-null result will terminate the switch.
183 * <!-- end-user-doc -->
184 * @param object the target of the switch.
185 * @return the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
186 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
187 * @generated
188 */
189 public T caseConstellationMission(ConstellationMission object) {
190 return null;
191 }
192
193 /**
194 * Returns the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
195 * <!-- begin-user-doc -->
196 * This implementation returns null;
197 * returning a non-null result will terminate the switch.
198 * <!-- end-user-doc -->
199 * @param object the target of the switch.
200 * @return the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
201 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
202 * @generated
203 */
204 public T caseInterferometryMission(InterferometryMission object) {
205 return null;
206 }
207
208 /**
209 * Returns the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
210 * <!-- begin-user-doc -->
211 * This implementation returns null;
212 * returning a non-null result will terminate the switch.
213 * <!-- end-user-doc -->
214 * @param object the target of the switch.
215 * @return the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
216 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
217 * @generated
218 */
219 public T caseCommunicatingElement(CommunicatingElement object) {
220 return null;
221 }
222
223 /**
224 * Returns the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
225 * <!-- begin-user-doc -->
226 * This implementation returns null;
227 * returning a non-null result will terminate the switch.
228 * <!-- end-user-doc -->
229 * @param object the target of the switch.
230 * @return the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
231 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
232 * @generated
233 */
234 public T caseGroundStationNetwork(GroundStationNetwork object) {
235 return null;
236 }
237
238 /**
239 * Returns the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
240 * <!-- begin-user-doc -->
241 * This implementation returns null;
242 * returning a non-null result will terminate the switch.
243 * <!-- end-user-doc -->
244 * @param object the target of the switch.
245 * @return the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
246 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
247 * @generated
248 */
249 public T caseSpacecraft(Spacecraft object) {
250 return null;
251 }
252
253 /**
254 * Returns the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
255 * <!-- begin-user-doc -->
256 * This implementation returns null;
257 * returning a non-null result will terminate the switch.
258 * <!-- end-user-doc -->
259 * @param object the target of the switch.
260 * @return the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
261 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
262 * @generated
263 */
264 public T caseCommSubsystem(CommSubsystem object) {
265 return null;
266 }
267
268 /**
269 * Returns the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
270 * <!-- begin-user-doc -->
271 * This implementation returns null;
272 * returning a non-null result will terminate the switch.
273 * <!-- end-user-doc -->
274 * @param object the target of the switch.
275 * @return the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
276 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
277 * @generated
278 */
279 public T caseDirectedCommunicationLink(DirectedCommunicationLink object) {
280 return null;
281 }
282
283 /**
284 * Returns the result of interpreting the object as an instance of '<em>Payload</em>'.
285 * <!-- begin-user-doc -->
286 * This implementation returns null;
287 * returning a non-null result will terminate the switch.
288 * <!-- end-user-doc -->
289 * @param object the target of the switch.
290 * @return the result of interpreting the object as an instance of '<em>Payload</em>'.
291 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
292 * @generated
293 */
294 public T casePayload(Payload object) {
295 return null;
296 }
297
298 /**
299 * Returns the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
300 * <!-- begin-user-doc -->
301 * This implementation returns null;
302 * returning a non-null result will terminate the switch.
303 * <!-- end-user-doc -->
304 * @param object the target of the switch.
305 * @return the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
306 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
307 * @generated
308 */
309 public T caseInterferometryPayload(InterferometryPayload object) {
310 return null;
311 }
312
313 /**
314 * Returns the result of interpreting the object as an instance of '<em>Cube Sat3 U</em>'.
315 * <!-- begin-user-doc -->
316 * This implementation returns null;
317 * returning a non-null result will terminate the switch.
318 * <!-- end-user-doc -->
319 * @param object the target of the switch.
320 * @return the result of interpreting the object as an instance of '<em>Cube Sat3 U</em>'.
321 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
322 * @generated
323 */
324 public T caseCubeSat3U(CubeSat3U object) {
325 return null;
326 }
327
328 /**
329 * Returns the result of interpreting the object as an instance of '<em>Cube Sat6 U</em>'.
330 * <!-- begin-user-doc -->
331 * This implementation returns null;
332 * returning a non-null result will terminate the switch.
333 * <!-- end-user-doc -->
334 * @param object the target of the switch.
335 * @return the result of interpreting the object as an instance of '<em>Cube Sat6 U</em>'.
336 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
337 * @generated
338 */
339 public T caseCubeSat6U(CubeSat6U object) {
340 return null;
341 }
342
343 /**
344 * Returns the result of interpreting the object as an instance of '<em>Small Sat</em>'.
345 * <!-- begin-user-doc -->
346 * This implementation returns null;
347 * returning a non-null result will terminate the switch.
348 * <!-- end-user-doc -->
349 * @param object the target of the switch.
350 * @return the result of interpreting the object as an instance of '<em>Small Sat</em>'.
351 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
352 * @generated
353 */
354 public T caseSmallSat(SmallSat object) {
355 return null;
356 }
357
358 /**
359 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
360 * <!-- begin-user-doc -->
361 * This implementation returns null;
362 * returning a non-null result will terminate the switch, but this is the last case anyway.
363 * <!-- end-user-doc -->
364 * @param object the target of the switch.
365 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
366 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
367 * @generated
368 */
369 @Override
370 public T defaultCase(EObject object) {
371 return null;
372 }
373
374} //SatelliteSwitch
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/inputs/SatelliteInstance.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/inputs/SatelliteInstance.xmi
new file mode 100644
index 00000000..9431d981
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/inputs/SatelliteInstance.xmi
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<satellite:InterferometryMission
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:satellite="http://www.example.org/satellite"
7 xsi:schemaLocation="http://www.example.org/satellite ../model/satellite.ecore">
8 <groundStationNetwork>
9 <commSubsystem
10 band="X"
11 gain="MEDIUM"/>
12 <commSubsystem
13 band="Ka"
14 gain="HIGH"/>
15 </groundStationNetwork>
16</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.aird b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.aird
new file mode 100644
index 00000000..31575c3c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.aird
@@ -0,0 +1,2225 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_rcawQF0qEemRYLyXht2IrQ" selectedViews="_reOHEF0qEemRYLyXht2IrQ" version="14.1.0.201810161215">
4 <semanticResources>satellite.ecore</semanticResources>
5 <semanticResources>satellite.genmodel</semanticResources>
6 <semanticResources>../src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql</semanticResources>
7 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources>
8 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.GenericPatternMatcher</semanticResources>
9 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseMatcher</semanticResources>
10 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.GenericPatternMatch</semanticResources>
11 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.GenericQuerySpecification</semanticResources>
12 <semanticResources>java:/Objects/java.lang.Object</semanticResources>
13 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.ViatraQueryEngine</semanticResources>
14 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.tuple.Tuple</semanticResources>
15 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.internal.apiimpl.QueryResultWrapper</semanticResources>
16 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher</semanticResources>
17 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.IQuerySpecification</semanticResources>
18 <semanticResources>java:/Primitives</semanticResources>
19 <semanticResources>java:/Objects/java.util.function.Consumer</semanticResources>
20 <semanticResources>java:/Objects/java.util.Collection</semanticResources>
21 <semanticResources>java:/Objects/java.lang.String</semanticResources>
22 <semanticResources>java:/Objects/java.util.Set</semanticResources>
23 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IMatcherCapability</semanticResources>
24 <semanticResources>java:/Objects/java.util.Optional</semanticResources>
25 <semanticResources>java:/Objects/java.util.List</semanticResources>
26 <semanticResources>java:/Objects/java.lang.Integer</semanticResources>
27 <semanticResources>java:/Objects/java.util.stream.Stream</semanticResources>
28 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IQueryResultProvider</semanticResources>
29 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.IPatternMatch</semanticResources>
30 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQueryHeader</semanticResources>
31 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery</semanticResources>
32 <semanticResources>java:/Objects/java.lang.Class</semanticResources>
33 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.QueryScope</semanticResources>
34 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation</semanticResources>
35 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter</semanticResources>
36 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility</semanticResources>
37 <semanticResources>java:/Objects/java.util.function.BiConsumer</semanticResources>
38 <semanticResources>java:/Objects/java.lang.FunctionalInterface</semanticResources>
39 <semanticResources>java:/Objects/java.lang.annotation.Target</semanticResources>
40 <semanticResources>java:/Objects/java.lang.annotation.ElementType</semanticResources>
41 <semanticResources>java:/Objects/java.lang.annotation.Retention</semanticResources>
42 <semanticResources>java:/Objects/java.lang.annotation.RetentionPolicy</semanticResources>
43 <semanticResources>java:/Objects/java.lang.annotation.Documented</semanticResources>
44 <semanticResources>java:/Objects/java.lang.annotation.Annotation</semanticResources>
45 <semanticResources>java:/Objects/java.lang.Enum</semanticResources>
46 <semanticResources>java:/Objects/java.lang.Comparable</semanticResources>
47 <semanticResources>java:/Objects/java.io.Serializable</semanticResources>
48 <semanticResources>java:/Objects/java.lang.CloneNotSupportedException</semanticResources>
49 <semanticResources>java:/Objects/java.io.ObjectInputStream</semanticResources>
50 <semanticResources>java:/Objects/java.io.IOException</semanticResources>
51 <semanticResources>java:/Objects/java.lang.ClassNotFoundException</semanticResources>
52 <semanticResources>java:/Objects/java.io.ObjectStreamException</semanticResources>
53 <semanticResources>java:/Objects/java.lang.Exception</semanticResources>
54 <semanticResources>java:/Objects/java.lang.Throwable</semanticResources>
55 <semanticResources>java:/Objects/java.io.PrintWriter</semanticResources>
56 <semanticResources>java:/Objects/java.io.PrintStream</semanticResources>
57 <semanticResources>java:/Objects/java.lang.StackTraceElement</semanticResources>
58 <semanticResources>java:/Objects/java.io.ObjectOutputStream</semanticResources>
59 <semanticResources>java:/Objects/java.io.Writer</semanticResources>
60 <semanticResources>java:/Objects/java.io.OutputStream</semanticResources>
61 <semanticResources>java:/Objects/java.io.FileNotFoundException</semanticResources>
62 <semanticResources>java:/Objects/java.io.File</semanticResources>
63 <semanticResources>java:/Objects/java.nio.charset.Charset</semanticResources>
64 <semanticResources>java:/Objects/java.io.UnsupportedEncodingException</semanticResources>
65 <semanticResources>java:/Objects/java.lang.CharSequence</semanticResources>
66 <semanticResources>java:/Objects/java.util.Locale</semanticResources>
67 <semanticResources>java:/Objects/java.util.Formatter</semanticResources>
68 <semanticResources>java:/Objects/java.lang.Appendable</semanticResources>
69 <semanticResources>java:/Objects/java.io.Closeable</semanticResources>
70 <semanticResources>java:/Objects/java.io.Flushable</semanticResources>
71 <semanticResources>java:/Objects/java.lang.AutoCloseable</semanticResources>
72 <semanticResources>java:/Objects/java.security.SecureRandom</semanticResources>
73 <semanticResources>java:/Objects/java.net.URI</semanticResources>
74 <semanticResources>java:/Objects/java.io.FilenameFilter</semanticResources>
75 <semanticResources>java:/Objects/java.io.FileFilter</semanticResources>
76 <semanticResources>java:/Objects/java.nio.file.Path</semanticResources>
77 <semanticResources>java:/Objects/java.lang.Deprecated</semanticResources>
78 <semanticResources>java:/Objects/java.net.MalformedURLException</semanticResources>
79 <semanticResources>java:/Objects/java.net.URL</semanticResources>
80 <semanticResources>java:/Objects/sun.misc.Unsafe</semanticResources>
81 <semanticResources>java:/Objects/java.io.FileSystem</semanticResources>
82 <semanticResources>java:/Objects/java.util.Random</semanticResources>
83 <semanticResources>java:/Objects/java.util.regex.Pattern</semanticResources>
84 <semanticResources>java:/Objects/java.security.SecureRandomSpi</semanticResources>
85 <semanticResources>java:/Objects/java.security.Provider</semanticResources>
86 <semanticResources>java:/Objects/java.security.NoSuchAlgorithmException</semanticResources>
87 <semanticResources>java:/Objects/java.security.NoSuchProviderException</semanticResources>
88 <semanticResources>java:/Objects/java.security.MessageDigest</semanticResources>
89 <semanticResources>java:/Objects/sun.security.util.Debug</semanticResources>
90 <semanticResources>java:/Objects/java.util.Spliterator</semanticResources>
91 <semanticResources>java:/Objects/java.util.function.DoubleConsumer</semanticResources>
92 <semanticResources>java:/Objects/java.util.function.LongConsumer</semanticResources>
93 <semanticResources>java:/Objects/java.util.function.IntConsumer</semanticResources>
94 <semanticResources>java:/Objects/java.util.stream.DoubleStream</semanticResources>
95 <semanticResources>java:/Objects/java.util.stream.IntStream</semanticResources>
96 <semanticResources>java:/Objects/java.util.stream.LongStream</semanticResources>
97 <semanticResources>java:/Objects/java.util.concurrent.atomic.AtomicLong</semanticResources>
98 <semanticResources>java:/Objects/java.io.ObjectStreamField</semanticResources>
99 <semanticResources>java:/Objects/java.lang.Double</semanticResources>
100 <semanticResources>java:/Objects/java.lang.Long</semanticResources>
101 <semanticResources>java:/Objects/java.util.Comparator</semanticResources>
102 <semanticResources>java:/Objects/java.lang.Number</semanticResources>
103 <semanticResources>java:/Objects/java.lang.NumberFormatException</semanticResources>
104 <semanticResources>java:/Objects/java.lang.IllegalArgumentException</semanticResources>
105 <semanticResources>java:/Objects/java.lang.RuntimeException</semanticResources>
106 <semanticResources>java:/Objects/java.math.BigInteger</semanticResources>
107 <semanticResources>java:/Objects/java.lang.StringBuilder</semanticResources>
108 <semanticResources>java:/Objects/java.lang.AbstractStringBuilder</semanticResources>
109 <semanticResources>java:/Objects/java.lang.StringBuffer</semanticResources>
110 <semanticResources>java:/Objects/java.util.function.Function</semanticResources>
111 <semanticResources>java:/Objects/java.util.function.ToDoubleFunction</semanticResources>
112 <semanticResources>java:/Objects/java.util.function.ToIntFunction</semanticResources>
113 <semanticResources>java:/Objects/java.util.function.ToLongFunction</semanticResources>
114 <semanticResources>java:/Objects/java.util.stream.BaseStream</semanticResources>
115 <semanticResources>java:/Objects/java.util.function.DoublePredicate</semanticResources>
116 <semanticResources>java:/Objects/java.util.OptionalDouble</semanticResources>
117 <semanticResources>java:/Objects/java.util.function.Supplier</semanticResources>
118 <semanticResources>java:/Objects/java.util.function.ObjDoubleConsumer</semanticResources>
119 <semanticResources>java:/Objects/java.util.function.DoubleFunction</semanticResources>
120 <semanticResources>java:/Objects/java.util.function.DoubleSupplier</semanticResources>
121 <semanticResources>java:/Objects/java.util.function.DoubleUnaryOperator</semanticResources>
122 <semanticResources>java:/Objects/java.util.PrimitiveIterator</semanticResources>
123 <semanticResources>java:/Objects/java.util.function.DoubleToIntFunction</semanticResources>
124 <semanticResources>java:/Objects/java.util.function.DoubleToLongFunction</semanticResources>
125 <semanticResources>java:/Objects/java.util.function.DoubleBinaryOperator</semanticResources>
126 <semanticResources>java:/Objects/java.util.DoubleSummaryStatistics</semanticResources>
127 <semanticResources>java:/Objects/java.util.Iterator</semanticResources>
128 <semanticResources>java:/Objects/java.lang.Runnable</semanticResources>
129 <semanticResources>java:/Objects/java.util.function.IntPredicate</semanticResources>
130 <semanticResources>java:/Objects/java.util.function.ObjIntConsumer</semanticResources>
131 <semanticResources>java:/Objects/java.util.OptionalInt</semanticResources>
132 <semanticResources>java:/Objects/java.util.function.IntFunction</semanticResources>
133 <semanticResources>java:/Objects/java.util.function.IntSupplier</semanticResources>
134 <semanticResources>java:/Objects/java.util.function.IntUnaryOperator</semanticResources>
135 <semanticResources>java:/Objects/java.util.function.IntToDoubleFunction</semanticResources>
136 <semanticResources>java:/Objects/java.util.function.IntToLongFunction</semanticResources>
137 <semanticResources>java:/Objects/java.util.function.IntBinaryOperator</semanticResources>
138 <semanticResources>java:/Objects/java.util.IntSummaryStatistics</semanticResources>
139 <semanticResources>java:/Objects/java.util.function.LongPredicate</semanticResources>
140 <semanticResources>java:/Objects/java.util.function.ObjLongConsumer</semanticResources>
141 <semanticResources>java:/Objects/java.util.OptionalLong</semanticResources>
142 <semanticResources>java:/Objects/java.util.function.LongFunction</semanticResources>
143 <semanticResources>java:/Objects/java.util.function.LongSupplier</semanticResources>
144 <semanticResources>java:/Objects/java.util.function.LongUnaryOperator</semanticResources>
145 <semanticResources>java:/Objects/java.util.function.LongToDoubleFunction</semanticResources>
146 <semanticResources>java:/Objects/java.util.function.LongToIntFunction</semanticResources>
147 <semanticResources>java:/Objects/java.util.function.LongBinaryOperator</semanticResources>
148 <semanticResources>java:/Objects/java.util.LongSummaryStatistics</semanticResources>
149 <semanticResources>java:/Objects/java.lang.reflect.Field</semanticResources>
150 <semanticResources>java:/Objects/sun.reflect.CallerSensitive</semanticResources>
151 <semanticResources>java:/Objects/java.lang.reflect.AccessibleObject</semanticResources>
152 <semanticResources>java:/Objects/java.lang.reflect.Member</semanticResources>
153 <semanticResources>java:/Objects/sun.reflect.FieldAccessor</semanticResources>
154 <semanticResources>java:/Objects/java.util.Map</semanticResources>
155 <semanticResources>java:/Objects/java.lang.IllegalAccessException</semanticResources>
156 <semanticResources>java:/Objects/java.lang.reflect.AnnotatedType</semanticResources>
157 <semanticResources>java:/Objects/sun.reflect.generics.factory.GenericsFactory</semanticResources>
158 <semanticResources>java:/Objects/sun.reflect.generics.repository.FieldRepository</semanticResources>
159 <semanticResources>java:/Objects/java.lang.reflect.Type</semanticResources>
160 <semanticResources>java:/Objects/java.lang.reflect.AnnotatedElement</semanticResources>
161 <semanticResources>java:/Objects/java.lang.SecurityException</semanticResources>
162 <semanticResources>java:/Objects/java.security.Permission</semanticResources>
163 <semanticResources>java:/Objects/sun.reflect.ReflectionFactory</semanticResources>
164 <semanticResources>java:/Objects/java.security.Guard</semanticResources>
165 <semanticResources>java:/Objects/java.security.PermissionCollection</semanticResources>
166 <semanticResources>java:/Objects/java.util.Enumeration</semanticResources>
167 <semanticResources>java:/Objects/java.security.PrivilegedAction</semanticResources>
168 <semanticResources>java:/Objects/java.lang.reflect.Constructor</semanticResources>
169 <semanticResources>java:/Objects/java.lang.reflect.Method</semanticResources>
170 <semanticResources>java:/Objects/java.lang.invoke.MethodHandle</semanticResources>
171 <semanticResources>java:/Objects/sun.reflect.ConstructorAccessor</semanticResources>
172 <semanticResources>java:/Objects/java.lang.reflect.Executable</semanticResources>
173 <semanticResources>java:/Objects/sun.reflect.MethodAccessor</semanticResources>
174 <semanticResources>java:/Objects/sun.reflect.LangReflectAccess</semanticResources>
175 <semanticResources>java:/Objects/java.io.OptionalDataException</semanticResources>
176 <semanticResources>java:/Objects/sun.reflect.generics.repository.ConstructorRepository</semanticResources>
177 <semanticResources>java:/Objects/java.lang.reflect.TypeVariable</semanticResources>
178 <semanticResources>java:/Objects/java.lang.InstantiationException</semanticResources>
179 <semanticResources>java:/Objects/java.lang.reflect.InvocationTargetException</semanticResources>
180 <semanticResources>java:/Objects/sun.reflect.generics.repository.GenericDeclRepository</semanticResources>
181 <semanticResources>java:/Objects/sun.reflect.generics.tree.MethodTypeSignature</semanticResources>
182 <semanticResources>java:/Objects/sun.reflect.generics.repository.AbstractRepository</semanticResources>
183 <semanticResources>java:/Objects/sun.reflect.generics.tree.Signature</semanticResources>
184 <semanticResources>java:/Objects/sun.reflect.generics.visitor.Reifier</semanticResources>
185 <semanticResources>java:/Objects/sun.reflect.generics.tree.Tree</semanticResources>
186 <semanticResources>java:/Objects/sun.reflect.generics.visitor.TypeTreeVisitor</semanticResources>
187 <semanticResources>java:/Objects/sun.reflect.generics.tree.TypeArgument</semanticResources>
188 <semanticResources>java:/Objects/sun.reflect.generics.tree.ArrayTypeSignature</semanticResources>
189 <semanticResources>java:/Objects/sun.reflect.generics.tree.BooleanSignature</semanticResources>
190 <semanticResources>java:/Objects/sun.reflect.generics.tree.BottomSignature</semanticResources>
191 <semanticResources>java:/Objects/sun.reflect.generics.tree.ByteSignature</semanticResources>
192 <semanticResources>java:/Objects/sun.reflect.generics.tree.CharSignature</semanticResources>
193 <semanticResources>java:/Objects/sun.reflect.generics.tree.ClassTypeSignature</semanticResources>
194 <semanticResources>java:/Objects/sun.reflect.generics.tree.DoubleSignature</semanticResources>
195 <semanticResources>java:/Objects/sun.reflect.generics.tree.FloatSignature</semanticResources>
196 <semanticResources>java:/Objects/sun.reflect.generics.tree.FormalTypeParameter</semanticResources>
197 <semanticResources>java:/Objects/sun.reflect.generics.tree.IntSignature</semanticResources>
198 <semanticResources>java:/Objects/sun.reflect.generics.tree.LongSignature</semanticResources>
199 <semanticResources>java:/Objects/sun.reflect.generics.tree.ShortSignature</semanticResources>
200 <semanticResources>java:/Objects/sun.reflect.generics.tree.SimpleClassTypeSignature</semanticResources>
201 <semanticResources>java:/Objects/sun.reflect.generics.tree.TypeVariableSignature</semanticResources>
202 <semanticResources>java:/Objects/sun.reflect.generics.tree.VoidDescriptor</semanticResources>
203 <semanticResources>java:/Objects/sun.reflect.generics.tree.Wildcard</semanticResources>
204 <semanticResources>java:/Objects/sun.reflect.generics.tree.TypeTree</semanticResources>
205 <semanticResources>java:/Objects/sun.reflect.generics.tree.FieldTypeSignature</semanticResources>
206 <semanticResources>java:/Objects/sun.reflect.generics.tree.TypeSignature</semanticResources>
207 <semanticResources>java:/Objects/sun.reflect.generics.tree.BaseType</semanticResources>
208 <semanticResources>java:/Objects/sun.reflect.generics.tree.ReturnType</semanticResources>
209 <semanticResources>java:/Objects/sun.reflect.generics.visitor.Visitor</semanticResources>
210 <semanticResources>java:/Objects/sun.reflect.generics.tree.ClassSignature</semanticResources>
211 <semanticResources>java:/Objects/java.lang.reflect.GenericDeclaration</semanticResources>
212 <semanticResources>java:/Objects/java.lang.ReflectiveOperationException</semanticResources>
213 <semanticResources>java:/Objects/sun.reflect.generics.repository.MethodRepository</semanticResources>
214 <semanticResources>java:/Objects/java.lang.invoke.MethodType</semanticResources>
215 <semanticResources>java:/Objects/java.lang.invoke.LambdaForm</semanticResources>
216 <semanticResources>java:/Objects/java.lang.invoke.BoundMethodHandle</semanticResources>
217 <semanticResources>java:/Objects/java.lang.invoke.MemberName</semanticResources>
218 <semanticResources>java:/Objects/java.lang.invoke.MethodHandleImpl</semanticResources>
219 <semanticResources>java:/Objects/java.lang.ref.WeakReference</semanticResources>
220 <semanticResources>java:/Objects/java.lang.ref.ReferenceQueue</semanticResources>
221 <semanticResources>java:/Objects/java.util.concurrent.ConcurrentMap</semanticResources>
222 <semanticResources>java:/Objects/java.lang.invoke.MethodTypeForm</semanticResources>
223 <semanticResources>java:/Objects/java.lang.ClassLoader</semanticResources>
224 <semanticResources>java:/Objects/java.lang.TypeNotPresentException</semanticResources>
225 <semanticResources>java:/Objects/java.lang.invoke.Invokers</semanticResources>
226 <semanticResources>java:/Objects/java.lang.IndexOutOfBoundsException</semanticResources>
227 <semanticResources>java:/Objects/java.lang.invoke.Stable</semanticResources>
228 <semanticResources>java:/Objects/java.lang.ref.Reference</semanticResources>
229 <semanticResources>java:/Objects/java.lang.Thread</semanticResources>
230 <semanticResources>java:/Objects/java.lang.ThreadGroup</semanticResources>
231 <semanticResources>java:/Objects/java.lang.Boolean</semanticResources>
232 <semanticResources>java:/Objects/java.security.AccessControlContext</semanticResources>
233 <semanticResources>java:/Objects/sun.nio.ch.Interruptible</semanticResources>
234 <semanticResources>java:/Objects/java.lang.InterruptedException</semanticResources>
235 <semanticResources>java:/Objects/java.lang.RuntimePermission</semanticResources>
236 <semanticResources>java:/Objects/java.lang.ThreadLocal</semanticResources>
237 <semanticResources>java:/Objects/sun.misc.Contended</semanticResources>
238 <semanticResources>java:/Objects/java.security.ProtectionDomain</semanticResources>
239 <semanticResources>java:/Objects/java.security.DomainCombiner</semanticResources>
240 <semanticResources>java:/Objects/java.security.AccessControlException</semanticResources>
241 <semanticResources>java:/Objects/sun.misc.JavaSecurityAccess</semanticResources>
242 <semanticResources>java:/Objects/java.security.CodeSource</semanticResources>
243 <semanticResources>java:/Objects/java.security.Principal</semanticResources>
244 <semanticResources>java:/Objects/java.security.cert.Certificate</semanticResources>
245 <semanticResources>java:/Objects/java.security.CodeSigner</semanticResources>
246 <semanticResources>java:/Objects/java.security.cert.CertificateFactory</semanticResources>
247 <semanticResources>java:/Objects/java.net.SocketPermission</semanticResources>
248 <semanticResources>java:/Objects/java.security.cert.CertificateEncodingException</semanticResources>
249 <semanticResources>java:/Objects/java.security.PublicKey</semanticResources>
250 <semanticResources>java:/Objects/java.security.cert.CertificateException</semanticResources>
251 <semanticResources>java:/Objects/java.security.InvalidKeyException</semanticResources>
252 <semanticResources>java:/Objects/java.security.SignatureException</semanticResources>
253 <semanticResources>java:/Objects/java.security.Key</semanticResources>
254 <semanticResources>java:/Objects/java.security.GeneralSecurityException</semanticResources>
255 <semanticResources>java:/Objects/java.security.KeyException</semanticResources>
256 <semanticResources>java:/Objects/java.security.cert.CertPath</semanticResources>
257 <semanticResources>java:/Objects/java.security.Timestamp</semanticResources>
258 <semanticResources>java:/Objects/java.util.Date</semanticResources>
259 <semanticResources>java:/Objects/java.lang.Cloneable</semanticResources>
260 <semanticResources>java:/Objects/java.time.Instant</semanticResources>
261 <semanticResources>java:/Objects/sun.util.calendar.BaseCalendar</semanticResources>
262 <semanticResources>java:/Objects/java.time.temporal.Temporal</semanticResources>
263 <semanticResources>java:/Objects/java.time.temporal.TemporalAdjuster</semanticResources>
264 <semanticResources>java:/Objects/java.time.ZoneOffset</semanticResources>
265 <semanticResources>java:/Objects/java.time.OffsetDateTime</semanticResources>
266 <semanticResources>java:/Objects/java.time.ZoneId</semanticResources>
267 <semanticResources>java:/Objects/java.time.ZonedDateTime</semanticResources>
268 <semanticResources>java:/Objects/java.time.temporal.TemporalAccessor</semanticResources>
269 <semanticResources>java:/Objects/java.time.temporal.TemporalField</semanticResources>
270 <semanticResources>java:/Objects/java.time.temporal.TemporalUnit</semanticResources>
271 <semanticResources>java:/Objects/java.time.temporal.TemporalAmount</semanticResources>
272 <semanticResources>java:/Objects/java.time.Clock</semanticResources>
273 <semanticResources>java:/Objects/java.time.temporal.TemporalQuery</semanticResources>
274 <semanticResources>java:/Objects/java.time.temporal.ValueRange</semanticResources>
275 <semanticResources>java:/Objects/java.io.DataInput</semanticResources>
276 <semanticResources>java:/Objects/java.io.InvalidObjectException</semanticResources>
277 <semanticResources>java:/Objects/java.io.DataOutput</semanticResources>
278 <semanticResources>java:/Objects/java.time.zone.ZoneRules</semanticResources>
279 <semanticResources>java:/Objects/java.time.zone.ZoneOffsetTransition</semanticResources>
280 <semanticResources>java:/Objects/java.time.zone.ZoneOffsetTransitionRule</semanticResources>
281 <semanticResources>java:/Objects/java.time.LocalDateTime</semanticResources>
282 <semanticResources>java:/Objects/java.time.Duration</semanticResources>
283 <semanticResources>java:/Objects/java.time.Month</semanticResources>
284 <semanticResources>java:/Objects/java.time.DayOfWeek</semanticResources>
285 <semanticResources>java:/Objects/java.time.LocalTime</semanticResources>
286 <semanticResources>java:/Objects/java.time.format.TextStyle</semanticResources>
287 <semanticResources>java:/Objects/java.time.LocalDate</semanticResources>
288 <semanticResources>java:/Objects/java.time.OffsetTime</semanticResources>
289 <semanticResources>java:/Objects/java.time.format.DateTimeFormatter</semanticResources>
290 <semanticResources>java:/Objects/java.time.chrono.ChronoLocalDate</semanticResources>
291 <semanticResources>java:/Objects/java.time.chrono.IsoChronology</semanticResources>
292 <semanticResources>java:/Objects/java.time.chrono.Era</semanticResources>
293 <semanticResources>java:/Objects/java.time.Period</semanticResources>
294 <semanticResources>java:/Objects/java.time.chrono.ChronoLocalDateTime</semanticResources>
295 <semanticResources>java:/Objects/java.time.chrono.Chronology</semanticResources>
296 <semanticResources>java:/Objects/java.time.chrono.ChronoPeriod</semanticResources>
297 <semanticResources>java:/Objects/java.time.chrono.ChronoZonedDateTime</semanticResources>
298 <semanticResources>java:/Objects/java.time.temporal.ChronoField</semanticResources>
299 <semanticResources>java:/Objects/java.time.format.ResolverStyle</semanticResources>
300 <semanticResources>java:/Objects/java.time.chrono.AbstractChronology</semanticResources>
301 <semanticResources>java:/Objects/java.time.chrono.IsoEra</semanticResources>
302 <semanticResources>java:/Objects/java.util.concurrent.ConcurrentHashMap</semanticResources>
303 <semanticResources>java:/Objects/java.util.AbstractMap</semanticResources>
304 <semanticResources>java:/Objects/java.util.function.ToIntBiFunction</semanticResources>
305 <semanticResources>java:/Objects/java.util.function.ToLongBiFunction</semanticResources>
306 <semanticResources>java:/Objects/java.util.function.ToDoubleBiFunction</semanticResources>
307 <semanticResources>java:/Objects/java.util.function.BiFunction</semanticResources>
308 <semanticResources>java:/Objects/java.util.concurrent.atomic.AtomicReference</semanticResources>
309 <semanticResources>java:/Objects/java.lang.Void</semanticResources>
310 <semanticResources>java:/Objects/java.util.concurrent.CountedCompleter</semanticResources>
311 <semanticResources>java:/Objects/java.util.concurrent.locks.ReentrantLock</semanticResources>
312 <semanticResources>java:/Objects/java.util.function.BinaryOperator</semanticResources>
313 <semanticResources>java:/Objects/java.util.function.UnaryOperator</semanticResources>
314 <semanticResources>java:/Objects/java.util.concurrent.ForkJoinTask</semanticResources>
315 <semanticResources>java:/Objects/java.util.concurrent.Future</semanticResources>
316 <semanticResources>java:/Objects/java.util.concurrent.RunnableFuture</semanticResources>
317 <semanticResources>java:/Objects/java.util.concurrent.Callable</semanticResources>
318 <semanticResources>java:/Objects/java.util.concurrent.ExecutionException</semanticResources>
319 <semanticResources>java:/Objects/java.util.concurrent.TimeUnit</semanticResources>
320 <semanticResources>java:/Objects/java.util.concurrent.TimeoutException</semanticResources>
321 <semanticResources>java:/Objects/java.util.concurrent.ForkJoinPool</semanticResources>
322 <semanticResources>java:/Objects/java.util.concurrent.AbstractExecutorService</semanticResources>
323 <semanticResources>java:/Objects/java.util.concurrent.ForkJoinWorkerThread</semanticResources>
324 <semanticResources>java:/Objects/java.util.concurrent.ExecutorService</semanticResources>
325 <semanticResources>java:/Objects/java.util.concurrent.Executor</semanticResources>
326 <semanticResources>java:/Objects/java.util.concurrent.locks.Lock</semanticResources>
327 <semanticResources>java:/Objects/java.util.concurrent.locks.AbstractQueuedSynchronizer</semanticResources>
328 <semanticResources>java:/Objects/java.util.concurrent.locks.Condition</semanticResources>
329 <semanticResources>java:/Objects/java.util.concurrent.locks.AbstractOwnableSynchronizer</semanticResources>
330 <semanticResources>java:/Objects/java.lang.NullPointerException</semanticResources>
331 <semanticResources>java:/Objects/java.io.ObjectInput</semanticResources>
332 <semanticResources>java:/Objects/java.io.ObjectOutput</semanticResources>
333 <semanticResources>java:/Objects/java.text.Format</semanticResources>
334 <semanticResources>java:/Objects/java.text.FieldPosition</semanticResources>
335 <semanticResources>java:/Objects/java.text.ParseException</semanticResources>
336 <semanticResources>java:/Objects/java.text.ParsePosition</semanticResources>
337 <semanticResources>java:/Objects/java.time.format.DateTimeFormatterBuilder</semanticResources>
338 <semanticResources>java:/Objects/java.time.format.DecimalStyle</semanticResources>
339 <semanticResources>java:/Objects/java.time.format.DateTimeParseException</semanticResources>
340 <semanticResources>java:/Objects/java.time.format.FormatStyle</semanticResources>
341 <semanticResources>java:/Objects/java.time.format.DateTimeParseContext</semanticResources>
342 <semanticResources>java:/Objects/java.text.AttributedCharacterIterator</semanticResources>
343 <semanticResources>java:/Objects/java.text.CharacterIterator</semanticResources>
344 <semanticResources>java:/Objects/java.time.format.DateTimePrintContext</semanticResources>
345 <semanticResources>java:/Objects/java.lang.ref.SoftReference</semanticResources>
346 <semanticResources>java:/Objects/java.time.format.DateTimeTextProvider</semanticResources>
347 <semanticResources>java:/Objects/java.math.BigDecimal</semanticResources>
348 <semanticResources>java:/Objects/java.time.format.SignStyle</semanticResources>
349 <semanticResources>java:/Objects/java.lang.Character</semanticResources>
350 <semanticResources>java:/Objects/java.math.MathContext</semanticResources>
351 <semanticResources>java:/Objects/java.math.RoundingMode</semanticResources>
352 <semanticResources>java:/Objects/java.math.MutableBigInteger</semanticResources>
353 <semanticResources>java:/Objects/java.util.HashMap</semanticResources>
354 <semanticResources>java:/Objects/java.util.LinkedHashMap</semanticResources>
355 <semanticResources>java:/Objects/java.util.AbstractSet</semanticResources>
356 <semanticResources>java:/Objects/java.util.AbstractCollection</semanticResources>
357 <semanticResources>java:/Objects/java.time.DateTimeException</semanticResources>
358 <semanticResources>java:/Objects/java.time.format.Parsed</semanticResources>
359 <semanticResources>java:/Objects/java.util.ArrayList</semanticResources>
360 <semanticResources>java:/Objects/java.util.AbstractList</semanticResources>
361 <semanticResources>java:/Objects/java.util.RandomAccess</semanticResources>
362 <semanticResources>java:/Objects/java.util.ListIterator</semanticResources>
363 <semanticResources>java:/Objects/java.util.function.Predicate</semanticResources>
364 <semanticResources>java:/Objects/sun.util.calendar.AbstractCalendar</semanticResources>
365 <semanticResources>java:/Objects/sun.util.calendar.CalendarDate</semanticResources>
366 <semanticResources>java:/Objects/java.util.TimeZone</semanticResources>
367 <semanticResources>java:/Objects/sun.util.calendar.CalendarSystem</semanticResources>
368 <semanticResources>java:/Objects/sun.util.calendar.Era</semanticResources>
369 <semanticResources>java:/Objects/java.util.Properties</semanticResources>
370 <semanticResources>java:/Objects/sun.util.calendar.Gregorian</semanticResources>
371 <semanticResources>java:/Objects/java.util.Hashtable</semanticResources>
372 <semanticResources>java:/Objects/java.io.InputStream</semanticResources>
373 <semanticResources>java:/Objects/java.util.InvalidPropertiesFormatException</semanticResources>
374 <semanticResources>java:/Objects/sun.util.spi.XmlPropertiesProvider</semanticResources>
375 <semanticResources>java:/Objects/java.io.Reader</semanticResources>
376 <semanticResources>java:/Objects/java.io.BufferedWriter</semanticResources>
377 <semanticResources>java:/Objects/java.util.Dictionary</semanticResources>
378 <semanticResources>java:/Objects/java.io.StreamCorruptedException</semanticResources>
379 <semanticResources>java:/Objects/java.io.NotSerializableException</semanticResources>
380 <semanticResources>java:/Objects/java.lang.Readable</semanticResources>
381 <semanticResources>java:/Objects/java.nio.CharBuffer</semanticResources>
382 <semanticResources>java:/Objects/java.nio.Buffer</semanticResources>
383 <semanticResources>java:/Objects/java.nio.ByteOrder</semanticResources>
384 <semanticResources>java:/Objects/java.security.cert.CertificateFactorySpi</semanticResources>
385 <semanticResources>java:/Objects/java.security.cert.CRLException</semanticResources>
386 <semanticResources>java:/Objects/java.security.cert.CRL</semanticResources>
387 <semanticResources>java:/Objects/java.net.UnknownHostException</semanticResources>
388 <semanticResources>java:/Objects/java.net.InetAddress</semanticResources>
389 <semanticResources>java:/Objects/sun.net.spi.nameservice.NameService</semanticResources>
390 <semanticResources>java:/Objects/java.net.NetworkInterface</semanticResources>
391 <semanticResources>java:/Objects/java.net.InetAddressImpl</semanticResources>
392 <semanticResources>java:/Objects/java.net.SocketException</semanticResources>
393 <semanticResources>java:/Objects/java.net.InterfaceAddress</semanticResources>
394 <semanticResources>java:/Objects/java.net.Inet4Address</semanticResources>
395 <semanticResources>java:/Objects/javax.security.auth.Subject</semanticResources>
396 <semanticResources>java:/Objects/javax.security.auth.AuthPermission</semanticResources>
397 <semanticResources>java:/Objects/java.util.LinkedList</semanticResources>
398 <semanticResources>java:/Objects/java.security.PrivilegedExceptionAction</semanticResources>
399 <semanticResources>java:/Objects/java.security.PrivilegedActionException</semanticResources>
400 <semanticResources>java:/Objects/java.security.BasicPermission</semanticResources>
401 <semanticResources>java:/Objects/java.util.AbstractSequentialList</semanticResources>
402 <semanticResources>java:/Objects/java.util.Deque</semanticResources>
403 <semanticResources>java:/Objects/java.util.Queue</semanticResources>
404 <semanticResources>java:/Objects/java.util.concurrent.atomic.AtomicInteger</semanticResources>
405 <semanticResources>java:/Objects/java.lang.ClassFormatError</semanticResources>
406 <semanticResources>java:/Objects/java.nio.ByteBuffer</semanticResources>
407 <semanticResources>java:/Objects/java.lang.Package</semanticResources>
408 <semanticResources>java:/Objects/sun.misc.URLClassPath</semanticResources>
409 <semanticResources>java:/Objects/java.lang.AssertionStatusDirectives</semanticResources>
410 <semanticResources>java:/Objects/java.util.Vector</semanticResources>
411 <semanticResources>java:/Objects/java.util.Stack</semanticResources>
412 <semanticResources>java:/Objects/java.lang.LinkageError</semanticResources>
413 <semanticResources>java:/Objects/java.lang.Error</semanticResources>
414 <semanticResources>java:/Objects/java.nio.DoubleBuffer</semanticResources>
415 <semanticResources>java:/Objects/java.nio.FloatBuffer</semanticResources>
416 <semanticResources>java:/Objects/java.nio.IntBuffer</semanticResources>
417 <semanticResources>java:/Objects/java.nio.LongBuffer</semanticResources>
418 <semanticResources>java:/Objects/java.nio.ShortBuffer</semanticResources>
419 <semanticResources>java:/Objects/java.util.jar.Manifest</semanticResources>
420 <semanticResources>java:/Objects/java.io.FilterInputStream</semanticResources>
421 <semanticResources>java:/Objects/java.util.jar.JarVerifier</semanticResources>
422 <semanticResources>java:/Objects/java.util.jar.Attributes</semanticResources>
423 <semanticResources>java:/Objects/java.util.jar.JarEntry</semanticResources>
424 <semanticResources>java:/Objects/sun.security.util.ManifestEntryVerifier</semanticResources>
425 <semanticResources>java:/Objects/java.util.jar.JarFile</semanticResources>
426 <semanticResources>java:/Objects/java.util.zip.ZipEntry</semanticResources>
427 <semanticResources>java:/Objects/java.io.ByteArrayOutputStream</semanticResources>
428 <semanticResources>java:/Objects/sun.security.util.ManifestDigester</semanticResources>
429 <semanticResources>java:/Objects/sun.security.util.SignatureFileVerifier</semanticResources>
430 <semanticResources>java:/Objects/java.util.jar.JarException</semanticResources>
431 <semanticResources>java:/Objects/java.util.zip.ZipException</semanticResources>
432 <semanticResources>java:/Objects/java.util.zip.ZipFile</semanticResources>
433 <semanticResources>java:/Objects/java.util.zip.ZipConstants</semanticResources>
434 <semanticResources>java:/Objects/java.util.zip.InflaterInputStream</semanticResources>
435 <semanticResources>java:/Objects/java.util.zip.Inflater</semanticResources>
436 <semanticResources>java:/Objects/java.util.zip.ZipCoder</semanticResources>
437 <semanticResources>java:/Objects/java.util.zip.DataFormatException</semanticResources>
438 <semanticResources>java:/Objects/java.util.zip.ZStreamRef</semanticResources>
439 <semanticResources>java:/Objects/java.nio.charset.CharsetDecoder</semanticResources>
440 <semanticResources>java:/Objects/java.nio.charset.CharsetEncoder</semanticResources>
441 <semanticResources>java:/Objects/java.nio.charset.CharacterCodingException</semanticResources>
442 <semanticResources>java:/Objects/java.nio.charset.CoderResult</semanticResources>
443 <semanticResources>java:/Objects/java.nio.charset.CodingErrorAction</semanticResources>
444 <semanticResources>java:/Objects/java.nio.file.attribute.FileTime</semanticResources>
445 <semanticResources>java:/Objects/sun.security.pkcs.SignerInfo</semanticResources>
446 <semanticResources>java:/Objects/sun.security.pkcs.PKCS7</semanticResources>
447 <semanticResources>java:/Objects/sun.security.util.DisabledAlgorithmConstraints</semanticResources>
448 <semanticResources>java:/Objects/sun.security.util.DerEncoder</semanticResources>
449 <semanticResources>java:/Objects/sun.security.util.DerInputStream</semanticResources>
450 <semanticResources>java:/Objects/sun.security.pkcs.ParsingException</semanticResources>
451 <semanticResources>java:/Objects/sun.security.x509.X500Name</semanticResources>
452 <semanticResources>java:/Objects/sun.security.x509.AlgorithmId</semanticResources>
453 <semanticResources>java:/Objects/sun.security.pkcs.PKCS9Attributes</semanticResources>
454 <semanticResources>java:/Objects/sun.security.util.DerOutputStream</semanticResources>
455 <semanticResources>java:/Objects/java.security.cert.X509Certificate</semanticResources>
456 <semanticResources>java:/Objects/sun.security.timestamp.TimestampToken</semanticResources>
457 <semanticResources>java:/Objects/java.security.CryptoPrimitive</semanticResources>
458 <semanticResources>java:/Objects/sun.security.util.DerInputBuffer</semanticResources>
459 <semanticResources>java:/Objects/sun.security.util.DerValue</semanticResources>
460 <semanticResources>java:/Objects/sun.security.util.ObjectIdentifier</semanticResources>
461 <semanticResources>java:/Objects/sun.security.util.BitArray</semanticResources>
462 <semanticResources>java:/Objects/java.io.ByteArrayInputStream</semanticResources>
463 <semanticResources>java:/Objects/java.lang.ArrayIndexOutOfBoundsException</semanticResources>
464 <semanticResources>java:/Objects/sun.security.x509.GeneralNameInterface</semanticResources>
465 <semanticResources>java:/Objects/sun.security.x509.RDN</semanticResources>
466 <semanticResources>java:/Objects/sun.security.x509.AVA</semanticResources>
467 <semanticResources>java:/Objects/javax.security.auth.x500.X500Principal</semanticResources>
468 <semanticResources>java:/Objects/java.lang.UnsupportedOperationException</semanticResources>
469 <semanticResources>java:/Objects/java.lang.Byte</semanticResources>
470 <semanticResources>java:/Objects/java.io.NotActiveException</semanticResources>
471 <semanticResources>java:/Objects/java.security.AlgorithmParameters</semanticResources>
472 <semanticResources>java:/Objects/java.security.AlgorithmParametersSpi</semanticResources>
473 <semanticResources>java:/Objects/java.security.spec.AlgorithmParameterSpec</semanticResources>
474 <semanticResources>java:/Objects/java.security.spec.InvalidParameterSpecException</semanticResources>
475 <semanticResources>java:/Objects/sun.security.pkcs.PKCS9Attribute</semanticResources>
476 <semanticResources>java:/Objects/sun.security.util.ByteArrayLexOrder</semanticResources>
477 <semanticResources>java:/Objects/sun.security.util.ByteArrayTagOrder</semanticResources>
478 <semanticResources>java:/Objects/java.security.cert.X509Extension</semanticResources>
479 <semanticResources>java:/Objects/java.security.cert.CertificateExpiredException</semanticResources>
480 <semanticResources>java:/Objects/java.security.cert.CertificateNotYetValidException</semanticResources>
481 <semanticResources>java:/Objects/java.security.cert.CertificateParsingException</semanticResources>
482 <semanticResources>java:/Objects/sun.security.pkcs.ContentInfo</semanticResources>
483 <semanticResources>java:/Objects/java.security.cert.X509CRL</semanticResources>
484 <semanticResources>java:/Objects/sun.security.timestamp.Timestamper</semanticResources>
485 <semanticResources>java:/Objects/java.security.cert.X509CRLEntry</semanticResources>
486 <semanticResources>java:/Objects/java.security.cert.CRLReason</semanticResources>
487 <semanticResources>java:/Objects/sun.security.timestamp.TSRequest</semanticResources>
488 <semanticResources>java:/Objects/sun.security.timestamp.TSResponse</semanticResources>
489 <semanticResources>java:/Objects/sun.security.util.AbstractAlgorithmConstraints</semanticResources>
490 <semanticResources>java:/Objects/sun.security.util.ConstraintsParameters</semanticResources>
491 <semanticResources>java:/Objects/java.security.cert.CertPathValidatorException</semanticResources>
492 <semanticResources>java:/Objects/java.text.SimpleDateFormat</semanticResources>
493 <semanticResources>java:/Objects/sun.security.util.AlgorithmDecomposer</semanticResources>
494 <semanticResources>java:/Objects/java.security.AlgorithmConstraints</semanticResources>
495 <semanticResources>java:/Objects/java.text.DateFormat</semanticResources>
496 <semanticResources>java:/Objects/java.text.DateFormatSymbols</semanticResources>
497 <semanticResources>java:/Objects/java.text.CalendarBuilder</semanticResources>
498 <semanticResources>java:/Objects/java.text.NumberFormat</semanticResources>
499 <semanticResources>java:/Objects/sun.util.locale.provider.LocaleProviderAdapter</semanticResources>
500 <semanticResources>java:/Objects/java.util.Calendar</semanticResources>
501 <semanticResources>java:/Objects/java.util.spi.LocaleServiceProvider</semanticResources>
502 <semanticResources>java:/Objects/java.text.spi.BreakIteratorProvider</semanticResources>
503 <semanticResources>java:/Objects/java.util.spi.CalendarDataProvider</semanticResources>
504 <semanticResources>java:/Objects/java.util.spi.CalendarNameProvider</semanticResources>
505 <semanticResources>java:/Objects/sun.util.spi.CalendarProvider</semanticResources>
506 <semanticResources>java:/Objects/java.text.spi.CollatorProvider</semanticResources>
507 <semanticResources>java:/Objects/java.util.spi.CurrencyNameProvider</semanticResources>
508 <semanticResources>java:/Objects/java.text.spi.DateFormatProvider</semanticResources>
509 <semanticResources>java:/Objects/java.text.spi.DateFormatSymbolsProvider</semanticResources>
510 <semanticResources>java:/Objects/java.text.spi.DecimalFormatSymbolsProvider</semanticResources>
511 <semanticResources>java:/Objects/java.util.spi.LocaleNameProvider</semanticResources>
512 <semanticResources>java:/Objects/sun.util.locale.provider.LocaleResources</semanticResources>
513 <semanticResources>java:/Objects/java.text.spi.NumberFormatProvider</semanticResources>
514 <semanticResources>java:/Objects/java.util.spi.TimeZoneNameProvider</semanticResources>
515 <semanticResources>java:/Objects/java.text.BreakIterator</semanticResources>
516 <semanticResources>java:/Objects/java.text.Collator</semanticResources>
517 <semanticResources>java:/Objects/java.text.CollationKey</semanticResources>
518 <semanticResources>java:/Objects/java.text.DecimalFormatSymbols</semanticResources>
519 <semanticResources>java:/Objects/java.util.Currency</semanticResources>
520 <semanticResources>java:/Objects/sun.util.locale.provider.LocaleServiceProviderPool</semanticResources>
521 <semanticResources>java:/Objects/java.io.DataInputStream</semanticResources>
522 <semanticResources>java:/Objects/java.util.HashSet</semanticResources>
523 <semanticResources>java:/Objects/sun.util.locale.provider.ResourceBundleBasedAdapter</semanticResources>
524 <semanticResources>java:/Objects/java.util.ResourceBundle</semanticResources>
525 <semanticResources>java:/Objects/sun.util.resources.LocaleData</semanticResources>
526 <semanticResources>java:/Objects/sun.util.locale.LocaleObjectCache</semanticResources>
527 <semanticResources>java:/Objects/sun.util.locale.BaseLocale</semanticResources>
528 <semanticResources>java:/Objects/java.util.spi.ResourceBundleControlProvider</semanticResources>
529 <semanticResources>java:/Objects/sun.util.resources.OpenListResourceBundle</semanticResources>
530 <semanticResources>java:/Objects/sun.util.resources.TimeZoneNamesBundle</semanticResources>
531 <semanticResources>java:/Objects/sun.util.resources.ParallelListResourceBundle</semanticResources>
532 <semanticResources>java:/Objects/java.util.concurrent.atomic.AtomicMarkableReference</semanticResources>
533 <semanticResources>java:/Objects/java.io.DataOutputStream</semanticResources>
534 <semanticResources>java:/Objects/java.io.FilterOutputStream</semanticResources>
535 <semanticResources>java:/Objects/sun.misc.Resource</semanticResources>
536 <semanticResources>java:/Objects/java.net.URLStreamHandler</semanticResources>
537 <semanticResources>java:/Objects/sun.misc.JarIndex</semanticResources>
538 <semanticResources>java:/Objects/sun.misc.MetaIndex</semanticResources>
539 <semanticResources>java:/Objects/sun.misc.JavaUtilZipFileAccess</semanticResources>
540 <semanticResources>java:/Objects/java.net.URLStreamHandlerFactory</semanticResources>
541 <semanticResources>java:/Objects/java.net.URLConnection</semanticResources>
542 <semanticResources>java:/Objects/java.net.Proxy</semanticResources>
543 <semanticResources>java:/Objects/java.net.UnknownServiceException</semanticResources>
544 <semanticResources>java:/Objects/java.net.ContentHandler</semanticResources>
545 <semanticResources>java:/Objects/java.net.FileNameMap</semanticResources>
546 <semanticResources>java:/Objects/java.net.ContentHandlerFactory</semanticResources>
547 <semanticResources>java:/Objects/sun.net.www.MessageHeader</semanticResources>
548 <semanticResources>java:/Objects/java.net.SocketAddress</semanticResources>
549 <semanticResources>java:/Objects/java.lang.invoke.ForceInline</semanticResources>
550 <semanticResources>java:/Objects/java.lang.invoke.DontInline</semanticResources>
551 <semanticResources>java:/Objects/java.lang.invoke.WrongMethodTypeException</semanticResources>
552 <semanticResources>java:/Objects/sun.invoke.util.Wrapper</semanticResources>
553 <semanticResources>java:/Objects/java.lang.invoke.LambdaFormEditor</semanticResources>
554 <semanticResources>java:/Objects/java.lang.ClassCastException</semanticResources>
555 <semanticResources>java:/Objects/java.lang.invoke.LambdaFormBuffer</semanticResources>
556 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.MethodVisitor</semanticResources>
557 <semanticResources>java:/Objects/java.lang.invoke.MethodHandles</semanticResources>
558 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.AnnotationVisitor</semanticResources>
559 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Attribute</semanticResources>
560 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.TypePath</semanticResources>
561 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Handle</semanticResources>
562 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Label</semanticResources>
563 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.ClassWriter</semanticResources>
564 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.ByteVector</semanticResources>
565 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.ClassReader</semanticResources>
566 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.ClassVisitor</semanticResources>
567 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Item</semanticResources>
568 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.FieldVisitor</semanticResources>
569 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.AnnotationWriter</semanticResources>
570 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.FieldWriter</semanticResources>
571 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.MethodWriter</semanticResources>
572 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Frame</semanticResources>
573 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Handler</semanticResources>
574 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Type</semanticResources>
575 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Context</semanticResources>
576 <semanticResources>java:/Objects/jdk.internal.org.objectweb.asm.Edge</semanticResources>
577 <semanticResources>java:/Objects/java.lang.NoSuchMethodException</semanticResources>
578 <semanticResources>java:/Objects/java.lang.NoSuchFieldException</semanticResources>
579 <semanticResources>java:/Objects/java.lang.invoke.DirectMethodHandle</semanticResources>
580 <semanticResources>java:/Objects/java.lang.invoke.MethodHandleInfo</semanticResources>
581 <semanticResources>java:/Objects/java.lang.ClassValue</semanticResources>
582 <semanticResources>java:/Objects/java.util.WeakHashMap</semanticResources>
583 <semanticResources>java:/Objects/java.lang.invoke.DelegatingMethodHandle</semanticResources>
584 <semanticResources>java:/Objects/sun.invoke.empty.Empty</semanticResources>
585 <semanticResources>java:/Objects/java.lang.reflect.Parameter</semanticResources>
586 <semanticResources>java:/Objects/java.lang.reflect.ParameterizedType</semanticResources>
587 <semanticResources>java:/Objects/java.lang.reflect.WildcardType</semanticResources>
588 <semanticResources>java:/Objects/java.util.regex.Matcher</semanticResources>
589 <semanticResources>java:/Objects/java.util.regex.UnicodeProp</semanticResources>
590 <semanticResources>java:/Objects/java.util.regex.PatternSyntaxException</semanticResources>
591 <semanticResources>java:/Objects/java.util.regex.MatchResult</semanticResources>
592 <semanticResources>java:/Objects/java.security.MessageDigestSpi</semanticResources>
593 <semanticResources>java:/Objects/java.security.DigestException</semanticResources>
594 <semanticResources>java:/Objects/java.net.URISyntaxException</semanticResources>
595 <semanticResources>java:/Objects/java.lang.Iterable</semanticResources>
596 <semanticResources>java:/Objects/java.nio.file.Watchable</semanticResources>
597 <semanticResources>java:/Objects/java.nio.file.FileSystem</semanticResources>
598 <semanticResources>java:/Objects/java.nio.file.WatchService</semanticResources>
599 <semanticResources>java:/Objects/java.nio.file.WatchEvent</semanticResources>
600 <semanticResources>java:/Objects/java.nio.file.WatchKey</semanticResources>
601 <semanticResources>java:/Objects/java.nio.file.LinkOption</semanticResources>
602 <semanticResources>java:/Objects/java.nio.file.FileStore</semanticResources>
603 <semanticResources>java:/Objects/java.nio.file.PathMatcher</semanticResources>
604 <semanticResources>java:/Objects/java.nio.file.attribute.UserPrincipalLookupService</semanticResources>
605 <semanticResources>java:/Objects/java.nio.file.spi.FileSystemProvider</semanticResources>
606 <semanticResources>java:/Objects/java.nio.file.attribute.FileStoreAttributeView</semanticResources>
607 <semanticResources>java:/Objects/java.nio.file.attribute.FileAttributeView</semanticResources>
608 <semanticResources>java:/Objects/java.nio.file.attribute.AttributeView</semanticResources>
609 <semanticResources>java:/Objects/java.nio.file.attribute.GroupPrincipal</semanticResources>
610 <semanticResources>java:/Objects/java.nio.file.attribute.UserPrincipal</semanticResources>
611 <semanticResources>java:/Objects/java.nio.file.AccessMode</semanticResources>
612 <semanticResources>java:/Objects/java.nio.file.CopyOption</semanticResources>
613 <semanticResources>java:/Objects/java.nio.file.attribute.FileAttribute</semanticResources>
614 <semanticResources>java:/Objects/java.nio.file.OpenOption</semanticResources>
615 <semanticResources>java:/Objects/java.nio.channels.AsynchronousFileChannel</semanticResources>
616 <semanticResources>java:/Objects/java.nio.channels.SeekableByteChannel</semanticResources>
617 <semanticResources>java:/Objects/java.nio.file.DirectoryStream</semanticResources>
618 <semanticResources>java:/Objects/java.nio.channels.FileChannel</semanticResources>
619 <semanticResources>java:/Objects/java.nio.file.attribute.BasicFileAttributes</semanticResources>
620 <semanticResources>java:/Objects/java.nio.channels.AsynchronousChannel</semanticResources>
621 <semanticResources>java:/Objects/java.nio.channels.FileLock</semanticResources>
622 <semanticResources>java:/Objects/java.nio.channels.CompletionHandler</semanticResources>
623 <semanticResources>java:/Objects/java.nio.channels.Channel</semanticResources>
624 <semanticResources>java:/Objects/java.nio.channels.ByteChannel</semanticResources>
625 <semanticResources>java:/Objects/java.nio.channels.ReadableByteChannel</semanticResources>
626 <semanticResources>java:/Objects/java.nio.channels.WritableByteChannel</semanticResources>
627 <semanticResources>java:/Objects/java.nio.channels.spi.AbstractInterruptibleChannel</semanticResources>
628 <semanticResources>java:/Objects/java.nio.channels.GatheringByteChannel</semanticResources>
629 <semanticResources>java:/Objects/java.nio.channels.ScatteringByteChannel</semanticResources>
630 <semanticResources>java:/Objects/java.nio.MappedByteBuffer</semanticResources>
631 <semanticResources>java:/Objects/java.nio.channels.InterruptibleChannel</semanticResources>
632 <semanticResources>java:/Objects/java.nio.channels.AsynchronousCloseException</semanticResources>
633 <semanticResources>java:/Objects/java.nio.channels.ClosedChannelException</semanticResources>
634 <semanticResources>java:/Objects/java.io.FileDescriptor</semanticResources>
635 <semanticResources>java:/Objects/java.io.SyncFailedException</semanticResources>
636 <semanticResources>java:/Objects/java.lang.SecurityManager</semanticResources>
637 <semanticResources>java:/Objects/java.net.UrlDeserializedState</semanticResources>
638 <semanticResources>java:/Objects/java.nio.charset.spi.CharsetProvider</semanticResources>
639 <semanticResources>java:/Objects/java.util.SortedMap</semanticResources>
640 <semanticResources>java:/Objects/sun.util.locale.InternalLocaleBuilder</semanticResources>
641 <semanticResources>java:/Objects/sun.util.locale.LocaleExtensions</semanticResources>
642 <semanticResources>java:/Objects/java.text.MessageFormat</semanticResources>
643 <semanticResources>java:/Objects/java.util.MissingResourceException</semanticResources>
644 <semanticResources>java:/Objects/sun.util.locale.LocaleSyntaxException</semanticResources>
645 <semanticResources>java:/Objects/sun.util.locale.LanguageTag</semanticResources>
646 <semanticResources>java:/Objects/sun.util.locale.ParseStatus</semanticResources>
647 <semanticResources>java:/Objects/sun.util.locale.StringTokenIterator</semanticResources>
648 <semanticResources>java:/Objects/sun.util.locale.Extension</semanticResources>
649 <semanticResources>java:/Objects/java.io.OutputStreamWriter</semanticResources>
650 <semanticResources>java:/Objects/sun.nio.cs.StreamEncoder</semanticResources>
651 <semanticResources>java:/Objects/java.io.ObjectStreamConstants</semanticResources>
652 <semanticResources>java:/Objects/java.io.ObjectStreamClass</semanticResources>
653 <semanticResources>java:/Objects/java.io.Externalizable</semanticResources>
654 <semanticResources>java:/Objects/java.io.SerialCallbackContext</semanticResources>
655 <semanticResources>java:/Objects/java.io.SerializablePermission</semanticResources>
656 <semanticResources>java:/Objects/java.io.InvalidClassException</semanticResources>
657 <semanticResources>java:/Objects/sun.misc.ObjectInputFilter</semanticResources>
658 <semanticResources>java:/Objects/java.io.ObjectInputValidation</semanticResources>
659 <semanticResources>java:/Objects/sun.util.logging.PlatformLogger</semanticResources>
660 <semanticResources>java:/Objects/sun.misc.ObjectStreamClassValidator</semanticResources>
661 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IInputKey</semanticResources>
662 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection</semanticResources>
663 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.PTraceable</semanticResources>
664 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PDisjunction</semanticResources>
665 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint</semanticResources>
666 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.PProblem</semanticResources>
667 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.TypeJudgement</semanticResources>
668 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.PBody</semanticResources>
669 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.PVariable</semanticResources>
670 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryMetaContext</semanticResources>
671 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint</semanticResources>
672 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter</semanticResources>
673 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.InputKeyImplication</semanticResources>
674 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IPosetComparator</semanticResources>
675 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.VariableDeferredPConstraint</semanticResources>
676 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.DeferredPConstraint</semanticResources>
677 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.SubPlan</semanticResources>
678 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint</semanticResources>
679 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.operations.POperation</semanticResources>
680 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.QueryHintOption</semanticResources>
681 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory</semanticResources>
682 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryBackendContext</semanticResources>
683 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackend</semanticResources>
684 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendHintProvider</semanticResources>
685 <semanticResources>java:/Objects/org.apache.log4j.Logger</semanticResources>
686 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.analysis.QueryAnalyzer</semanticResources>
687 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryCacheContext</semanticResources>
688 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryResultProviderAccess</semanticResources>
689 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext</semanticResources>
690 <semanticResources>java:/Objects/org.apache.log4j.Category</semanticResources>
691 <semanticResources>java:/Objects/org.apache.log4j.spi.LoggerFactory</semanticResources>
692 <semanticResources>java:/Objects/org.apache.log4j.spi.AppenderAttachable</semanticResources>
693 <semanticResources>java:/Objects/org.apache.log4j.Appender</semanticResources>
694 <semanticResources>java:/Objects/org.apache.log4j.spi.LoggingEvent</semanticResources>
695 <semanticResources>java:/Objects/org.apache.log4j.Priority</semanticResources>
696 <semanticResources>java:/Objects/org.apache.log4j.spi.LoggerRepository</semanticResources>
697 <semanticResources>java:/Objects/org.apache.log4j.Level</semanticResources>
698 <semanticResources>java:/Objects/org.apache.log4j.helpers.AppenderAttachableImpl</semanticResources>
699 <semanticResources>java:/Objects/org.apache.log4j.spi.Filter</semanticResources>
700 <semanticResources>java:/Objects/org.apache.log4j.spi.ErrorHandler</semanticResources>
701 <semanticResources>java:/Objects/org.apache.log4j.Layout</semanticResources>
702 <semanticResources>java:/Objects/org.apache.log4j.spi.OptionHandler</semanticResources>
703 <semanticResources>java:/Objects/org.apache.log4j.spi.ThrowableInformation</semanticResources>
704 <semanticResources>java:/Objects/org.apache.log4j.spi.LocationInfo</semanticResources>
705 <semanticResources>java:/Objects/java.io.StringWriter</semanticResources>
706 <semanticResources>java:/Objects/org.apache.log4j.spi.HierarchyEventListener</semanticResources>
707 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener</semanticResources>
708 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.tuple.ITuple</semanticResources>
709 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask</semanticResources>
710 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.context.IndexingService</semanticResources>
711 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.util.Accuracy</semanticResources>
712 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.tuple.IModifiableTuple</semanticResources>
713 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.QueryProcessingException</semanticResources>
714 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.ViatraQueryRuntimeException</semanticResources>
715 <semanticResources>java:/Objects/sun.reflect.annotation.AnnotationType</semanticResources>
716 <semanticResources>java:/Objects/sun.reflect.ConstantPool</semanticResources>
717 <semanticResources>java:/Objects/sun.reflect.generics.repository.ClassRepository</semanticResources>
718 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.internal.apiimpl.EngineContextFactory</semanticResources>
719 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.IIndexingErrorListener</semanticResources>
720 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.IEngineContext</semanticResources>
721 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.IBaseIndex</semanticResources>
722 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.ViatraBaseIndexChangeListener</semanticResources>
723 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.scope.IInstanceObserver</semanticResources>
724 <semanticResources>java:/Objects/java.util.stream.Collector</semanticResources>
725 <semanticResources>java:/Objects/java.lang.SafeVarargs</semanticResources>
726 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.backend.IUpdateable</semanticResources>
727 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch</semanticResources>
728 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseQuerySpecification</semanticResources>
729 <semanticResources>java:/Objects/java.lang.ExceptionInInitializerError</semanticResources>
730 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.exception.ViatraQueryException</semanticResources>
731 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.QueryInitializationException</semanticResources>
732 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions</semanticResources>
733 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.tuple.AbstractTuple</semanticResources>
734 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher</semanticResources>
735 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup</semanticResources>
736 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseQueryGroup</semanticResources>
737 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.IQueryGroup</semanticResources>
738 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine</semanticResources>
739 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.ViatraQueryEngineLifecycleListener</semanticResources>
740 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.IMatchUpdateListener</semanticResources>
741 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.ViatraQueryModelUpdateListener</semanticResources>
742 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery</semanticResources>
743 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.queries.BasePQuery</semanticResources>
744 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EClassifier</semanticResources>
745 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EEnumLiteral</semanticResources>
746 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EStructuralFeature</semanticResources>
747 <semanticResources>java:/Objects/org.eclipse.emf.ecore.ENamedElement</semanticResources>
748 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EPackage</semanticResources>
749 <semanticResources>java:/Objects/org.eclipse.emf.common.util.EList</semanticResources>
750 <semanticResources>java:/Objects/org.eclipse.emf.ecore.ETypeParameter</semanticResources>
751 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EModelElement</semanticResources>
752 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EObject</semanticResources>
753 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EAnnotation</semanticResources>
754 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.Notifier</semanticResources>
755 <semanticResources>java:/Objects/org.eclipse.emf.common.util.TreeIterator</semanticResources>
756 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EClass</semanticResources>
757 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EReference</semanticResources>
758 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EOperation</semanticResources>
759 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.Resource</semanticResources>
760 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.Adapter</semanticResources>
761 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.Notification</semanticResources>
762 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EAttribute</semanticResources>
763 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EGenericType</semanticResources>
764 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EDataType</semanticResources>
765 <semanticResources>java:/Objects/org.eclipse.emf.ecore.InternalEObject</semanticResources>
766 <semanticResources>java:/Objects/org.eclipse.emf.common.CommonPlugin</semanticResources>
767 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.NotificationChain</semanticResources>
768 <semanticResources>java:/Objects/org.eclipse.emf.common.util.URI</semanticResources>
769 <semanticResources>java:/Objects/org.eclipse.emf.common.util.Pool</semanticResources>
770 <semanticResources>java:/Objects/org.eclipse.emf.common.util.SegmentSequence</semanticResources>
771 <semanticResources>java:/Objects/org.eclipse.emf.common.util.CommonUtil</semanticResources>
772 <semanticResources>java:/Objects/org.eclipse.emf.common.util.WeakInterningHashSet</semanticResources>
773 <semanticResources>java:/Objects/java.util.concurrent.locks.ReentrantReadWriteLock</semanticResources>
774 <semanticResources>java:/Objects/org.eclipse.emf.common.util.InterningSet</semanticResources>
775 <semanticResources>java:/Objects/java.util.concurrent.locks.ReadWriteLock</semanticResources>
776 <semanticResources>java:/Objects/java.lang.IllegalMonitorStateException</semanticResources>
777 <semanticResources>java:/Objects/org.eclipse.emf.common.EMFPlugin</semanticResources>
778 <semanticResources>java:/Objects/org.osgi.framework.BundleActivator</semanticResources>
779 <semanticResources>java:/Objects/org.eclipse.emf.common.util.ResourceLocator</semanticResources>
780 <semanticResources>java:/Objects/org.eclipse.emf.common.util.DelegatingResourceLocator</semanticResources>
781 <semanticResources>java:/Objects/org.eclipse.emf.common.util.Logger</semanticResources>
782 <semanticResources>java:/Objects/org.eclipse.core.runtime.Plugin</semanticResources>
783 <semanticResources>java:/Objects/org.eclipse.core.runtime.IPluginDescriptor</semanticResources>
784 <semanticResources>java:/Objects/org.osgi.framework.Bundle</semanticResources>
785 <semanticResources>java:/Objects/org.eclipse.core.runtime.ILog</semanticResources>
786 <semanticResources>java:/Objects/org.osgi.framework.BundleContext</semanticResources>
787 <semanticResources>java:/Objects/org.eclipse.core.runtime.IPath</semanticResources>
788 <semanticResources>java:/Objects/org.eclipse.osgi.service.debug.DebugOptions</semanticResources>
789 <semanticResources>java:/Objects/org.eclipse.core.runtime.Preferences</semanticResources>
790 <semanticResources>java:/Objects/java.lang.IllegalStateException</semanticResources>
791 <semanticResources>java:/Objects/org.eclipse.core.runtime.CoreException</semanticResources>
792 <semanticResources>java:/Objects/org.osgi.util.tracker.ServiceTracker</semanticResources>
793 <semanticResources>java:/Objects/org.eclipse.osgi.service.debug.DebugTrace</semanticResources>
794 <semanticResources>java:/Objects/java.util.EventListener</semanticResources>
795 <semanticResources>java:/Objects/java.util.EventObject</semanticResources>
796 <semanticResources>java:/Objects/org.eclipse.core.runtime.IStatus</semanticResources>
797 <semanticResources>java:/Objects/org.eclipse.core.runtime.ListenerList</semanticResources>
798 <semanticResources>java:/Objects/org.osgi.util.tracker.ServiceTrackerCustomizer</semanticResources>
799 <semanticResources>java:/Objects/org.osgi.framework.AllServiceListener</semanticResources>
800 <semanticResources>java:/Objects/org.osgi.util.tracker.AbstractTracked</semanticResources>
801 <semanticResources>java:/Objects/org.osgi.framework.ServiceReference</semanticResources>
802 <semanticResources>java:/Objects/org.osgi.framework.ServiceEvent</semanticResources>
803 <semanticResources>java:/Objects/org.osgi.framework.ServiceListener</semanticResources>
804 <semanticResources>java:/Objects/org.osgi.framework.Filter</semanticResources>
805 <semanticResources>java:/Objects/org.osgi.framework.InvalidSyntaxException</semanticResources>
806 <semanticResources>java:/Objects/org.eclipse.core.runtime.IExtension</semanticResources>
807 <semanticResources>java:/Objects/org.eclipse.core.runtime.IExtensionPoint</semanticResources>
808 <semanticResources>java:/Objects/org.eclipse.core.runtime.IPluginPrerequisite</semanticResources>
809 <semanticResources>java:/Objects/org.eclipse.core.runtime.ILibrary</semanticResources>
810 <semanticResources>java:/Objects/org.eclipse.core.runtime.PluginVersionIdentifier</semanticResources>
811 <semanticResources>java:/Objects/org.eclipse.core.runtime.InvalidRegistryObjectException</semanticResources>
812 <semanticResources>java:/Objects/org.eclipse.core.runtime.IConfigurationElement</semanticResources>
813 <semanticResources>java:/Objects/org.eclipse.core.runtime.IContributor</semanticResources>
814 <semanticResources>java:/Objects/org.osgi.framework.Version</semanticResources>
815 <semanticResources>java:/Objects/org.osgi.framework.BundleException</semanticResources>
816 <semanticResources>java:/Objects/org.eclipse.core.runtime.ILogListener</semanticResources>
817 <semanticResources>java:/Objects/org.osgi.framework.BundleReference</semanticResources>
818 <semanticResources>java:/Objects/org.osgi.framework.BundleListener</semanticResources>
819 <semanticResources>java:/Objects/org.osgi.framework.FrameworkListener</semanticResources>
820 <semanticResources>java:/Objects/org.osgi.framework.ServiceObjects</semanticResources>
821 <semanticResources>java:/Objects/org.osgi.framework.ServiceRegistration</semanticResources>
822 <semanticResources>java:/Objects/org.osgi.framework.ServiceFactory</semanticResources>
823 <semanticResources>java:/Objects/org.osgi.framework.BundleEvent</semanticResources>
824 <semanticResources>java:/Objects/org.osgi.framework.FrameworkEvent</semanticResources>
825 <semanticResources>java:/Objects/org.eclipse.emf.ecore.ETypedElement</semanticResources>
826 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EParameter</semanticResources>
827 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.ResourceSet</semanticResources>
828 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.AdapterFactory</semanticResources>
829 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.URIConverter</semanticResources>
830 <semanticResources>java:/Objects/java.io.InputStreamReader</semanticResources>
831 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.ContentHandler</semanticResources>
832 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.URIHandler</semanticResources>
833 <semanticResources>java:/Objects/sun.nio.cs.StreamDecoder</semanticResources>
834 <semanticResources>java:/Objects/java.io.FileInputStream</semanticResources>
835 <semanticResources>java:/Objects/org.eclipse.emf.common.util.EMap</semanticResources>
836 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EFactory</semanticResources>
837 <semanticResources>java:/Objects/org.eclipse.emf.common.util.Enumerator</semanticResources>
838 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EEnum</semanticResources>
839 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.FeatureMap</semanticResources>
840 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.InternalEList</semanticResources>
841 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.EContentsEList</semanticResources>
842 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.AbstractSequentialInternalEList</semanticResources>
843 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement</semanticResources>
844 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem</semanticResources>
845 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink</semanticResources>
846 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand</semanticResources>
847 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain</semanticResources>
848 <semanticResources>java:/Objects/java.lang.Override</semanticResources>
849 <semanticResources>java:/Objects/java.lang.SuppressWarnings</semanticResources>
850 <semanticResources>java:/Objects/javax.annotation.Generated</semanticResources>
851 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification</semanticResources>
852 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft</semanticResources>
853 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.Payload</semanticResources>
854 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission</semanticResources>
855 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission</semanticResources>
856 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork</semanticResources>
857 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.SmallSat</semanticResources>
858 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.CubeSat3U</semanticResources>
859 <semanticResources>../src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend</semanticResources>
860 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ArrayLiterals</semanticResources>
861 <semanticResources>java:/Objects/com.google.common.annotations.GwtCompatible</semanticResources>
862 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Pure</semanticResources>
863 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Inline</semanticResources>
864 <semanticResources>java:/Objects/com.google.common.annotations.Beta</semanticResources>
865 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.CollectionLiterals</semanticResources>
866 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Pair</semanticResources>
867 <semanticResources>java:/Objects/java.util.LinkedHashSet</semanticResources>
868 <semanticResources>java:/Objects/java.util.TreeMap</semanticResources>
869 <semanticResources>java:/Objects/java.util.TreeSet</semanticResources>
870 <semanticResources>java:/Objects/java.util.NavigableMap</semanticResources>
871 <semanticResources>java:/Objects/java.util.NavigableSet</semanticResources>
872 <semanticResources>java:/Objects/java.util.SortedSet</semanticResources>
873 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.InputOutput</semanticResources>
874 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ArrayExtensions</semanticResources>
875 <semanticResources>java:/Objects/com.google.common.annotations.GwtIncompatible</semanticResources>
876 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.BigDecimalExtensions</semanticResources>
877 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.BigIntegerExtensions</semanticResources>
878 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.BooleanExtensions</semanticResources>
879 <semanticResources>java:/Objects/com.google.common.primitives.Booleans</semanticResources>
880 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ByteExtensions</semanticResources>
881 <semanticResources>java:/Objects/java.lang.Math</semanticResources>
882 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.CharacterExtensions</semanticResources>
883 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.CollectionExtensions</semanticResources>
884 <semanticResources>java:/Objects/com.google.common.collect.Iterables</semanticResources>
885 <semanticResources>java:/Objects/com.google.common.collect.ImmutableList</semanticResources>
886 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSet</semanticResources>
887 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSortedSet</semanticResources>
888 <semanticResources>java:/Objects/com.google.common.collect.ImmutableMap</semanticResources>
889 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSortedMap</semanticResources>
890 <semanticResources>java:/Objects/java.util.Collections</semanticResources>
891 <semanticResources>java:/Objects/com.google.common.collect.FluentIterable</semanticResources>
892 <semanticResources>java:/Objects/com.google.common.base.Predicate</semanticResources>
893 <semanticResources>java:/Objects/com.google.common.base.Function</semanticResources>
894 <semanticResources>java:/Objects/com.google.common.base.Optional</semanticResources>
895 <semanticResources>java:/Objects/com.google.common.collect.ImmutableCollection</semanticResources>
896 <semanticResources>java:/Objects/com.google.common.collect.ImmutableListMultimap</semanticResources>
897 <semanticResources>java:/Objects/com.google.common.base.Joiner</semanticResources>
898 <semanticResources>java:/Objects/com.google.common.collect.ImmutableMultiset</semanticResources>
899 <semanticResources>java:/Objects/com.google.common.collect.ImmutableMultimap</semanticResources>
900 <semanticResources>java:/Objects/com.google.common.collect.ListMultimap</semanticResources>
901 <semanticResources>java:/Objects/com.google.common.collect.Multimap</semanticResources>
902 <semanticResources>java:/Objects/com.google.common.collect.AbstractMultimap</semanticResources>
903 <semanticResources>java:/Objects/com.google.common.collect.UnmodifiableIterator</semanticResources>
904 <semanticResources>java:/Objects/com.google.common.collect.Serialization</semanticResources>
905 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSetMultimap</semanticResources>
906 <semanticResources>java:/Objects/com.google.common.collect.Multiset</semanticResources>
907 <semanticResources>java:/Objects/com.google.common.collect.Multimaps</semanticResources>
908 <semanticResources>java:/Objects/com.google.common.collect.Maps</semanticResources>
909 <semanticResources>java:/Objects/com.google.common.collect.AbstractListMultimap</semanticResources>
910 <semanticResources>java:/Objects/com.google.common.base.Supplier</semanticResources>
911 <semanticResources>java:/Objects/com.google.common.collect.AbstractMapBasedMultimap</semanticResources>
912 <semanticResources>java:/Objects/com.google.common.collect.AbstractSetMultimap</semanticResources>
913 <semanticResources>java:/Objects/com.google.common.collect.AbstractSortedSetMultimap</semanticResources>
914 <semanticResources>java:/Objects/com.google.common.collect.AbstractMultiset</semanticResources>
915 <semanticResources>java:/Objects/com.google.common.collect.Multisets</semanticResources>
916 <semanticResources>java:/Objects/com.google.common.collect.SetMultimap</semanticResources>
917 <semanticResources>java:/Objects/com.google.common.collect.ForwardingMultimap</semanticResources>
918 <semanticResources>java:/Objects/com.google.common.collect.SortedSetMultimap</semanticResources>
919 <semanticResources>java:/Objects/com.google.common.collect.FilteredMultimap</semanticResources>
920 <semanticResources>java:/Objects/com.google.common.collect.FilteredSetMultimap</semanticResources>
921 <semanticResources>java:/Objects/java.util.EnumMap</semanticResources>
922 <semanticResources>java:/Objects/com.google.common.base.Converter</semanticResources>
923 <semanticResources>java:/Objects/com.google.common.collect.BiMap</semanticResources>
924 <semanticResources>java:/Objects/com.google.common.collect.ForwardingMap</semanticResources>
925 <semanticResources>java:/Objects/com.google.common.collect.Ordering</semanticResources>
926 <semanticResources>java:/Objects/com.google.common.collect.Sets</semanticResources>
927 <semanticResources>java:/Objects/com.google.common.collect.ForwardingSet</semanticResources>
928 <semanticResources>java:/Objects/com.google.common.collect.AbstractNavigableMap</semanticResources>
929 <semanticResources>java:/Objects/com.google.common.collect.MapDifference</semanticResources>
930 <semanticResources>java:/Objects/com.google.common.collect.SortedMapDifference</semanticResources>
931 <semanticResources>java:/Objects/com.google.common.collect.ForwardingCollection</semanticResources>
932 <semanticResources>java:/Objects/com.google.common.collect.ForwardingSortedMap</semanticResources>
933 <semanticResources>java:/Objects/com.google.common.base.Equivalence</semanticResources>
934 <semanticResources>java:/Objects/java.util.IdentityHashMap</semanticResources>
935 <semanticResources>java:/Objects/com.google.common.collect.Range</semanticResources>
936 <semanticResources>java:/Objects/com.google.common.collect.ForwardingObject</semanticResources>
937 <semanticResources>java:/Objects/com.google.common.annotations.VisibleForTesting</semanticResources>
938 <semanticResources>java:/Objects/java.util.EnumSet</semanticResources>
939 <semanticResources>java:/Objects/com.google.common.collect.CartesianList</semanticResources>
940 <semanticResources>java:/Objects/com.google.common.collect.ForwardingNavigableSet</semanticResources>
941 <semanticResources>java:/Objects/com.google.common.collect.Collections2</semanticResources>
942 <semanticResources>java:/Objects/com.google.common.collect.ForwardingSortedSet</semanticResources>
943 <semanticResources>java:/Objects/java.util.concurrent.CopyOnWriteArraySet</semanticResources>
944 <semanticResources>java:/Objects/com.google.common.collect.AbstractIterator</semanticResources>
945 <semanticResources>java:/Objects/java.util.concurrent.CopyOnWriteArrayList</semanticResources>
946 <semanticResources>java:/Objects/java.util.function.BiPredicate</semanticResources>
947 <semanticResources>java:/Objects/com.google.common.collect.Cut</semanticResources>
948 <semanticResources>java:/Objects/com.google.common.collect.DiscreteDomain</semanticResources>
949 <semanticResources>java:/Objects/com.google.common.collect.BoundType</semanticResources>
950 <semanticResources>java:/Objects/com.google.common.collect.ForwardingMultiset</semanticResources>
951 <semanticResources>java:/Objects/com.google.common.collect.SortedMultiset</semanticResources>
952 <semanticResources>java:/Objects/com.google.common.collect.SortedMultisetBridge</semanticResources>
953 <semanticResources>java:/Objects/com.google.common.collect.SortedIterable</semanticResources>
954 <semanticResources>java:/Objects/com.google.common.collect.UnmodifiableListIterator</semanticResources>
955 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSortedSetFauxverideShim</semanticResources>
956 <semanticResources>java:/Objects/com.google.common.collect.RegularImmutableSortedSet</semanticResources>
957 <semanticResources>java:/Objects/com.google.common.collect.ImmutableMapEntry</semanticResources>
958 <semanticResources>java:/Objects/com.google.common.collect.ImmutableEntry</semanticResources>
959 <semanticResources>java:/Objects/com.google.common.collect.AbstractMapEntry</semanticResources>
960 <semanticResources>java:/Objects/com.google.common.collect.ImmutableSortedMapFauxverideShim</semanticResources>
961 <semanticResources>java:/Objects/java.util.AbstractQueue</semanticResources>
962 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ComparableExtensions</semanticResources>
963 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.DoubleExtensions</semanticResources>
964 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.FloatExtensions</semanticResources>
965 <semanticResources>java:/Objects/java.lang.Float</semanticResources>
966 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.FunctionExtensions</semanticResources>
967 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Functions</semanticResources>
968 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Procedures</semanticResources>
969 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.IntegerExtensions</semanticResources>
970 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ExclusiveRange</semanticResources>
971 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.IntegerRange</semanticResources>
972 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.IterableExtensions</semanticResources>
973 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.IteratorExtensions</semanticResources>
974 <semanticResources>java:/Objects/com.google.common.collect.Iterators</semanticResources>
975 <semanticResources>java:/Objects/com.google.common.collect.MultitransformedIterator</semanticResources>
976 <semanticResources>java:/Objects/com.google.common.collect.PeekingIterator</semanticResources>
977 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ListExtensions</semanticResources>
978 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.LongExtensions</semanticResources>
979 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.MapExtensions</semanticResources>
980 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.internal.UnmodifiableMergingMapView</semanticResources>
981 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ObjectExtensions</semanticResources>
982 <semanticResources>java:/Objects/com.google.common.base.Objects</semanticResources>
983 <semanticResources>java:/Objects/com.google.common.base.ExtraObjectsMethodsForWeb</semanticResources>
984 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ProcedureExtensions</semanticResources>
985 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.ShortExtensions</semanticResources>
986 <semanticResources>java:/Objects/java.lang.Short</semanticResources>
987 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.StringExtensions</semanticResources>
988 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend</semanticResources>
989 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneSetup.xtend</semanticResources>
990 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigurationScript</semanticResources>
991 <semanticResources>java:/Objects/org.eclipse.core.runtime.NullProgressMonitor</semanticResources>
992 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.EcoreUtil</semanticResources>
993 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine</semanticResources>
994 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/PatternLanguageWithRSModule.xtend</semanticResources>
995 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/PatternLanguageWithRSSetup.xtend</semanticResources>
996 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend</semanticResources>
997 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend</semanticResources>
998 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneRuntimeModule.xtend</semanticResources>
999 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.ApplicationConfigurationStandaloneSetupGenerated</semanticResources>
1000 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend</semanticResources>
1001 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/valueconverter/ApplicationConfigurationValueConverterService.xtend</semanticResources>
1002 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.AbstractApplicationConfigurationRuntimeModule</semanticResources>
1003 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage</semanticResources>
1004 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.CftImport</semanticResources>
1005 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.EPackageImport</semanticResources>
1006 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PatternEntry</semanticResources>
1007 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ViatraImport</semanticResources>
1008 <semanticResources>java:/Objects/org.eclipse.xtext.xbase.lib.Extension</semanticResources>
1009 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationFactory</semanticResources>
1010 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.AllPackageEntry</semanticResources>
1011 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.AllPatternEntry</semanticResources>
1012 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ClassReference</semanticResources>
1013 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ClassTypeScope</semanticResources>
1014 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Command</semanticResources>
1015 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Config</semanticResources>
1016 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigDeclaration</semanticResources>
1017 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigEntry</semanticResources>
1018 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigReference</semanticResources>
1019 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigSpecification</semanticResources>
1020 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.CostEntry</semanticResources>
1021 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.CostObjectiveFunction</semanticResources>
1022 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.CustomEntry</semanticResources>
1023 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Declaration</semanticResources>
1024 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.DocumentationEntry</semanticResources>
1025 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ExactNumber</semanticResources>
1026 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.File</semanticResources>
1027 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FileDeclaration</semanticResources>
1028 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FileReference</semanticResources>
1029 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FileSpecification</semanticResources>
1030 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FolderEntry</semanticResources>
1031 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GenerationTask</semanticResources>
1032 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GraphPattern</semanticResources>
1033 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GraphPatternDeclaration</semanticResources>
1034 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GraphPatternReference</semanticResources>
1035 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Import</semanticResources>
1036 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntEnumberation</semanticResources>
1037 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntegerReference</semanticResources>
1038 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntegerScope</semanticResources>
1039 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntegerTypeScope</semanticResources>
1040 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntervallNumber</semanticResources>
1041 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MemoryEntry</semanticResources>
1042 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Metamodel</semanticResources>
1043 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelDeclaration</semanticResources>
1044 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelElement</semanticResources>
1045 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelEntry</semanticResources>
1046 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelReference</semanticResources>
1047 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelSpecification</semanticResources>
1048 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ModelEntry</semanticResources>
1049 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Mtff</semanticResources>
1050 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.NumberSpecification</semanticResources>
1051 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectReference</semanticResources>
1052 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectTypeScope</semanticResources>
1053 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Objective</semanticResources>
1054 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectiveDeclaration</semanticResources>
1055 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectiveEntry</semanticResources>
1056 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectiveFunction</semanticResources>
1057 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectiveReference</semanticResources>
1058 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectiveSpecification</semanticResources>
1059 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.OptimizationEntry</semanticResources>
1060 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModel</semanticResources>
1061 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelDeclaration</semanticResources>
1062 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelEntry</semanticResources>
1063 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelReference</semanticResources>
1064 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelSpecification</semanticResources>
1065 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PatternElement</semanticResources>
1066 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PatternSpecification</semanticResources>
1067 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RealEnumeration</semanticResources>
1068 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RealReference</semanticResources>
1069 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RealScope</semanticResources>
1070 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RealTypeScope</semanticResources>
1071 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ReliabilityObjectiveFunction</semanticResources>
1072 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ReliabiltiyProbability</semanticResources>
1073 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RuntimeEntry</semanticResources>
1074 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Scope</semanticResources>
1075 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeDeclaration</semanticResources>
1076 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeReference</semanticResources>
1077 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeSpecification</semanticResources>
1078 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.StringEnumeration</semanticResources>
1079 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.StringReference</semanticResources>
1080 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.StringScope</semanticResources>
1081 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.StringTypeScope</semanticResources>
1082 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Task</semanticResources>
1083 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ThresholdEntry</semanticResources>
1084 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.TypeReference</semanticResources>
1085 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.TypeScope</semanticResources>
1086 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.DocumentLevelSpecification</semanticResources>
1087 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Solver</semanticResources>
1088 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.OptimizationDirection</semanticResources>
1089 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ComparisonOperator</semanticResources>
1090 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/valueconverter/QualifiedNameValueConverter.xtend</semanticResources>
1091 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/validation/ApplicationConfigurationValidator.xtend</semanticResources>
1092 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.validation.AbstractApplicationConfigurationValidator</semanticResources>
1093 <semanticResources>java:/Objects/org.eclipse.core.runtime.IProgressMonitor</semanticResources>
1094 <semanticResources>java:/Objects/org.eclipse.emf.common.util.AbstractTreeIterator</semanticResources>
1095 <semanticResources>java:/Objects/org.eclipse.emf.common.util.Diagnostic</semanticResources>
1096 <semanticResources>java:/Objects/org.eclipse.emf.common.util.BasicEList</semanticResources>
1097 <semanticResources>java:/Objects/org.eclipse.emf.common.util.AbstractEList</semanticResources>
1098 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.matcher.RetePatternMatcher</semanticResources>
1099 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.RecipeTraceInfo</semanticResources>
1100 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.index.Indexer</semanticResources>
1101 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.boundary.Disconnectable</semanticResources>
1102 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.boundary.ReteBoundary</semanticResources>
1103 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.construction.plancompiler.ReteRecipeCompiler</semanticResources>
1104 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Network</semanticResources>
1105 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.matcher.HintConfigurator</semanticResources>
1106 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.single.TransformerNode</semanticResources>
1107 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.index.IterableIndexer</semanticResources>
1108 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Receiver</semanticResources>
1109 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Production</semanticResources>
1110 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.single.SingleInputNode</semanticResources>
1111 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.ReteContainer</semanticResources>
1112 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Direction</semanticResources>
1113 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.StandardNode</semanticResources>
1114 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Tunnel</semanticResources>
1115 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Supplier</semanticResources>
1116 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.TraceInfo</semanticResources>
1117 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.mailbox.Mailbox</semanticResources>
1118 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.BaseNode</semanticResources>
1119 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.index.ProjectionIndexer</semanticResources>
1120 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.Node</semanticResources>
1121 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.CommunicationTracker</semanticResources>
1122 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.CommunicationGroup</semanticResources>
1123 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.RederivableNode</semanticResources>
1124 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.MessageKind</semanticResources>
1125 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.IGroupable</semanticResources>
1126 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.util.Clearable</semanticResources>
1127 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.remote.Address</semanticResources>
1128 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.ConnectionFactory</semanticResources>
1129 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.boundary.InputConnector</semanticResources>
1130 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.NodeFactory</semanticResources>
1131 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.NodeProvisioner</semanticResources>
1132 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.network.UpdateMessage</semanticResources>
1133 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ReteNodeRecipe</semanticResources>
1134 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.IndexerRecipe</semanticResources>
1135 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.SingleParentNodeRecipe</semanticResources>
1136 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.Mask</semanticResources>
1137 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.InputRecipe</semanticResources>
1138 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.InputFilterRecipe</semanticResources>
1139 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.boundary.ExternalInputEnumeratorNode</semanticResources>
1140 <semanticResources>java:/Objects/com.google.common.collect.Table</semanticResources>
1141 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.FilterRecipe</semanticResources>
1142 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.AlphaRecipe</semanticResources>
1143 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.CountAggregatorRecipe</semanticResources>
1144 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.TransparentRecipe</semanticResources>
1145 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ExpressionEnforcerRecipe</semanticResources>
1146 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.SingleColumnAggregatorRecipe</semanticResources>
1147 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.TransitiveClosureRecipe</semanticResources>
1148 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ProductionRecipe</semanticResources>
1149 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.UniquenessEnforcerRecipe</semanticResources>
1150 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ConstantRecipe</semanticResources>
1151 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.DiscriminatorBucketRecipe</semanticResources>
1152 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.DiscriminatorDispatcherRecipe</semanticResources>
1153 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.TrimmerRecipe</semanticResources>
1154 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.InequalityFilterRecipe</semanticResources>
1155 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.EqualityFilterRecipe</semanticResources>
1156 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.AntiJoinRecipe</semanticResources>
1157 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.SemiJoinRecipe</semanticResources>
1158 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.JoinRecipe</semanticResources>
1159 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ExpressionDefinition</semanticResources>
1160 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator</semanticResources>
1161 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.IndexerBasedAggregatorRecipe</semanticResources>
1162 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ProjectionIndexerRecipe</semanticResources>
1163 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.RederivableNodeRecipe</semanticResources>
1164 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IMultisetAggregationOperator</semanticResources>
1165 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.MonotonicityInfo</semanticResources>
1166 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.MultiParentNodeRecipe</semanticResources>
1167 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ExistenceJoinRecipe</semanticResources>
1168 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.BetaRecipe</semanticResources>
1169 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider</semanticResources>
1170 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.remote.RemoteReceiver</semanticResources>
1171 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.remote.RemoteSupplier</semanticResources>
1172 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.UserRequestTrace</semanticResources>
1173 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.helper.RecipeRecognizer</semanticResources>
1174 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.index.IndexerListener</semanticResources>
1175 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.IQueryPlannerStrategy</semanticResources>
1176 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.PlanningTrace</semanticResources>
1177 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.CompiledSubPlan</semanticResources>
1178 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality</semanticResources>
1179 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality</semanticResources>
1180 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint</semanticResources>
1181 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall</semanticResources>
1182 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter</semanticResources>
1183 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint</semanticResources>
1184 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation</semanticResources>
1185 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryReflexiveTransitiveClosure</semanticResources>
1186 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure</semanticResources>
1187 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall</semanticResources>
1188 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint</semanticResources>
1189 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue</semanticResources>
1190 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.CompiledQuery</semanticResources>
1191 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.EnumerablePConstraint</semanticResources>
1192 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.operations.PJoin</semanticResources>
1193 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.operations.PProject</semanticResources>
1194 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.planning.operations.PStart</semanticResources>
1195 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.RecipesFactory</semanticResources>
1196 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter</semanticResources>
1197 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.construction.plancompiler.RecursionCutoffPoint</semanticResources>
1198 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.traceability.PatternTraceInfo</semanticResources>
1199 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.ITypeConstraint</semanticResources>
1200 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.ITypeInfoProviderConstraint</semanticResources>
1201 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternCallBasedDeferred</semanticResources>
1202 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.IQueryReference</semanticResources>
1203 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.BoundAggregator</semanticResources>
1204 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.BaseTypeSafeConstraint</semanticResources>
1205 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.AbstractTransitiveClosure</semanticResources>
1206 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.KeyedEnumerablePConstraint</semanticResources>
1207 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.AggregatorIndexerRecipe</semanticResources>
1208 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.CheckRecipe</semanticResources>
1209 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.EvalRecipe</semanticResources>
1210 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.ReteRecipe</semanticResources>
1211 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.rete.recipes.RecipesPackage</semanticResources>
1212 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.AbstractRewriterTraceSource</semanticResources>
1213 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.IDerivativeModificationReason</semanticResources>
1214 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.IRewriterTraceCollector</semanticResources>
1215 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.IPTraceableTraceProvider</semanticResources>
1216 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util/ApplicationConfigurationParser.xtend</semanticResources>
1217 <semanticResources>java:/Objects/org.eclipse.core.runtime.Status</semanticResources>
1218 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.Job</semanticResources>
1219 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend</semanticResources>
1220 <semanticResources>java:/Objects/org.eclipse.emf.ecore.resource.impl.ResourceSetImpl</semanticResources>
1221 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.impl.NotifierImpl</semanticResources>
1222 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.EContentAdapter</semanticResources>
1223 <semanticResources>java:/Objects/org.eclipse.emf.ecore.util.NotifyingInternalEListImpl</semanticResources>
1224 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.impl.BasicNotifierImpl</semanticResources>
1225 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.impl.AdapterImpl</semanticResources>
1226 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.impl.NotifyingListImpl</semanticResources>
1227 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.NotifyingList</semanticResources>
1228 <semanticResources>java:/Objects/org.eclipse.emf.common.notify.impl.NotificationImpl</semanticResources>
1229 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.InternalJob</semanticResources>
1230 <semanticResources>java:/Objects/org.eclipse.core.runtime.IAdaptable</semanticResources>
1231 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.IJobChangeListener</semanticResources>
1232 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.IJobFunction</semanticResources>
1233 <semanticResources>java:/Objects/org.eclipse.core.runtime.ICoreRunnable</semanticResources>
1234 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.JobGroup</semanticResources>
1235 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.IJobManager</semanticResources>
1236 <semanticResources>java:/Objects/org.eclipse.core.runtime.QualifiedName</semanticResources>
1237 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.ISchedulingRule</semanticResources>
1238 <semanticResources>java:/Objects/org.eclipse.core.runtime.OperationCanceledException</semanticResources>
1239 <semanticResources>java:/Objects/org.eclipse.core.runtime.PlatformObject</semanticResources>
1240 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.JobManager</semanticResources>
1241 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.ObjectMap</semanticResources>
1242 <semanticResources>java:/Objects/org.eclipse.osgi.service.debug.DebugOptionsListener</semanticResources>
1243 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.JobChangeAdapter</semanticResources>
1244 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.IJobChangeEvent</semanticResources>
1245 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.ThreadJob</semanticResources>
1246 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.InternalJobGroup</semanticResources>
1247 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.JobQueue</semanticResources>
1248 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.LockManager</semanticResources>
1249 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.ILock</semanticResources>
1250 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.LockListener</semanticResources>
1251 <semanticResources>java:/Objects/org.eclipse.core.runtime.jobs.ProgressProvider</semanticResources>
1252 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.Worker</semanticResources>
1253 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.ImplicitJobs</semanticResources>
1254 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.InternalWorker</semanticResources>
1255 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.JobListeners</semanticResources>
1256 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.WorkerPool</semanticResources>
1257 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.Counter</semanticResources>
1258 <semanticResources>java:/Objects/org.eclipse.core.runtime.MultiStatus</semanticResources>
1259 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.OrderedLock</semanticResources>
1260 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.DeadlockDetector</semanticResources>
1261 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.Semaphore</semanticResources>
1262 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.Queue</semanticResources>
1263 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.Deadlock</semanticResources>
1264 <semanticResources>java:/Objects/org.eclipse.core.internal.jobs.JobChangeEvent</semanticResources>
1265 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/validation/MetamodelValidator.xtend</semanticResources>
1266 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/validation/QueryAndMetamodelValidator.xtend</semanticResources>
1267 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/MetamodelLoader.xtend</semanticResources>
1268 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ModelLoader.xtend</semanticResources>
1269 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/QueryLoader.xtend</semanticResources>
1270 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend</semanticResources>
1271 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScopeLoader.xtend</semanticResources>
1272 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/NullWorkspace.xtend</semanticResources>
1273 <semanticResources>java:/Objects/java.lang.System</semanticResources>
1274 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/EclipseBasedProgressMonitor.xtend</semanticResources>
1275 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EcorePackage</semanticResources>
1276 <semanticResources>java:/Objects/org.eclipse.emf.ecore.EcoreFactory</semanticResources>
1277 <semanticResources>java:/Objects/java.io.Console</semanticResources>
1278 <semanticResources>java:/Objects/java.io.FileOutputStream</semanticResources>
1279 <semanticResources>../inputs/SatelliteInstance.xmi</semanticResources>
1280 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor</semanticResources>
1281 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.ScriptConsole</semanticResources>
1282 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.ScriptConsoleDecorator</semanticResources>
1283 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.ApplicationConfigurationStandaloneSetup</semanticResources>
1284 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.StandardOutputBasedScriptConsole</semanticResources>
1285 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor</semanticResources>
1286 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.util.ApplicationConfigurationParser</semanticResources>
1287 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.PatternLanguageWithRSSetup</semanticResources>
1288 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.PatternLanguageWithRSModule</semanticResources>
1289 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.ApplicationConfigurationStandaloneRuntimeModule</semanticResources>
1290 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.validation.ApplicationConfigurationValidator</semanticResources>
1291 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor</semanticResources>
1292 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.MetamodelLoader</semanticResources>
1293 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.validation.MetamodelValidator</semanticResources>
1294 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.ModelLoader</semanticResources>
1295 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.validation.QueryAndMetamodelValidator</semanticResources>
1296 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader</semanticResources>
1297 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.ScopeLoader</semanticResources>
1298 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.SolverLoader</semanticResources>
1299 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.valueconverter.QualifiedNameValueConverter</semanticResources>
1300 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.NullWorkspace</semanticResources>
1301 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.application.execution.EclipseBasedProgressMonitor</semanticResources>
1302 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.aggregators.count</semanticResources>
1303 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.AggregatorType</semanticResources>
1304 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IAggregatorFactory</semanticResources>
1305 <semanticResources>java:/Objects/java.lang.annotation.Inherited</semanticResources>
1306 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.aggregators.min</semanticResources>
1307 <semanticResources>../src/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/SatelliteMetrics.vql</semanticResources>
1308 <semanticResources>java:/Objects/org.eclipse.viatra.query.runtime.matchers.aggregators.max</semanticResources>
1309 <semanticResources>java:/Objects/hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind</semanticResources>
1310 <ownedViews xmi:type="viewpoint:DView" uid="_reOHEF0qEemRYLyXht2IrQ">
1311 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
1312 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_re1yIF0qEemRYLyXht2IrQ" name="satellite" repPath="#_rel6gF0qEemRYLyXht2IrQ">
1313 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
1314 <target xmi:type="ecore:EPackage" href="satellite.ecore#/"/>
1315 </ownedRepresentationDescriptors>
1316 </ownedViews>
1317 </viewpoint:DAnalysis>
1318 <diagram:DSemanticDiagram uid="_rel6gF0qEemRYLyXht2IrQ" name="satellite">
1319 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_rew5oF0qEemRYLyXht2IrQ" source="DANNOTATION_CUSTOMIZATION_KEY">
1320 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_rexgsF0qEemRYLyXht2IrQ">
1321 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_028-wF0vEemRYLyXht2IrQ" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
1322 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1323 <labelFormat>bold</labelFormat>
1324 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1325 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1326 </computedStyleDescriptions>
1327 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan">
1328 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1329 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6kODkV0vEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1330 <labelFormat>bold</labelFormat>
1331 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1332 </centerLabelStyleDescription>
1333 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6kODkl0vEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1334 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1335 </endLabelStyleDescription>
1336 </computedStyleDescriptions>
1337 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan">
1338 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1339 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ccHLEV0wEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1340 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1341 </centerLabelStyleDescription>
1342 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ccHLEl0wEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1343 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1344 </endLabelStyleDescription>
1345 </computedStyleDescriptions>
1346 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan">
1347 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1348 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_fDAfYV0xEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1349 <labelFormat>bold</labelFormat>
1350 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1351 </centerLabelStyleDescription>
1352 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_fDAfYl0xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1353 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1354 </endLabelStyleDescription>
1355 </computedStyleDescriptions>
1356 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_o3yl4HA6Eem9acJE7_CmTw" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
1357 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1358 <labelFormat>bold</labelFormat>
1359 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1360 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1361 </computedStyleDescriptions>
1362 </data>
1363 </ownedAnnotationEntries>
1364 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_rfAxQF0qEemRYLyXht2IrQ" source="GMF_DIAGRAMS">
1365 <data xmi:type="notation:Diagram" xmi:id="_rfAxQV0qEemRYLyXht2IrQ" type="Sirius" element="_rel6gF0qEemRYLyXht2IrQ" measurementUnit="Pixel">
1366 <children xmi:type="notation:Node" xmi:id="_tNH44F0qEemRYLyXht2IrQ" type="2003" element="_tM4oUF0qEemRYLyXht2IrQ">
1367 <children xmi:type="notation:Node" xmi:id="_tNK8MF0qEemRYLyXht2IrQ" type="5007"/>
1368 <children xmi:type="notation:Node" xmi:id="_tNLjQF0qEemRYLyXht2IrQ" type="7004">
1369 <styles xmi:type="notation:SortingStyle" xmi:id="_tNLjQV0qEemRYLyXht2IrQ"/>
1370 <styles xmi:type="notation:FilteringStyle" xmi:id="_tNLjQl0qEemRYLyXht2IrQ"/>
1371 </children>
1372 <styles xmi:type="notation:ShapeStyle" xmi:id="_tNH44V0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1373 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNH44l0qEemRYLyXht2IrQ" x="39" y="39" width="146" height="100"/>
1374 </children>
1375 <children xmi:type="notation:Node" xmi:id="_vlcbIF0qEemRYLyXht2IrQ" type="2003" element="_vlPm0F0qEemRYLyXht2IrQ">
1376 <children xmi:type="notation:Node" xmi:id="_vldpQF0qEemRYLyXht2IrQ" type="5007"/>
1377 <children xmi:type="notation:Node" xmi:id="_vldpQV0qEemRYLyXht2IrQ" type="7004">
1378 <children xmi:type="notation:Node" xmi:id="_zCslIF0qEemRYLyXht2IrQ" type="3010" element="_zChmAF0qEemRYLyXht2IrQ">
1379 <styles xmi:type="notation:FontStyle" xmi:id="_zCslIV0qEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1380 <layoutConstraint xmi:type="notation:Location" xmi:id="_zCslIl0qEemRYLyXht2IrQ"/>
1381 </children>
1382 <styles xmi:type="notation:SortingStyle" xmi:id="_vldpQl0qEemRYLyXht2IrQ"/>
1383 <styles xmi:type="notation:FilteringStyle" xmi:id="_vldpQ10qEemRYLyXht2IrQ"/>
1384 </children>
1385 <styles xmi:type="notation:ShapeStyle" xmi:id="_vlcbIV0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1386 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vlcbIl0qEemRYLyXht2IrQ" x="39" y="182" width="146" height="100"/>
1387 </children>
1388 <children xmi:type="notation:Node" xmi:id="_3UIIoF0rEemRYLyXht2IrQ" type="2003" element="_3T7UUF0rEemRYLyXht2IrQ">
1389 <children xmi:type="notation:Node" xmi:id="_3UJWwF0rEemRYLyXht2IrQ" type="5007"/>
1390 <children xmi:type="notation:Node" xmi:id="_3UJWwV0rEemRYLyXht2IrQ" type="7004">
1391 <styles xmi:type="notation:SortingStyle" xmi:id="_3UJWwl0rEemRYLyXht2IrQ"/>
1392 <styles xmi:type="notation:FilteringStyle" xmi:id="_3UJWw10rEemRYLyXht2IrQ"/>
1393 </children>
1394 <styles xmi:type="notation:ShapeStyle" xmi:id="_3UIIoV0rEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1395 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3UIIol0rEemRYLyXht2IrQ" x="390" y="182" width="172" height="100"/>
1396 </children>
1397 <children xmi:type="notation:Node" xmi:id="__OldwF0rEemRYLyXht2IrQ" type="2003" element="__OYCYF0rEemRYLyXht2IrQ">
1398 <children xmi:type="notation:Node" xmi:id="__OmE0F0rEemRYLyXht2IrQ" type="5007"/>
1399 <children xmi:type="notation:Node" xmi:id="__Omr4F0rEemRYLyXht2IrQ" type="7004">
1400 <styles xmi:type="notation:SortingStyle" xmi:id="__Omr4V0rEemRYLyXht2IrQ"/>
1401 <styles xmi:type="notation:FilteringStyle" xmi:id="__Omr4l0rEemRYLyXht2IrQ"/>
1402 </children>
1403 <styles xmi:type="notation:ShapeStyle" xmi:id="__OldwV0rEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1404 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Oldwl0rEemRYLyXht2IrQ" x="507" y="325" width="159" height="100"/>
1405 </children>
1406 <children xmi:type="notation:Node" xmi:id="_Aq3OgF0sEemRYLyXht2IrQ" type="2003" element="_AqsPYF0sEemRYLyXht2IrQ">
1407 <children xmi:type="notation:Node" xmi:id="_Aq31kF0sEemRYLyXht2IrQ" type="5007"/>
1408 <children xmi:type="notation:Node" xmi:id="_Aq31kV0sEemRYLyXht2IrQ" type="7004">
1409 <children xmi:type="notation:Node" xmi:id="_-9pX8G60Eem3gIPdAp40Tw" type="3010" element="_-9TZsG60Eem3gIPdAp40Tw">
1410 <styles xmi:type="notation:FontStyle" xmi:id="_-9pX8W60Eem3gIPdAp40Tw" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1411 <layoutConstraint xmi:type="notation:Location" xmi:id="_-9pX8m60Eem3gIPdAp40Tw"/>
1412 </children>
1413 <styles xmi:type="notation:SortingStyle" xmi:id="_Aq31kl0sEemRYLyXht2IrQ"/>
1414 <styles xmi:type="notation:FilteringStyle" xmi:id="_Aq31k10sEemRYLyXht2IrQ"/>
1415 </children>
1416 <styles xmi:type="notation:ShapeStyle" xmi:id="_Aq3OgV0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1417 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aq3Ogl0sEemRYLyXht2IrQ" x="338" y="325" width="120" height="100"/>
1418 </children>
1419 <children xmi:type="notation:Node" xmi:id="_j0vs4F0tEemRYLyXht2IrQ" type="2003" element="_j0eAEF0tEemRYLyXht2IrQ">
1420 <children xmi:type="notation:Node" xmi:id="_j0wT8F0tEemRYLyXht2IrQ" type="5007"/>
1421 <children xmi:type="notation:Node" xmi:id="_j0wT8V0tEemRYLyXht2IrQ" type="7004">
1422 <children xmi:type="notation:Node" xmi:id="_zugwAF0vEemRYLyXht2IrQ" type="3010" element="_zuaCUF0vEemRYLyXht2IrQ">
1423 <styles xmi:type="notation:FontStyle" xmi:id="_zugwAV0vEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1424 <layoutConstraint xmi:type="notation:Location" xmi:id="_zugwAl0vEemRYLyXht2IrQ"/>
1425 </children>
1426 <children xmi:type="notation:Node" xmi:id="_Q89nMF0wEemRYLyXht2IrQ" type="3010" element="_Q8yBAF0wEemRYLyXht2IrQ">
1427 <styles xmi:type="notation:FontStyle" xmi:id="_Q89nMV0wEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1428 <layoutConstraint xmi:type="notation:Location" xmi:id="_Q89nMl0wEemRYLyXht2IrQ"/>
1429 </children>
1430 <styles xmi:type="notation:SortingStyle" xmi:id="_j0wT8l0tEemRYLyXht2IrQ"/>
1431 <styles xmi:type="notation:FilteringStyle" xmi:id="_j0wT810tEemRYLyXht2IrQ"/>
1432 </children>
1433 <styles xmi:type="notation:ShapeStyle" xmi:id="_j0vs4V0tEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1434 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j0vs4l0tEemRYLyXht2IrQ" x="754" y="182" width="198" height="100"/>
1435 </children>
1436 <children xmi:type="notation:Node" xmi:id="_vyrzoF0vEemRYLyXht2IrQ" type="2003" element="_vyhbkF0vEemRYLyXht2IrQ">
1437 <children xmi:type="notation:Node" xmi:id="_vysasF0vEemRYLyXht2IrQ" type="5007"/>
1438 <children xmi:type="notation:Node" xmi:id="_vysasV0vEemRYLyXht2IrQ" type="7004">
1439 <children xmi:type="notation:Node" xmi:id="_x32JUF0vEemRYLyXht2IrQ" type="3010" element="_x3rKMF0vEemRYLyXht2IrQ">
1440 <styles xmi:type="notation:FontStyle" xmi:id="_x32JUV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1441 <layoutConstraint xmi:type="notation:Location" xmi:id="_x32JUl0vEemRYLyXht2IrQ"/>
1442 </children>
1443 <children xmi:type="notation:Node" xmi:id="_yhHIwF0vEemRYLyXht2IrQ" type="3010" element="_yg2DAF0vEemRYLyXht2IrQ">
1444 <styles xmi:type="notation:FontStyle" xmi:id="_yhHIwV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1445 <layoutConstraint xmi:type="notation:Location" xmi:id="_yhHIwl0vEemRYLyXht2IrQ"/>
1446 </children>
1447 <children xmi:type="notation:Node" xmi:id="_zAX3oF0vEemRYLyXht2IrQ" type="3010" element="_zAInEF0vEemRYLyXht2IrQ">
1448 <styles xmi:type="notation:FontStyle" xmi:id="_zAX3oV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1449 <layoutConstraint xmi:type="notation:Location" xmi:id="_zAX3ol0vEemRYLyXht2IrQ"/>
1450 </children>
1451 <styles xmi:type="notation:SortingStyle" xmi:id="_vysasl0vEemRYLyXht2IrQ"/>
1452 <styles xmi:type="notation:FilteringStyle" xmi:id="_vysas10vEemRYLyXht2IrQ"/>
1453 </children>
1454 <styles xmi:type="notation:ShapeStyle" xmi:id="_vyrzoV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1455 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyrzol0vEemRYLyXht2IrQ" x="988" y="39" width="120" height="100"/>
1456 </children>
1457 <children xmi:type="notation:Node" xmi:id="_Ct-Y8F0wEemRYLyXht2IrQ" type="2003" element="_Ctw9kF0wEemRYLyXht2IrQ">
1458 <children xmi:type="notation:Node" xmi:id="_Ct_AAF0wEemRYLyXht2IrQ" type="5007"/>
1459 <children xmi:type="notation:Node" xmi:id="_Ct_nEF0wEemRYLyXht2IrQ" type="7004">
1460 <styles xmi:type="notation:SortingStyle" xmi:id="_Ct_nEV0wEemRYLyXht2IrQ"/>
1461 <styles xmi:type="notation:FilteringStyle" xmi:id="_Ct_nEl0wEemRYLyXht2IrQ"/>
1462 </children>
1463 <styles xmi:type="notation:ShapeStyle" xmi:id="_Ct-Y8V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1464 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ct-Y8l0wEemRYLyXht2IrQ" x="754" y="325" width="198" height="100"/>
1465 </children>
1466 <children xmi:type="notation:Node" xmi:id="_M5X18F0wEemRYLyXht2IrQ" type="2003" element="_M5OsAF0wEemRYLyXht2IrQ">
1467 <children xmi:type="notation:Node" xmi:id="_M5YdAF0wEemRYLyXht2IrQ" type="5007"/>
1468 <children xmi:type="notation:Node" xmi:id="_M5YdAV0wEemRYLyXht2IrQ" type="7004">
1469 <children xmi:type="notation:Node" xmi:id="_OBrh0F0wEemRYLyXht2IrQ" type="3010" element="_OBacEF0wEemRYLyXht2IrQ">
1470 <styles xmi:type="notation:FontStyle" xmi:id="_OBrh0V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1471 <layoutConstraint xmi:type="notation:Location" xmi:id="_OBrh0l0wEemRYLyXht2IrQ"/>
1472 </children>
1473 <children xmi:type="notation:Node" xmi:id="_Oca9EF0wEemRYLyXht2IrQ" type="3010" element="_OcLsgF0wEemRYLyXht2IrQ">
1474 <styles xmi:type="notation:FontStyle" xmi:id="_Oca9EV0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1475 <layoutConstraint xmi:type="notation:Location" xmi:id="_Oca9El0wEemRYLyXht2IrQ"/>
1476 </children>
1477 <children xmi:type="notation:Node" xmi:id="_O9880F0wEemRYLyXht2IrQ" type="3010" element="_O9wIgF0wEemRYLyXht2IrQ">
1478 <styles xmi:type="notation:FontStyle" xmi:id="_O9880V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1479 <layoutConstraint xmi:type="notation:Location" xmi:id="_O9880l0wEemRYLyXht2IrQ"/>
1480 </children>
1481 <styles xmi:type="notation:SortingStyle" xmi:id="_M5YdAl0wEemRYLyXht2IrQ"/>
1482 <styles xmi:type="notation:FilteringStyle" xmi:id="_M5YdA10wEemRYLyXht2IrQ"/>
1483 </children>
1484 <styles xmi:type="notation:ShapeStyle" xmi:id="_M5X18V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1485 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M5X18l0wEemRYLyXht2IrQ" x="988" y="182" width="120" height="100"/>
1486 </children>
1487 <children xmi:type="notation:Node" xmi:id="_0aeMMF0xEemRYLyXht2IrQ" type="2003" element="_0aW3cF0xEemRYLyXht2IrQ">
1488 <children xmi:type="notation:Node" xmi:id="_0aeMM10xEemRYLyXht2IrQ" type="5007"/>
1489 <children xmi:type="notation:Node" xmi:id="_0aezQF0xEemRYLyXht2IrQ" type="7004">
1490 <styles xmi:type="notation:SortingStyle" xmi:id="_0aezQV0xEemRYLyXht2IrQ"/>
1491 <styles xmi:type="notation:FilteringStyle" xmi:id="_0aezQl0xEemRYLyXht2IrQ"/>
1492 </children>
1493 <styles xmi:type="notation:ShapeStyle" xmi:id="_0aeMMV0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1494 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0aeMMl0xEemRYLyXht2IrQ" x="52" y="325" width="120" height="100"/>
1495 </children>
1496 <children xmi:type="notation:Node" xmi:id="_45PdkF0xEemRYLyXht2IrQ" type="2003" element="_45FskF0xEemRYLyXht2IrQ">
1497 <children xmi:type="notation:Node" xmi:id="_45QEoF0xEemRYLyXht2IrQ" type="5007"/>
1498 <children xmi:type="notation:Node" xmi:id="_45QEoV0xEemRYLyXht2IrQ" type="7004">
1499 <styles xmi:type="notation:SortingStyle" xmi:id="_45QEol0xEemRYLyXht2IrQ"/>
1500 <styles xmi:type="notation:FilteringStyle" xmi:id="_45QEo10xEemRYLyXht2IrQ"/>
1501 </children>
1502 <styles xmi:type="notation:ShapeStyle" xmi:id="_45PdkV0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1503 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_45Pdkl0xEemRYLyXht2IrQ" x="39" y="481" width="146" height="100"/>
1504 </children>
1505 <children xmi:type="notation:Node" xmi:id="_2omYkG60Eem3gIPdAp40Tw" type="2003" element="_2oBw0G60Eem3gIPdAp40Tw">
1506 <children xmi:type="notation:Node" xmi:id="_2orREG60Eem3gIPdAp40Tw" type="5007"/>
1507 <children xmi:type="notation:Node" xmi:id="_2or4IG60Eem3gIPdAp40Tw" type="7004">
1508 <children xmi:type="notation:Node" xmi:id="_5QV24G60Eem3gIPdAp40Tw" type="3010" element="_5P_4oG60Eem3gIPdAp40Tw">
1509 <styles xmi:type="notation:FontStyle" xmi:id="_5QV24W60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1510 <layoutConstraint xmi:type="notation:Location" xmi:id="_5QV24m60Eem3gIPdAp40Tw"/>
1511 </children>
1512 <children xmi:type="notation:Node" xmi:id="_UKi6wHA6Eem9acJE7_CmTw" type="3010" element="_UKKgQHA6Eem9acJE7_CmTw">
1513 <styles xmi:type="notation:FontStyle" xmi:id="_UKi6wXA6Eem9acJE7_CmTw" fontName="Noto Sans" fontHeight="8"/>
1514 <layoutConstraint xmi:type="notation:Location" xmi:id="_UKi6wnA6Eem9acJE7_CmTw"/>
1515 </children>
1516 <children xmi:type="notation:Node" xmi:id="_7SZ1QG60Eem3gIPdAp40Tw" type="3010" element="_7R9JUG60Eem3gIPdAp40Tw">
1517 <styles xmi:type="notation:FontStyle" xmi:id="_7SZ1QW60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1518 <layoutConstraint xmi:type="notation:Location" xmi:id="_7SZ1Qm60Eem3gIPdAp40Tw"/>
1519 </children>
1520 <styles xmi:type="notation:SortingStyle" xmi:id="_2or4IW60Eem3gIPdAp40Tw"/>
1521 <styles xmi:type="notation:FilteringStyle" xmi:id="_2or4Im60Eem3gIPdAp40Tw"/>
1522 </children>
1523 <styles xmi:type="notation:ShapeStyle" xmi:id="_2omYkW60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1524 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2omYkm60Eem3gIPdAp40Tw" x="990" y="325" width="120" height="100"/>
1525 </children>
1526 <children xmi:type="notation:Node" xmi:id="_fnQ1sHA6Eem9acJE7_CmTw" type="2003" element="_fm1X4HA6Eem9acJE7_CmTw">
1527 <children xmi:type="notation:Node" xmi:id="_fnT5AHA6Eem9acJE7_CmTw" type="5007"/>
1528 <children xmi:type="notation:Node" xmi:id="_fnUgEHA6Eem9acJE7_CmTw" type="7004">
1529 <styles xmi:type="notation:SortingStyle" xmi:id="_fnUgEXA6Eem9acJE7_CmTw"/>
1530 <styles xmi:type="notation:FilteringStyle" xmi:id="_fnUgEnA6Eem9acJE7_CmTw"/>
1531 </children>
1532 <styles xmi:type="notation:ShapeStyle" xmi:id="_fnQ1sXA6Eem9acJE7_CmTw" fontName="Noto Sans" fontHeight="8"/>
1533 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fnQ1snA6Eem9acJE7_CmTw" x="209" y="484" width="120" height="100"/>
1534 </children>
1535 <children xmi:type="notation:Node" xmi:id="_haz28HA6Eem9acJE7_CmTw" type="2003" element="_hanCoHA6Eem9acJE7_CmTw">
1536 <children xmi:type="notation:Node" xmi:id="_ha0eAHA6Eem9acJE7_CmTw" type="5007"/>
1537 <children xmi:type="notation:Node" xmi:id="_ha0eAXA6Eem9acJE7_CmTw" type="7004">
1538 <styles xmi:type="notation:SortingStyle" xmi:id="_ha0eAnA6Eem9acJE7_CmTw"/>
1539 <styles xmi:type="notation:FilteringStyle" xmi:id="_ha0eA3A6Eem9acJE7_CmTw"/>
1540 </children>
1541 <styles xmi:type="notation:ShapeStyle" xmi:id="_haz28XA6Eem9acJE7_CmTw" fontName="Noto Sans" fontHeight="8"/>
1542 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_haz28nA6Eem9acJE7_CmTw" x="352" y="484" width="120" height="100"/>
1543 </children>
1544 <children xmi:type="notation:Node" xmi:id="_irD94HA6Eem9acJE7_CmTw" type="2003" element="_iqnR8HA6Eem9acJE7_CmTw">
1545 <children xmi:type="notation:Node" xmi:id="_irEk8HA6Eem9acJE7_CmTw" type="5007"/>
1546 <children xmi:type="notation:Node" xmi:id="_irEk8XA6Eem9acJE7_CmTw" type="7004">
1547 <styles xmi:type="notation:SortingStyle" xmi:id="_irEk8nA6Eem9acJE7_CmTw"/>
1548 <styles xmi:type="notation:FilteringStyle" xmi:id="_irEk83A6Eem9acJE7_CmTw"/>
1549 </children>
1550 <styles xmi:type="notation:ShapeStyle" xmi:id="_irD94XA6Eem9acJE7_CmTw" fontName="Noto Sans" fontHeight="8"/>
1551 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_irD94nA6Eem9acJE7_CmTw" x="495" y="484" width="120" height="100"/>
1552 </children>
1553 <styles xmi:type="notation:DiagramStyle" xmi:id="_rfAxQl0qEemRYLyXht2IrQ"/>
1554 <edges xmi:type="notation:Edge" xmi:id="_0jV4gF0qEemRYLyXht2IrQ" type="4001" element="_0jIdIF0qEemRYLyXht2IrQ" source="_vlcbIF0qEemRYLyXht2IrQ" target="_tNH44F0qEemRYLyXht2IrQ">
1555 <children xmi:type="notation:Node" xmi:id="_0jXGoF0qEemRYLyXht2IrQ" type="6001">
1556 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jXGoV0qEemRYLyXht2IrQ" y="-10"/>
1557 </children>
1558 <children xmi:type="notation:Node" xmi:id="_0jXtsF0qEemRYLyXht2IrQ" type="6002">
1559 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jXtsV0qEemRYLyXht2IrQ" y="10"/>
1560 </children>
1561 <children xmi:type="notation:Node" xmi:id="_0jYUwF0qEemRYLyXht2IrQ" type="6003">
1562 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jYUwV0qEemRYLyXht2IrQ" y="10"/>
1563 </children>
1564 <styles xmi:type="notation:ConnectorStyle" xmi:id="_0jV4gV0qEemRYLyXht2IrQ" routing="Tree"/>
1565 <styles xmi:type="notation:FontStyle" xmi:id="_0jV4gl0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1566 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0jV4g10qEemRYLyXht2IrQ" points="[0, 0, 0, 45]$[0, -45, 0, 0]"/>
1567 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0jaxAF0qEemRYLyXht2IrQ" id="(0.410958904109589,0.01)"/>
1568 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0jaxAV0qEemRYLyXht2IrQ" id="(0.4548611111111111,0.5)"/>
1569 </edges>
1570 <edges xmi:type="notation:Edge" xmi:id="_Npck0F0sEemRYLyXht2IrQ" type="4001" element="_NpQ-pl0sEemRYLyXht2IrQ" source="__OldwF0rEemRYLyXht2IrQ" target="_3UIIoF0rEemRYLyXht2IrQ">
1571 <children xmi:type="notation:Node" xmi:id="_NpdL4F0sEemRYLyXht2IrQ" type="6001">
1572 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL4V0sEemRYLyXht2IrQ" y="-10"/>
1573 </children>
1574 <children xmi:type="notation:Node" xmi:id="_NpdL4l0sEemRYLyXht2IrQ" type="6002">
1575 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL410sEemRYLyXht2IrQ" y="10"/>
1576 </children>
1577 <children xmi:type="notation:Node" xmi:id="_NpdL5F0sEemRYLyXht2IrQ" type="6003">
1578 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL5V0sEemRYLyXht2IrQ" y="10"/>
1579 </children>
1580 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Npck0V0sEemRYLyXht2IrQ" routing="Tree"/>
1581 <styles xmi:type="notation:FontStyle" xmi:id="_Npck0l0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1582 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Npck010sEemRYLyXht2IrQ" points="[0, 0, -103, 45]$[103, -45, 0, 0]"/>
1583 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpdL5l0sEemRYLyXht2IrQ" id="(0.5031847133757962,0.0)"/>
1584 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpdL510sEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1585 </edges>
1586 <edges xmi:type="notation:Edge" xmi:id="_PE8ScF0sEemRYLyXht2IrQ" type="4001" element="_PEp-k10sEemRYLyXht2IrQ" source="_Aq3OgF0sEemRYLyXht2IrQ" target="_3UIIoF0rEemRYLyXht2IrQ">
1587 <children xmi:type="notation:Node" xmi:id="_PE8SdF0sEemRYLyXht2IrQ" type="6001">
1588 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE8SdV0sEemRYLyXht2IrQ" y="-10"/>
1589 </children>
1590 <children xmi:type="notation:Node" xmi:id="_PE8Sdl0sEemRYLyXht2IrQ" type="6002">
1591 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE8Sd10sEemRYLyXht2IrQ" y="10"/>
1592 </children>
1593 <children xmi:type="notation:Node" xmi:id="_PE85gF0sEemRYLyXht2IrQ" type="6003">
1594 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE85gV0sEemRYLyXht2IrQ" y="10"/>
1595 </children>
1596 <styles xmi:type="notation:ConnectorStyle" xmi:id="_PE8ScV0sEemRYLyXht2IrQ" routing="Tree"/>
1597 <styles xmi:type="notation:FontStyle" xmi:id="_PE8Scl0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1598 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PE8Sc10sEemRYLyXht2IrQ" points="[0, 0, 97, 45]$[-97, -45, 0, 0]"/>
1599 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PE85gl0sEemRYLyXht2IrQ" id="(0.5508474576271186,0.0)"/>
1600 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PE85g10sEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1601 </edges>
1602 <edges xmi:type="notation:Edge" xmi:id="_4CEP4F0vEemRYLyXht2IrQ" type="4001" element="_4B9iMF0vEemRYLyXht2IrQ" source="_3UIIoF0rEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1603 <children xmi:type="notation:Node" xmi:id="_4CEP5F0vEemRYLyXht2IrQ" type="6001">
1604 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CEP5V0vEemRYLyXht2IrQ" x="13" y="-18"/>
1605 </children>
1606 <children xmi:type="notation:Node" xmi:id="_4CE28F0vEemRYLyXht2IrQ" type="6002">
1607 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CE28V0vEemRYLyXht2IrQ" x="54" y="10"/>
1608 </children>
1609 <children xmi:type="notation:Node" xmi:id="_4CE28l0vEemRYLyXht2IrQ" type="6003">
1610 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CE2810vEemRYLyXht2IrQ" x="28" y="10"/>
1611 </children>
1612 <styles xmi:type="notation:ConnectorStyle" xmi:id="_4CEP4V0vEemRYLyXht2IrQ" routing="Rectilinear"/>
1613 <styles xmi:type="notation:FontStyle" xmi:id="_4CEP4l0vEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1614 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4CEP410vEemRYLyXht2IrQ" points="[0, -26, -194, -52]$[194, -26, 0, -52]"/>
1615 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CE29F0vEemRYLyXht2IrQ" id="(1.0,0.5306122448979592)"/>
1616 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CE29V0vEemRYLyXht2IrQ" id="(0.0,0.7959183673469388)"/>
1617 </edges>
1618 <edges xmi:type="notation:Edge" xmi:id="_ccT_YF0wEemRYLyXht2IrQ" type="4001" element="_ccF89l0wEemRYLyXht2IrQ" source="_3UIIoF0rEemRYLyXht2IrQ" target="_Ct-Y8F0wEemRYLyXht2IrQ">
1619 <children xmi:type="notation:Node" xmi:id="_ccT_ZF0wEemRYLyXht2IrQ" type="6001">
1620 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccT_ZV0wEemRYLyXht2IrQ" x="-32" y="39"/>
1621 </children>
1622 <children xmi:type="notation:Node" xmi:id="_ccUmcF0wEemRYLyXht2IrQ" type="6002">
1623 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUmcV0wEemRYLyXht2IrQ" x="48" y="10"/>
1624 </children>
1625 <children xmi:type="notation:Node" xmi:id="_ccUmcl0wEemRYLyXht2IrQ" type="6003">
1626 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUmc10wEemRYLyXht2IrQ" x="22" y="-8"/>
1627 </children>
1628 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccT_YV0wEemRYLyXht2IrQ" routing="Rectilinear"/>
1629 <styles xmi:type="notation:FontStyle" xmi:id="_ccT_Yl0wEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1630 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccT_Y10wEemRYLyXht2IrQ" points="[27, -33, -194, -143]$[182, -33, -39, -143]$[182, 110, -39, 0]$[221, 110, 0, 0]"/>
1631 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUmdF0wEemRYLyXht2IrQ" id="(0.8411764705882353,1.0)"/>
1632 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUmdV0wEemRYLyXht2IrQ" id="(0.0,0.6632653061224489)"/>
1633 </edges>
1634 <edges xmi:type="notation:Edge" xmi:id="_db1tQF0xEemRYLyXht2IrQ" type="4001" element="_dbuYhl0xEemRYLyXht2IrQ" source="_Ct-Y8F0wEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1635 <children xmi:type="notation:Node" xmi:id="_db2UUF0xEemRYLyXht2IrQ" type="6001">
1636 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UUV0xEemRYLyXht2IrQ" x="-5" y="-44"/>
1637 </children>
1638 <children xmi:type="notation:Node" xmi:id="_db2UUl0xEemRYLyXht2IrQ" type="6002">
1639 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UU10xEemRYLyXht2IrQ" y="10"/>
1640 </children>
1641 <children xmi:type="notation:Node" xmi:id="_db2UVF0xEemRYLyXht2IrQ" type="6003">
1642 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UVV0xEemRYLyXht2IrQ" y="10"/>
1643 </children>
1644 <styles xmi:type="notation:ConnectorStyle" xmi:id="_db1tQV0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1645 <styles xmi:type="notation:FontStyle" xmi:id="_db1tQl0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1646 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_db1tQ10xEemRYLyXht2IrQ" points="[14, 0, 14, 45]$[14, -45, 14, 0]"/>
1647 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_db2UVl0xEemRYLyXht2IrQ" id="(0.19387755102040816,0.0)"/>
1648 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_db2UV10xEemRYLyXht2IrQ" id="(0.19387755102040816,1.0)"/>
1649 </edges>
1650 <edges xmi:type="notation:Edge" xmi:id="_i2ZRcF0xEemRYLyXht2IrQ" type="4001" element="_i2PgeV0xEemRYLyXht2IrQ" source="_Ct-Y8F0wEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1651 <children xmi:type="notation:Node" xmi:id="_i2ZRdF0xEemRYLyXht2IrQ" type="6001">
1652 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZRdV0xEemRYLyXht2IrQ" x="-5" y="46"/>
1653 </children>
1654 <children xmi:type="notation:Node" xmi:id="_i2ZRdl0xEemRYLyXht2IrQ" type="6002">
1655 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZRd10xEemRYLyXht2IrQ" y="10"/>
1656 </children>
1657 <children xmi:type="notation:Node" xmi:id="_i2ZReF0xEemRYLyXht2IrQ" type="6003">
1658 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZReV0xEemRYLyXht2IrQ" y="10"/>
1659 </children>
1660 <styles xmi:type="notation:ConnectorStyle" xmi:id="_i2ZRcV0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1661 <styles xmi:type="notation:FontStyle" xmi:id="_i2ZRcl0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1662 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_i2ZRc10xEemRYLyXht2IrQ" points="[0, 0, 0, 45]$[0, -45, 0, 0]"/>
1663 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_i2ZRel0xEemRYLyXht2IrQ" id="(0.7193877551020408,0.0)"/>
1664 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_i2ZRe10xEemRYLyXht2IrQ" id="(0.7193877551020408,1.0)"/>
1665 </edges>
1666 <edges xmi:type="notation:Edge" xmi:id="_3HAq8F0xEemRYLyXht2IrQ" type="4001" element="_3GzPll0xEemRYLyXht2IrQ" source="_Aq3OgF0sEemRYLyXht2IrQ" target="_0aeMMF0xEemRYLyXht2IrQ">
1667 <children xmi:type="notation:Node" xmi:id="_3HBSAF0xEemRYLyXht2IrQ" type="6001">
1668 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HBSAV0xEemRYLyXht2IrQ" y="-10"/>
1669 </children>
1670 <children xmi:type="notation:Node" xmi:id="_3HBSAl0xEemRYLyXht2IrQ" type="6002">
1671 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HBSA10xEemRYLyXht2IrQ" y="10"/>
1672 </children>
1673 <children xmi:type="notation:Node" xmi:id="_3HB5EF0xEemRYLyXht2IrQ" type="6003">
1674 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HB5EV0xEemRYLyXht2IrQ" y="10"/>
1675 </children>
1676 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3HAq8V0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1677 <styles xmi:type="notation:FontStyle" xmi:id="_3HAq8l0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1678 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3HAq810xEemRYLyXht2IrQ" points="[0, 0, 168, 0]$[-168, 0, 0, 0]"/>
1679 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3HB5El0xEemRYLyXht2IrQ" id="(0.0,0.5)"/>
1680 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3HB5E10xEemRYLyXht2IrQ" id="(1.0,0.5)"/>
1681 </edges>
1682 <edges xmi:type="notation:Edge" xmi:id="_8iOWcF0xEemRYLyXht2IrQ" type="4001" element="_8iFzll0xEemRYLyXht2IrQ" source="_45PdkF0xEemRYLyXht2IrQ" target="_0aeMMF0xEemRYLyXht2IrQ">
1683 <children xmi:type="notation:Node" xmi:id="_8iOWdF0xEemRYLyXht2IrQ" type="6001">
1684 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iOWdV0xEemRYLyXht2IrQ" y="-10"/>
1685 </children>
1686 <children xmi:type="notation:Node" xmi:id="_8iO9gF0xEemRYLyXht2IrQ" type="6002">
1687 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iO9gV0xEemRYLyXht2IrQ" y="10"/>
1688 </children>
1689 <children xmi:type="notation:Node" xmi:id="_8iO9gl0xEemRYLyXht2IrQ" type="6003">
1690 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iO9g10xEemRYLyXht2IrQ" y="10"/>
1691 </children>
1692 <styles xmi:type="notation:ConnectorStyle" xmi:id="_8iOWcV0xEemRYLyXht2IrQ" routing="Tree"/>
1693 <styles xmi:type="notation:FontStyle" xmi:id="_8iOWcl0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1694 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8iOWc10xEemRYLyXht2IrQ" points="[0, 0, 0, 58]$[0, -58, 0, 0]"/>
1695 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8iO9hF0xEemRYLyXht2IrQ" id="(0.4246575342465753,0.01)"/>
1696 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8iO9hV0xEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1697 </edges>
1698 <edges xmi:type="notation:Edge" xmi:id="_Kzrp4F0yEemRYLyXht2IrQ" type="4001" element="_KzljXl0yEemRYLyXht2IrQ" source="_tNH44F0qEemRYLyXht2IrQ" target="__OldwF0rEemRYLyXht2IrQ">
1699 <children xmi:type="notation:Node" xmi:id="_Kzrp5F0yEemRYLyXht2IrQ" type="6001">
1700 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp5V0yEemRYLyXht2IrQ" x="-11" y="-10"/>
1701 </children>
1702 <children xmi:type="notation:Node" xmi:id="_Kzrp5l0yEemRYLyXht2IrQ" type="6002">
1703 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp510yEemRYLyXht2IrQ" x="-3" y="10"/>
1704 </children>
1705 <children xmi:type="notation:Node" xmi:id="_Kzrp6F0yEemRYLyXht2IrQ" type="6003">
1706 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp6V0yEemRYLyXht2IrQ" x="3" y="10"/>
1707 </children>
1708 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Kzrp4V0yEemRYLyXht2IrQ" routing="Rectilinear"/>
1709 <styles xmi:type="notation:FontStyle" xmi:id="_Kzrp4l0yEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1710 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kzrp410yEemRYLyXht2IrQ" points="[0, -57, -419, -265]$[418, -57, -1, -265]$[418, 208, -1, 0]"/>
1711 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kzrp6l0yEemRYLyXht2IrQ" id="(1.0,0.7959183673469388)"/>
1712 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kzrp610yEemRYLyXht2IrQ" id="(0.610062893081761,0.0)"/>
1713 </edges>
1714 <edges xmi:type="notation:Edge" xmi:id="_PdUugF0yEemRYLyXht2IrQ" type="4001" element="_PdH6PF0yEemRYLyXht2IrQ" source="_tNH44F0qEemRYLyXht2IrQ" target="_Aq3OgF0sEemRYLyXht2IrQ">
1715 <children xmi:type="notation:Node" xmi:id="_PdUuhF0yEemRYLyXht2IrQ" type="6001">
1716 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdUuhV0yEemRYLyXht2IrQ" x="-30" y="104"/>
1717 </children>
1718 <children xmi:type="notation:Node" xmi:id="_PdUuhl0yEemRYLyXht2IrQ" type="6002">
1719 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdUuh10yEemRYLyXht2IrQ" y="10"/>
1720 </children>
1721 <children xmi:type="notation:Node" xmi:id="_PdVVkF0yEemRYLyXht2IrQ" type="6003">
1722 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdVVkV0yEemRYLyXht2IrQ" x="-4" y="10"/>
1723 </children>
1724 <styles xmi:type="notation:ConnectorStyle" xmi:id="_PdUugV0yEemRYLyXht2IrQ" routing="Rectilinear"/>
1725 <styles xmi:type="notation:FontStyle" xmi:id="_PdUugl0yEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1726 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PdUug10yEemRYLyXht2IrQ" points="[40, -32, -194, -220]$[221, -32, -13, -220]$[221, 188, -13, 0]"/>
1727 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PdVVkl0yEemRYLyXht2IrQ" id="(0.7222222222222222,1.0)"/>
1728 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PdVVk10yEemRYLyXht2IrQ" id="(0.3305084745762712,0.0)"/>
1729 </edges>
1730 <edges xmi:type="notation:Edge" xmi:id="_n98MwHA6Eem9acJE7_CmTw" type="4001" element="_n9tjRnA6Eem9acJE7_CmTw" source="_irD94HA6Eem9acJE7_CmTw" target="_Aq3OgF0sEemRYLyXht2IrQ">
1731 <children xmi:type="notation:Node" xmi:id="_n98z0HA6Eem9acJE7_CmTw" type="6001">
1732 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n98z0XA6Eem9acJE7_CmTw" y="-10"/>
1733 </children>
1734 <children xmi:type="notation:Node" xmi:id="_n98z0nA6Eem9acJE7_CmTw" type="6002">
1735 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n98z03A6Eem9acJE7_CmTw" y="10"/>
1736 </children>
1737 <children xmi:type="notation:Node" xmi:id="_n98z1HA6Eem9acJE7_CmTw" type="6003">
1738 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n98z1XA6Eem9acJE7_CmTw" y="10"/>
1739 </children>
1740 <styles xmi:type="notation:ConnectorStyle" xmi:id="_n98MwXA6Eem9acJE7_CmTw" routing="Tree"/>
1741 <styles xmi:type="notation:FontStyle" xmi:id="_n98MwnA6Eem9acJE7_CmTw" fontName="Noto Sans" fontHeight="8"/>
1742 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n98Mw3A6Eem9acJE7_CmTw" points="[0, 0, 94, 151]$[-94, -151, 0, 0]"/>
1743 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n98z1nA6Eem9acJE7_CmTw" id="(0.2796610169491525,0.0)"/>
1744 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n98z13A6Eem9acJE7_CmTw" id="(0.3305084745762712,0.0)"/>
1745 </edges>
1746 <edges xmi:type="notation:Edge" xmi:id="_3d2LIHBMEempc7JjePmuNw" type="4001" element="_3dgz_3BMEempc7JjePmuNw" source="_haz28HA6Eem9acJE7_CmTw" target="_Aq3OgF0sEemRYLyXht2IrQ">
1747 <children xmi:type="notation:Node" xmi:id="_3d_VEHBMEempc7JjePmuNw" type="6001">
1748 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3d_VEXBMEempc7JjePmuNw" y="-10"/>
1749 </children>
1750 <children xmi:type="notation:Node" xmi:id="_3eAjMHBMEempc7JjePmuNw" type="6002">
1751 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3eAjMXBMEempc7JjePmuNw" y="10"/>
1752 </children>
1753 <children xmi:type="notation:Node" xmi:id="_3eBKQHBMEempc7JjePmuNw" type="6003">
1754 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3eBKQXBMEempc7JjePmuNw" y="10"/>
1755 </children>
1756 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3d2LIXBMEempc7JjePmuNw" routing="Tree"/>
1757 <styles xmi:type="notation:FontStyle" xmi:id="_3d2LInBMEempc7JjePmuNw" fontName="Noto Sans" fontHeight="8"/>
1758 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3d2LI3BMEempc7JjePmuNw" points="[0, 0, -14, 61]$[14, -61, 0, 0]"/>
1759 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eENkHBMEempc7JjePmuNw" id="(0.6583333333333333,0.0)"/>
1760 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eENkXBMEempc7JjePmuNw" id="(0.3305084745762712,0.0)"/>
1761 </edges>
1762 <edges xmi:type="notation:Edge" xmi:id="_37fJYHBMEempc7JjePmuNw" type="4001" element="_37Qf-HBMEempc7JjePmuNw" source="_fnQ1sHA6Eem9acJE7_CmTw" target="_Aq3OgF0sEemRYLyXht2IrQ">
1763 <children xmi:type="notation:Node" xmi:id="_37fwcHBMEempc7JjePmuNw" type="6001">
1764 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37fwcXBMEempc7JjePmuNw" y="-10"/>
1765 </children>
1766 <children xmi:type="notation:Node" xmi:id="_37fwcnBMEempc7JjePmuNw" type="6002">
1767 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37fwc3BMEempc7JjePmuNw" y="10"/>
1768 </children>
1769 <children xmi:type="notation:Node" xmi:id="_37fwdHBMEempc7JjePmuNw" type="6003">
1770 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37fwdXBMEempc7JjePmuNw" y="10"/>
1771 </children>
1772 <styles xmi:type="notation:ConnectorStyle" xmi:id="_37fJYXBMEempc7JjePmuNw" routing="Tree"/>
1773 <styles xmi:type="notation:FontStyle" xmi:id="_37fJYnBMEempc7JjePmuNw" fontName="Noto Sans" fontHeight="8"/>
1774 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_37fJY3BMEempc7JjePmuNw" points="[0, 0, -63, 154]$[63, -154, 0, 0]"/>
1775 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_37gXgHBMEempc7JjePmuNw" id="(0.559322033898305,0.0)"/>
1776 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_37gXgXBMEempc7JjePmuNw" id="(0.3305084745762712,0.0)"/>
1777 </edges>
1778 </data>
1779 </ownedAnnotationEntries>
1780 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tM4oUF0qEemRYLyXht2IrQ" name="ConstellationMission" tooltipText="" outgoingEdges="_KzljXl0yEemRYLyXht2IrQ _PdH6PF0yEemRYLyXht2IrQ" incomingEdges="_0jIdIF0qEemRYLyXht2IrQ" width="12" height="10">
1781 <target xmi:type="ecore:EClass" href="satellite.ecore#//ConstellationMission"/>
1782 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//ConstellationMission"/>
1783 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1784 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1785 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1786 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_4b3pQV0qEemRYLyXht2IrQ" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
1787 <labelFormat>italic</labelFormat>
1788 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
1789 </ownedStyle>
1790 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1791 </ownedDiagramElements>
1792 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vlPm0F0qEemRYLyXht2IrQ" name="InterferometryMission" tooltipText="" outgoingEdges="_0jIdIF0qEemRYLyXht2IrQ" width="12" height="10">
1793 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1794 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1795 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1796 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1797 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1798 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_0ECtY10qEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1799 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
1800 </ownedStyle>
1801 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1802 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zChmAF0qEemRYLyXht2IrQ" name="observationTime : EFloat = 2.0" tooltipText="">
1803 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//InterferometryMission/observationTime"/>
1804 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//InterferometryMission/observationTime"/>
1805 <ownedStyle xmi:type="diagram:BundledImage" uid="_1awPYV0vEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1806 <labelFormat>bold</labelFormat>
1807 </ownedStyle>
1808 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1809 </ownedElements>
1810 </ownedDiagramElements>
1811 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_0jIdIF0qEemRYLyXht2IrQ" sourceNode="_vlPm0F0qEemRYLyXht2IrQ" targetNode="_tM4oUF0qEemRYLyXht2IrQ">
1812 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1813 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1814 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_0jK5YF0qEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
1815 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
1816 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_0jK5YV0qEemRYLyXht2IrQ" showIcon="false">
1817 <labelFormat>italic</labelFormat>
1818 </beginLabelStyle>
1819 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_0jK5Yl0qEemRYLyXht2IrQ" showIcon="false"/>
1820 </ownedStyle>
1821 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
1822 </ownedDiagramElements>
1823 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_3T7UUF0rEemRYLyXht2IrQ" name="CommunicatingElement" tooltipText="" outgoingEdges="_4B9iMF0vEemRYLyXht2IrQ _ccF89l0wEemRYLyXht2IrQ" incomingEdges="_NpQ-pl0sEemRYLyXht2IrQ _PEp-k10sEemRYLyXht2IrQ" width="12" height="10">
1824 <target xmi:type="ecore:EClass" href="satellite.ecore#//CommunicatingElement"/>
1825 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CommunicatingElement"/>
1826 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1827 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1828 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1829 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9uaEcV0rEemRYLyXht2IrQ" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
1830 <labelFormat>italic</labelFormat>
1831 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
1832 </ownedStyle>
1833 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1834 </ownedDiagramElements>
1835 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="__OYCYF0rEemRYLyXht2IrQ" name="GroundStationNetwork" tooltipText="" outgoingEdges="_NpQ-pl0sEemRYLyXht2IrQ" incomingEdges="_KzljXl0yEemRYLyXht2IrQ" width="12" height="10">
1836 <target xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1837 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1838 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1839 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1840 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1841 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="__B6W510vEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1842 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
1843 </ownedStyle>
1844 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1845 </ownedDiagramElements>
1846 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_AqsPYF0sEemRYLyXht2IrQ" name="Spacecraft" tooltipText="" outgoingEdges="_PEp-k10sEemRYLyXht2IrQ _3GzPll0xEemRYLyXht2IrQ" incomingEdges="_PdH6PF0yEemRYLyXht2IrQ _n9tjRnA6Eem9acJE7_CmTw _3dgz_3BMEempc7JjePmuNw _37Qf-HBMEempc7JjePmuNw" width="12" height="10">
1847 <target xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1848 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1849 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1850 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1851 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1852 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_l4otI3A6Eem9acJE7_CmTw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
1853 <labelFormat>italic</labelFormat>
1854 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
1855 </ownedStyle>
1856 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1857 <ownedElements xmi:type="diagram:DNodeListElement" uid="_-9TZsG60Eem3gIPdAp40Tw" name="/kind : SpacecraftKind = CubeSat3U" tooltipText="">
1858 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//Spacecraft/kind"/>
1859 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//Spacecraft/kind"/>
1860 <ownedStyle xmi:type="diagram:BundledImage" uid="_o3yl4nA6Eem9acJE7_CmTw" labelColor="39,76,114" labelAlignment="LEFT" description="_o3yl4HA6Eem9acJE7_CmTw">
1861 <labelFormat>bold</labelFormat>
1862 </ownedStyle>
1863 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1864 </ownedElements>
1865 </ownedDiagramElements>
1866 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_NpQ-pl0sEemRYLyXht2IrQ" sourceNode="__OYCYF0rEemRYLyXht2IrQ" targetNode="_3T7UUF0rEemRYLyXht2IrQ">
1867 <target xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1868 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1869 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_NpRlsF0sEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
1870 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
1871 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NpRlsV0sEemRYLyXht2IrQ" showIcon="false">
1872 <labelFormat>italic</labelFormat>
1873 </beginLabelStyle>
1874 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_NpRlsl0sEemRYLyXht2IrQ" showIcon="false"/>
1875 </ownedStyle>
1876 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
1877 </ownedDiagramElements>
1878 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PEp-k10sEemRYLyXht2IrQ" sourceNode="_AqsPYF0sEemRYLyXht2IrQ" targetNode="_3T7UUF0rEemRYLyXht2IrQ">
1879 <target xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1880 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1881 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Ap43UG61Eem3gIPdAp40Tw" targetArrow="InputClosedArrow" routingStyle="tree">
1882 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
1883 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Ap43UW61Eem3gIPdAp40Tw" showIcon="false">
1884 <labelFormat>italic</labelFormat>
1885 </beginLabelStyle>
1886 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Ap43Um61Eem3gIPdAp40Tw" showIcon="false"/>
1887 </ownedStyle>
1888 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
1889 </ownedDiagramElements>
1890 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_j0eAEF0tEemRYLyXht2IrQ" name="CommSubsystem" tooltipText="" incomingEdges="_4B9iMF0vEemRYLyXht2IrQ _dbuYhl0xEemRYLyXht2IrQ _i2PgeV0xEemRYLyXht2IrQ" width="12" height="10">
1891 <target xmi:type="ecore:EClass" href="satellite.ecore#//CommSubsystem"/>
1892 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CommSubsystem"/>
1893 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1894 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1895 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1896 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UMdpIV0wEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1897 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
1898 </ownedStyle>
1899 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1900 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zuaCUF0vEemRYLyXht2IrQ" name="band : TransceiverBand = UHF" tooltipText="">
1901 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/band"/>
1902 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/band"/>
1903 <ownedStyle xmi:type="diagram:BundledImage" uid="_028-wl0vEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1904 <labelFormat>bold</labelFormat>
1905 </ownedStyle>
1906 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1907 </ownedElements>
1908 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Q8yBAF0wEemRYLyXht2IrQ" name="gain : AntennaGain = LOW" tooltipText="">
1909 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/gain"/>
1910 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/gain"/>
1911 <ownedStyle xmi:type="diagram:BundledImage" uid="_UgHk4l0wEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1912 <labelFormat>bold</labelFormat>
1913 </ownedStyle>
1914 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1915 </ownedElements>
1916 </ownedDiagramElements>
1917 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vyhbkF0vEemRYLyXht2IrQ" name="TransceiverBand" tooltipText="" width="12" height="10">
1918 <target xmi:type="ecore:EEnum" href="satellite.ecore#//TransceiverBand"/>
1919 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//TransceiverBand"/>
1920 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1921 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1922 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1923 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_vyj30F0vEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
1924 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
1925 </ownedStyle>
1926 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
1927 <ownedElements xmi:type="diagram:DNodeListElement" uid="_x3rKMF0vEemRYLyXht2IrQ" name="UHF" tooltipText="">
1928 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/UHF"/>
1929 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/UHF"/>
1930 <ownedStyle xmi:type="diagram:BundledImage" uid="_x3rKMV0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1931 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
1932 </ownedStyle>
1933 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
1934 </ownedElements>
1935 <ownedElements xmi:type="diagram:DNodeListElement" uid="_yg2DAF0vEemRYLyXht2IrQ" name="X" tooltipText="">
1936 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/X"/>
1937 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/X"/>
1938 <ownedStyle xmi:type="diagram:BundledImage" uid="_yg2qEF0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1939 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
1940 </ownedStyle>
1941 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
1942 </ownedElements>
1943 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zAInEF0vEemRYLyXht2IrQ" name="Ka" tooltipText="">
1944 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/Ka"/>
1945 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/Ka"/>
1946 <ownedStyle xmi:type="diagram:BundledImage" uid="_zAInEV0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1947 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
1948 </ownedStyle>
1949 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
1950 </ownedElements>
1951 </ownedDiagramElements>
1952 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_4B9iMF0vEemRYLyXht2IrQ" name="[1..2] commSubsystem" sourceNode="_3T7UUF0rEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
1953 <target xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/commSubsystem"/>
1954 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/commSubsystem"/>
1955 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_6kODk10vEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1956 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_6kODlV0vEemRYLyXht2IrQ" showIcon="false">
1957 <labelFormat>bold</labelFormat>
1958 </centerLabelStyle>
1959 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_6kODlF0vEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1960 </ownedStyle>
1961 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
1962 </ownedDiagramElements>
1963 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ctw9kF0wEemRYLyXht2IrQ" name="DirectedCommunicationLink" tooltipText="" outgoingEdges="_dbuYhl0xEemRYLyXht2IrQ _i2PgeV0xEemRYLyXht2IrQ" incomingEdges="_ccF89l0wEemRYLyXht2IrQ" width="12" height="10">
1964 <target xmi:type="ecore:EClass" href="satellite.ecore#//DirectedCommunicationLink"/>
1965 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//DirectedCommunicationLink"/>
1966 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1967 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1968 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1969 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fC-qQ10xEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1970 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
1971 </ownedStyle>
1972 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
1973 </ownedDiagramElements>
1974 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_M5OsAF0wEemRYLyXht2IrQ" name="AntennaGain" tooltipText="" width="12" height="10">
1975 <target xmi:type="ecore:EEnum" href="satellite.ecore#//AntennaGain"/>
1976 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//AntennaGain"/>
1977 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1978 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1979 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1980 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_M5OsAV0wEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
1981 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
1982 </ownedStyle>
1983 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
1984 <ownedElements xmi:type="diagram:DNodeListElement" uid="_OBacEF0wEemRYLyXht2IrQ" name="LOW" tooltipText="">
1985 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/LOW"/>
1986 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/LOW"/>
1987 <ownedStyle xmi:type="diagram:BundledImage" uid="_OBbDIF0wEemRYLyXht2IrQ" labelAlignment="LEFT">
1988 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
1989 </ownedStyle>
1990 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
1991 </ownedElements>
1992 <ownedElements xmi:type="diagram:DNodeListElement" uid="_OcLsgF0wEemRYLyXht2IrQ" name="MEDIUM" tooltipText="">
1993 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/MEDIUM"/>
1994 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/MEDIUM"/>
1995 <ownedStyle xmi:type="diagram:BundledImage" uid="_OcLsgV0wEemRYLyXht2IrQ" labelAlignment="LEFT">
1996 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
1997 </ownedStyle>
1998 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
1999 </ownedElements>
2000 <ownedElements xmi:type="diagram:DNodeListElement" uid="_O9wIgF0wEemRYLyXht2IrQ" name="HIGH" tooltipText="">
2001 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/HIGH"/>
2002 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/HIGH"/>
2003 <ownedStyle xmi:type="diagram:BundledImage" uid="_O9wvkF0wEemRYLyXht2IrQ" labelAlignment="LEFT">
2004 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2005 </ownedStyle>
2006 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2007 </ownedElements>
2008 </ownedDiagramElements>
2009 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ccF89l0wEemRYLyXht2IrQ" name="[0..1] communicationLink" sourceNode="_3T7UUF0rEemRYLyXht2IrQ" targetNode="_Ctw9kF0wEemRYLyXht2IrQ">
2010 <target xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/communicationLink"/>
2011 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/communicationLink"/>
2012 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ccHLE10wEemRYLyXht2IrQ" description="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2013 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ccHLFV0wEemRYLyXht2IrQ" showIcon="false">
2014 <customFeatures>labelSize</customFeatures>
2015 </centerLabelStyle>
2016 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ccHLFF0wEemRYLyXht2IrQ" showIcon="false" labelColor="39,76,114">
2017 <customFeatures>labelSize</customFeatures>
2018 </endLabelStyle>
2019 </ownedStyle>
2020 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2021 </ownedDiagramElements>
2022 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dbuYhl0xEemRYLyXht2IrQ" name="[1..1] source" sourceNode="_Ctw9kF0wEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
2023 <target xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/source"/>
2024 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/source"/>
2025 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fDAfY10xEemRYLyXht2IrQ" description="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan" strokeColor="0,0,0">
2026 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fDAfZV0xEemRYLyXht2IrQ" showIcon="false">
2027 <labelFormat>bold</labelFormat>
2028 </centerLabelStyle>
2029 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fDAfZF0xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2030 </ownedStyle>
2031 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2032 </ownedDiagramElements>
2033 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_i2PgeV0xEemRYLyXht2IrQ" name="[1..1] target" sourceNode="_Ctw9kF0wEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
2034 <target xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/target"/>
2035 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/target"/>
2036 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jrg7ll0xEemRYLyXht2IrQ" description="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan" strokeColor="0,0,0">
2037 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jrg7mF0xEemRYLyXht2IrQ" showIcon="false">
2038 <labelFormat>bold</labelFormat>
2039 </centerLabelStyle>
2040 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jrg7l10xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2041 </ownedStyle>
2042 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2043 </ownedDiagramElements>
2044 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_0aW3cF0xEemRYLyXht2IrQ" name="Payload" tooltipText="" incomingEdges="_3GzPll0xEemRYLyXht2IrQ _8iFzll0xEemRYLyXht2IrQ" width="12" height="10">
2045 <target xmi:type="ecore:EClass" href="satellite.ecore#//Payload"/>
2046 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Payload"/>
2047 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2048 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2049 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2050 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_4n8SQl0xEemRYLyXht2IrQ" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
2051 <labelFormat>italic</labelFormat>
2052 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
2053 </ownedStyle>
2054 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2055 </ownedDiagramElements>
2056 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3GzPll0xEemRYLyXht2IrQ" name="[0..1] payload" sourceNode="_AqsPYF0sEemRYLyXht2IrQ" targetNode="_0aW3cF0xEemRYLyXht2IrQ">
2057 <target xmi:type="ecore:EReference" href="satellite.ecore#//Spacecraft/payload"/>
2058 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//Spacecraft/payload"/>
2059 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3G0dsF0xEemRYLyXht2IrQ" description="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2060 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3G0dsl0xEemRYLyXht2IrQ" showIcon="false">
2061 <customFeatures>labelSize</customFeatures>
2062 </centerLabelStyle>
2063 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_3G0dsV0xEemRYLyXht2IrQ" showIcon="false" labelColor="39,76,114">
2064 <customFeatures>labelSize</customFeatures>
2065 </endLabelStyle>
2066 </ownedStyle>
2067 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2068 </ownedDiagramElements>
2069 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_45FskF0xEemRYLyXht2IrQ" name="InterferometryPayload" tooltipText="" outgoingEdges="_8iFzll0xEemRYLyXht2IrQ" width="12" height="10">
2070 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2071 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2072 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2073 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2074 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2075 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_IHvBB10yEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2076 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
2077 </ownedStyle>
2078 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2079 </ownedDiagramElements>
2080 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_8iFzll0xEemRYLyXht2IrQ" sourceNode="_45FskF0xEemRYLyXht2IrQ" targetNode="_0aW3cF0xEemRYLyXht2IrQ">
2081 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2082 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2083 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_IH284l0yEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
2084 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
2085 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_IH28410yEemRYLyXht2IrQ" showIcon="false">
2086 <labelFormat>italic</labelFormat>
2087 </beginLabelStyle>
2088 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_IH285F0yEemRYLyXht2IrQ" showIcon="false"/>
2089 </ownedStyle>
2090 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
2091 </ownedDiagramElements>
2092 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_KzljXl0yEemRYLyXht2IrQ" name="[1..1] groundStationNetwork" sourceNode="_tM4oUF0qEemRYLyXht2IrQ" targetNode="__OYCYF0rEemRYLyXht2IrQ">
2093 <target xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/groundStationNetwork"/>
2094 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/groundStationNetwork"/>
2095 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_MI6-gF0yEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2096 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_MI6-gl0yEemRYLyXht2IrQ" showIcon="false">
2097 <labelFormat>bold</labelFormat>
2098 </centerLabelStyle>
2099 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_MI6-gV0yEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2100 </ownedStyle>
2101 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2102 </ownedDiagramElements>
2103 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PdH6PF0yEemRYLyXht2IrQ" name="[2..50] spacecraft" sourceNode="_tM4oUF0qEemRYLyXht2IrQ" targetNode="_AqsPYF0sEemRYLyXht2IrQ">
2104 <target xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/spacecraft"/>
2105 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/spacecraft"/>
2106 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_SRBlMF0yEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2107 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_SRBlMl0yEemRYLyXht2IrQ" showIcon="false">
2108 <labelFormat>bold</labelFormat>
2109 </centerLabelStyle>
2110 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_SRBlMV0yEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2111 </ownedStyle>
2112 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
2113 </ownedDiagramElements>
2114 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_2oBw0G60Eem3gIPdAp40Tw" name="SpacecraftKind" tooltipText="" width="12" height="10">
2115 <target xmi:type="ecore:EEnum" href="satellite.ecore#//SpacecraftKind"/>
2116 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//SpacecraftKind"/>
2117 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2118 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2119 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2120 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2oC-8G60Eem3gIPdAp40Tw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
2121 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
2122 </ownedStyle>
2123 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
2124 <ownedElements xmi:type="diagram:DNodeListElement" uid="_5P_4oG60Eem3gIPdAp40Tw" name="CubeSat3U" tooltipText="">
2125 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
2126 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
2127 <ownedStyle xmi:type="diagram:BundledImage" uid="_5QAfsG60Eem3gIPdAp40Tw" labelAlignment="LEFT">
2128 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2129 </ownedStyle>
2130 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2131 </ownedElements>
2132 <ownedElements xmi:type="diagram:DNodeListElement" uid="_UKKgQHA6Eem9acJE7_CmTw" name="CubeSat6U" tooltipText="">
2133 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat6U"/>
2134 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat6U"/>
2135 <ownedStyle xmi:type="diagram:BundledImage" uid="_UKLHUHA6Eem9acJE7_CmTw" labelAlignment="LEFT">
2136 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2137 </ownedStyle>
2138 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2139 </ownedElements>
2140 <ownedElements xmi:type="diagram:DNodeListElement" uid="_7R9JUG60Eem3gIPdAp40Tw" name="SmallSat" tooltipText="">
2141 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SmallSat"/>
2142 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SmallSat"/>
2143 <ownedStyle xmi:type="diagram:BundledImage" uid="_7R-XcG60Eem3gIPdAp40Tw" labelAlignment="LEFT">
2144 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2145 </ownedStyle>
2146 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2147 </ownedElements>
2148 </ownedDiagramElements>
2149 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fm1X4HA6Eem9acJE7_CmTw" name="CubeSat3U" tooltipText="" outgoingEdges="_37Qf-HBMEempc7JjePmuNw" width="12" height="10">
2150 <target xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat3U"/>
2151 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat3U"/>
2152 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2153 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2154 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2155 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fm1-8HA6Eem9acJE7_CmTw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2156 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
2157 </ownedStyle>
2158 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2159 </ownedDiagramElements>
2160 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_hanCoHA6Eem9acJE7_CmTw" name="CubeSat6U" tooltipText="" outgoingEdges="_3dgz_3BMEempc7JjePmuNw" width="12" height="10">
2161 <target xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat6U"/>
2162 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat6U"/>
2163 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2164 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2165 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2166 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_hanCoXA6Eem9acJE7_CmTw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2167 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
2168 </ownedStyle>
2169 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2170 </ownedDiagramElements>
2171 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_iqnR8HA6Eem9acJE7_CmTw" name="SmallSat" tooltipText="" outgoingEdges="_n9tjRnA6Eem9acJE7_CmTw" width="12" height="10">
2172 <target xmi:type="ecore:EClass" href="satellite.ecore#//SmallSat"/>
2173 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//SmallSat"/>
2174 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2175 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2176 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2177 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_iqn5AHA6Eem9acJE7_CmTw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2178 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
2179 </ownedStyle>
2180 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2181 </ownedDiagramElements>
2182 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_n9tjRnA6Eem9acJE7_CmTw" sourceNode="_iqnR8HA6Eem9acJE7_CmTw" targetNode="_AqsPYF0sEemRYLyXht2IrQ">
2183 <target xmi:type="ecore:EClass" href="satellite.ecore#//SmallSat"/>
2184 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//SmallSat"/>
2185 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_n9uKUHA6Eem9acJE7_CmTw" targetArrow="InputClosedArrow" routingStyle="tree">
2186 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
2187 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_n9uKUXA6Eem9acJE7_CmTw" showIcon="false">
2188 <labelFormat>italic</labelFormat>
2189 </beginLabelStyle>
2190 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_n9uKUnA6Eem9acJE7_CmTw" showIcon="false"/>
2191 </ownedStyle>
2192 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
2193 </ownedDiagramElements>
2194 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3dgz_3BMEempc7JjePmuNw" sourceNode="_hanCoHA6Eem9acJE7_CmTw" targetNode="_AqsPYF0sEemRYLyXht2IrQ">
2195 <target xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat6U"/>
2196 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat6U"/>
2197 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ItnCw3BNEempc7JjePmuNw" lineStyle="dot" targetArrow="InputClosedArrow" routingStyle="tree" strokeColor="125,125,125">
2198 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.1/@style"/>
2199 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_ItnCxHBNEempc7JjePmuNw" showIcon="false">
2200 <labelFormat>italic</labelFormat>
2201 </beginLabelStyle>
2202 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ItnCxXBNEempc7JjePmuNw" showIcon="false"/>
2203 </ownedStyle>
2204 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
2205 </ownedDiagramElements>
2206 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_37Qf-HBMEempc7JjePmuNw" sourceNode="_fm1X4HA6Eem9acJE7_CmTw" targetNode="_AqsPYF0sEemRYLyXht2IrQ">
2207 <target xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat3U"/>
2208 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CubeSat3U"/>
2209 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ItmbuXBNEempc7JjePmuNw" lineStyle="dot" targetArrow="InputClosedArrow" routingStyle="tree" strokeColor="125,125,125">
2210 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.1/@style"/>
2211 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_ItmbunBNEempc7JjePmuNw" showIcon="false">
2212 <labelFormat>italic</labelFormat>
2213 </beginLabelStyle>
2214 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Itmbu3BNEempc7JjePmuNw" showIcon="false"/>
2215 </ownedStyle>
2216 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
2217 </ownedDiagramElements>
2218 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
2219 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_reoWwF0qEemRYLyXht2IrQ"/>
2220 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
2221 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
2222 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
2223 <target xmi:type="ecore:EPackage" href="satellite.ecore#/"/>
2224 </diagram:DSemanticDiagram>
2225</xmi:XMI>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore
new file mode 100644
index 00000000..ae9197da
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore
@@ -0,0 +1,65 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="satellite" nsURI="http://www.example.org/satellite" nsPrefix="satellite">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
5 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EClass" name="ConstellationMission" abstract="true">
8 <eStructuralFeatures xsi:type="ecore:EReference" name="groundStationNetwork" lowerBound="1"
9 eType="#//GroundStationNetwork" containment="true"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="spacecraft" lowerBound="2"
11 upperBound="50" eType="#//Spacecraft" containment="true"/>
12 </eClassifiers>
13 <eClassifiers xsi:type="ecore:EClass" name="InterferometryMission" eSuperTypes="#//ConstellationMission">
14 <eStructuralFeatures xsi:type="ecore:EAttribute" name="observationTime" lowerBound="1"
15 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" defaultValueLiteral="2.0"/>
16 </eClassifiers>
17 <eClassifiers xsi:type="ecore:EClass" name="CommunicatingElement" abstract="true">
18 <eStructuralFeatures xsi:type="ecore:EReference" name="commSubsystem" lowerBound="1"
19 upperBound="2" eType="#//CommSubsystem" containment="true"/>
20 <eStructuralFeatures xsi:type="ecore:EReference" name="communicationLink" eType="#//DirectedCommunicationLink"
21 containment="true"/>
22 </eClassifiers>
23 <eClassifiers xsi:type="ecore:EClass" name="GroundStationNetwork" eSuperTypes="#//CommunicatingElement"/>
24 <eClassifiers xsi:type="ecore:EClass" name="Spacecraft" abstract="true" eSuperTypes="#//CommunicatingElement">
25 <eStructuralFeatures xsi:type="ecore:EReference" name="payload" eType="#//Payload"
26 containment="true"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//SpacecraftKind"
28 changeable="false" volatile="true" transient="true" derived="true">
29 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
30 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind"/>
31 </eAnnotations>
32 </eStructuralFeatures>
33 </eClassifiers>
34 <eClassifiers xsi:type="ecore:EClass" name="CommSubsystem">
35 <eStructuralFeatures xsi:type="ecore:EAttribute" name="band" lowerBound="1" eType="#//TransceiverBand"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="gain" lowerBound="1" eType="#//AntennaGain"/>
37 </eClassifiers>
38 <eClassifiers xsi:type="ecore:EEnum" name="TransceiverBand">
39 <eLiterals name="UHF"/>
40 <eLiterals name="X" value="1"/>
41 <eLiterals name="Ka" value="2"/>
42 </eClassifiers>
43 <eClassifiers xsi:type="ecore:EClass" name="DirectedCommunicationLink">
44 <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
45 eType="#//CommSubsystem"/>
46 <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
47 eType="#//CommSubsystem"/>
48 </eClassifiers>
49 <eClassifiers xsi:type="ecore:EEnum" name="AntennaGain">
50 <eLiterals name="LOW"/>
51 <eLiterals name="MEDIUM" value="1"/>
52 <eLiterals name="HIGH" value="2"/>
53 </eClassifiers>
54 <eClassifiers xsi:type="ecore:EClass" name="Payload" abstract="true"/>
55 <eClassifiers xsi:type="ecore:EClass" name="InterferometryPayload" eSuperTypes="#//Payload"/>
56 <eClassifiers xsi:type="ecore:EEnum" name="SpacecraftKind">
57 <eLiterals name="CubeSat3U"/>
58 <eLiterals name="CubeSat6U" value="1"/>
59 <eLiterals name="SmallSat" value="2"/>
60 </eClassifiers>
61 <eClassifiers xsi:type="ecore:EClass" name="CubeSat3U" eSuperTypes="#//CubeSat"/>
62 <eClassifiers xsi:type="ecore:EClass" name="CubeSat6U" eSuperTypes="#//CubeSat"/>
63 <eClassifiers xsi:type="ecore:EClass" name="SmallSat" eSuperTypes="#//Spacecraft"/>
64 <eClassifiers xsi:type="ecore:EClass" name="CubeSat" abstract="true" eSuperTypes="#//Spacecraft"/>
65</ecore:EPackage>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel
new file mode 100644
index 00000000..f8b6d75b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel
@@ -0,0 +1,59 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
4 modelDirectory="/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen"
5 creationIcons="false" editDirectory="/hu.bme.mit.inf.dslreasoner.domains.satellite.edit/src-gen"
6 editorDirectory="/hu.bme.mit.inf.dslreasoner.domains.satellite.editor/src-gen"
7 modelPluginID="hu.bme.mit.inf.dslreasoner.domains.satellite" modelName="Satellite"
8 rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
9 importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
10 operationReflection="true" importOrganizing="true">
11 <foreignModel>satellite.ecore</foreignModel>
12 <testsDirectory xsi:nil="true"/>
13 <genPackages prefix="Satellite" disposableProviderFactory="true" ecorePackage="satellite.ecore#/">
14 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//TransceiverBand">
15 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/UHF"/>
16 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/X"/>
17 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/Ka"/>
18 </genEnums>
19 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//AntennaGain">
20 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/LOW"/>
21 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/MEDIUM"/>
22 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/HIGH"/>
23 </genEnums>
24 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//SpacecraftKind">
25 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
26 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/CubeSat6U"/>
27 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/SmallSat"/>
28 </genEnums>
29 <genClasses image="false" ecoreClass="satellite.ecore#//ConstellationMission">
30 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//ConstellationMission/groundStationNetwork"/>
31 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//ConstellationMission/spacecraft"/>
32 </genClasses>
33 <genClasses ecoreClass="satellite.ecore#//InterferometryMission">
34 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//InterferometryMission/observationTime"/>
35 </genClasses>
36 <genClasses image="false" ecoreClass="satellite.ecore#//CommunicatingElement">
37 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//CommunicatingElement/commSubsystem"/>
38 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//CommunicatingElement/communicationLink"/>
39 </genClasses>
40 <genClasses ecoreClass="satellite.ecore#//GroundStationNetwork"/>
41 <genClasses image="false" ecoreClass="satellite.ecore#//Spacecraft">
42 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//Spacecraft/payload"/>
43 <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//Spacecraft/kind"/>
44 </genClasses>
45 <genClasses ecoreClass="satellite.ecore#//CommSubsystem">
46 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//CommSubsystem/band"/>
47 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//CommSubsystem/gain"/>
48 </genClasses>
49 <genClasses ecoreClass="satellite.ecore#//DirectedCommunicationLink">
50 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference satellite.ecore#//DirectedCommunicationLink/source"/>
51 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference satellite.ecore#//DirectedCommunicationLink/target"/>
52 </genClasses>
53 <genClasses image="false" ecoreClass="satellite.ecore#//Payload"/>
54 <genClasses ecoreClass="satellite.ecore#//InterferometryPayload"/>
55 <genClasses ecoreClass="satellite.ecore#//CubeSat3U"/>
56 <genClasses ecoreClass="satellite.ecore#//CubeSat6U"/>
57 <genClasses ecoreClass="satellite.ecore#//SmallSat"/>
58 </genPackages>
59</genmodel:GenModel>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated
new file mode 100644
index 00000000..853b7b54
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated
@@ -0,0 +1,3564 @@
1import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
2import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
3import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
4
5//////////
6// 0. Util
7//////////
8private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
9 PartialInterpretation.problem(interpretation,problem);
10}
11
12/////////////////////////
13// 0.1 Existence
14/////////////////////////
15private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16 find interpretation(problem,interpretation);
17 LogicProblem.elements(problem,element);
18} or {
19 find interpretation(problem,interpretation);
20 PartialInterpretation.newElements(interpretation,element);
21}
22
23private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24 find mustExist(problem,interpretation,element);
25} or {
26 find interpretation(problem,interpretation);
27 neg find elementCloseWorld(element);
28 PartialInterpretation.openWorldElements(interpretation,element);
29}
30
31private pattern elementCloseWorld(element:DefinedElement) {
32 PartialInterpretation.openWorldElements(i,element);
33 PartialInterpretation.maxNewElements(i,0);
34} or {
35 Scope.targetTypeInterpretation(scope,interpretation);
36 PartialTypeInterpratation.elements(interpretation,element);
37 Scope.maxNewElements(scope,0);
38}
39
40////////////////////////
41// 0.2 Equivalence
42////////////////////////
43pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
44 find mayExist(problem,interpretation,a);
45 find mayExist(problem,interpretation,b);
46 a == b;
47}
48pattern mustEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
49 find mustExist(problem,interpretation,a);
50 find mustExist(problem,interpretation,b);
51 a == b;
52}
53
54////////////////////////
55// 0.3 Required Patterns by TypeIndexer
56////////////////////////
57private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
58 find interpretation(problem,interpretation);
59 LogicProblem.types(problem,type);
60 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
61 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
62}
63
64private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
65 find interpretation(problem,interpretation);
66 LogicProblem.types(problem,type);
67 TypeDefinition.elements(type,element);
68} or {
69 find interpretation(problem,interpretation);
70 find typeInterpretation(problem,interpretation,type,typeInterpretation);
71 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
72}
73
74private pattern isPrimitive(element: PrimitiveElement) {
75 PrimitiveElement(element);
76}
77
78//////////
79// 1. Problem-Specific Base Indexers
80//////////
81// 1.1 Type Indexers
82//////////
83// 1.1.1 primitive Type Indexers
84//////////
85
86//////////
87// 1.1.2 domain-specific Type Indexers
88//////////
89/**
90 * An element must be an instance of type "ConstellationMission class".
91 */
92private pattern mustInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
93 Type.name(type,"ConstellationMission class");
94 find directInstanceOf(problem,interpretation,element,type);
95}
96private pattern scopeDisallowsNewConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation) {
97 find interpretation(problem,interpretation);
98 PartialInterpretation.scopes(interpretation,scope);
99 Scope.targetTypeInterpretation(scope,typeInterpretation);
100 Scope.maxNewElements(scope,0);
101 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
102 Type.name(type,"ConstellationMission class");
103}
104
105/**
106 * An element may be an instance of type "ConstellationMission class".
107 */
108private pattern mayInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
109{
110 find interpretation(problem,interpretation);
111 PartialInterpretation.newElements(interpretation,element);
112 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
113 neg find mustInstanceOfPayload_class(problem,interpretation,element);
114 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
115 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
116 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
117 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
118 neg find scopeDisallowsNewConstellationMission_class(problem, interpretation);
119 neg find isPrimitive(element);
120} or {
121 find interpretation(problem,interpretation);
122 PartialInterpretation.openWorldElements(interpretation,element);
123 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
124 neg find mustInstanceOfPayload_class(problem,interpretation,element);
125 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
126 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
127 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
128 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
129 neg find scopeDisallowsNewConstellationMission_class(problem, interpretation);
130 neg find isPrimitive(element);
131} or
132{ find mustInstanceOfConstellationMission_class(problem,interpretation,element); }
133/**
134 * An element must be an instance of type "InterferometryMission class".
135 */
136private pattern mustInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
137 Type.name(type,"InterferometryMission class");
138 find directInstanceOf(problem,interpretation,element,type);
139}
140private pattern scopeDisallowsNewInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation) {
141 find interpretation(problem,interpretation);
142 PartialInterpretation.scopes(interpretation,scope);
143 Scope.targetTypeInterpretation(scope,typeInterpretation);
144 Scope.maxNewElements(scope,0);
145 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
146 Type.name(type,"InterferometryMission class");
147}
148
149/**
150 * An element may be an instance of type "InterferometryMission class".
151 */
152private pattern mayInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
153{
154 find interpretation(problem,interpretation);
155 PartialInterpretation.newElements(interpretation,element);
156 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
157 neg find mustInstanceOfPayload_class(problem,interpretation,element);
158 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
159 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
160 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
161 neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation);
162 neg find isPrimitive(element);
163} or {
164 find interpretation(problem,interpretation);
165 PartialInterpretation.openWorldElements(interpretation,element);
166 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
167 neg find mustInstanceOfPayload_class(problem,interpretation,element);
168 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
169 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
170 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
171 neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation);
172 neg find isPrimitive(element);
173} or
174{ find mustInstanceOfInterferometryMission_class(problem,interpretation,element); }
175/**
176 * An element must be an instance of type "CommunicatingElement class".
177 */
178private pattern mustInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
179 Type.name(type,"CommunicatingElement class");
180 find directInstanceOf(problem,interpretation,element,type);
181}
182private pattern scopeDisallowsNewCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
183 find interpretation(problem,interpretation);
184 PartialInterpretation.scopes(interpretation,scope);
185 Scope.targetTypeInterpretation(scope,typeInterpretation);
186 Scope.maxNewElements(scope,0);
187 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
188 Type.name(type,"CommunicatingElement class");
189}
190
191/**
192 * An element may be an instance of type "CommunicatingElement class".
193 */
194private pattern mayInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
195{
196 find interpretation(problem,interpretation);
197 PartialInterpretation.newElements(interpretation,element);
198 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
199 neg find mustInstanceOfPayload_class(problem,interpretation,element);
200 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
201 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
202 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
203 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
204 neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation);
205 neg find isPrimitive(element);
206} or {
207 find interpretation(problem,interpretation);
208 PartialInterpretation.openWorldElements(interpretation,element);
209 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
210 neg find mustInstanceOfPayload_class(problem,interpretation,element);
211 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
212 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
213 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
214 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
215 neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation);
216 neg find isPrimitive(element);
217} or
218{ find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); }
219/**
220 * An element must be an instance of type "GroundStationNetwork class".
221 */
222private pattern mustInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
223 Type.name(type,"GroundStationNetwork class");
224 find directInstanceOf(problem,interpretation,element,type);
225}
226private pattern scopeDisallowsNewGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation) {
227 find interpretation(problem,interpretation);
228 PartialInterpretation.scopes(interpretation,scope);
229 Scope.targetTypeInterpretation(scope,typeInterpretation);
230 Scope.maxNewElements(scope,0);
231 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
232 Type.name(type,"GroundStationNetwork class");
233}
234
235/**
236 * An element may be an instance of type "GroundStationNetwork class".
237 */
238private pattern mayInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
239{
240 find interpretation(problem,interpretation);
241 PartialInterpretation.newElements(interpretation,element);
242 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
243 neg find mustInstanceOfPayload_class(problem,interpretation,element);
244 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
245 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
246 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
247 neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation);
248 neg find isPrimitive(element);
249} or {
250 find interpretation(problem,interpretation);
251 PartialInterpretation.openWorldElements(interpretation,element);
252 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
253 neg find mustInstanceOfPayload_class(problem,interpretation,element);
254 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
255 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
256 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
257 neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation);
258 neg find isPrimitive(element);
259} or
260{ find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); }
261/**
262 * An element must be an instance of type "Spacecraft class".
263 */
264private pattern mustInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
265 Type.name(type,"Spacecraft class");
266 find directInstanceOf(problem,interpretation,element,type);
267}
268private pattern scopeDisallowsNewSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation) {
269 find interpretation(problem,interpretation);
270 PartialInterpretation.scopes(interpretation,scope);
271 Scope.targetTypeInterpretation(scope,typeInterpretation);
272 Scope.maxNewElements(scope,0);
273 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
274 Type.name(type,"Spacecraft class");
275}
276
277/**
278 * An element may be an instance of type "Spacecraft class".
279 */
280private pattern mayInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
281{
282 find interpretation(problem,interpretation);
283 PartialInterpretation.newElements(interpretation,element);
284 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
285 neg find mustInstanceOfPayload_class(problem,interpretation,element);
286 neg find mustInstanceOfCubeSat_class(problem,interpretation,element);
287 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
288 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
289 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
290 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
291 neg find scopeDisallowsNewSpacecraft_class(problem, interpretation);
292 neg find isPrimitive(element);
293} or {
294 find interpretation(problem,interpretation);
295 PartialInterpretation.openWorldElements(interpretation,element);
296 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
297 neg find mustInstanceOfPayload_class(problem,interpretation,element);
298 neg find mustInstanceOfCubeSat_class(problem,interpretation,element);
299 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
300 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
301 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
302 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
303 neg find scopeDisallowsNewSpacecraft_class(problem, interpretation);
304 neg find isPrimitive(element);
305} or
306{ find mustInstanceOfSpacecraft_class(problem,interpretation,element); }
307/**
308 * An element must be an instance of type "CommSubsystem class".
309 */
310private pattern mustInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
311 Type.name(type,"CommSubsystem class");
312 find directInstanceOf(problem,interpretation,element,type);
313}
314private pattern scopeDisallowsNewCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) {
315 find interpretation(problem,interpretation);
316 PartialInterpretation.scopes(interpretation,scope);
317 Scope.targetTypeInterpretation(scope,typeInterpretation);
318 Scope.maxNewElements(scope,0);
319 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
320 Type.name(type,"CommSubsystem class");
321}
322
323/**
324 * An element may be an instance of type "CommSubsystem class".
325 */
326private pattern mayInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
327{
328 find interpretation(problem,interpretation);
329 PartialInterpretation.newElements(interpretation,element);
330 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
331 neg find mustInstanceOfPayload_class(problem,interpretation,element);
332 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
333 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
334 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
335 neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation);
336 neg find isPrimitive(element);
337} or {
338 find interpretation(problem,interpretation);
339 PartialInterpretation.openWorldElements(interpretation,element);
340 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
341 neg find mustInstanceOfPayload_class(problem,interpretation,element);
342 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
343 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
344 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
345 neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation);
346 neg find isPrimitive(element);
347} or
348{ find mustInstanceOfCommSubsystem_class(problem,interpretation,element); }
349/**
350 * An element must be an instance of type "DirectedCommunicationLink class".
351 */
352private pattern mustInstanceOfDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
353 Type.name(type,"DirectedCommunicationLink class");
354 find directInstanceOf(problem,interpretation,element,type);
355}
356private pattern scopeDisallowsNewDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
357 find interpretation(problem,interpretation);
358 PartialInterpretation.scopes(interpretation,scope);
359 Scope.targetTypeInterpretation(scope,typeInterpretation);
360 Scope.maxNewElements(scope,0);
361 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
362 Type.name(type,"DirectedCommunicationLink class");
363}
364
365/**
366 * An element may be an instance of type "DirectedCommunicationLink class".
367 */
368private pattern mayInstanceOfDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
369{
370 find interpretation(problem,interpretation);
371 PartialInterpretation.newElements(interpretation,element);
372 neg find mustInstanceOfPayload_class(problem,interpretation,element);
373 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
374 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
375 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
376 neg find scopeDisallowsNewDirectedCommunicationLink_class(problem, interpretation);
377 neg find isPrimitive(element);
378} or {
379 find interpretation(problem,interpretation);
380 PartialInterpretation.openWorldElements(interpretation,element);
381 neg find mustInstanceOfPayload_class(problem,interpretation,element);
382 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
383 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
384 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
385 neg find scopeDisallowsNewDirectedCommunicationLink_class(problem, interpretation);
386 neg find isPrimitive(element);
387} or
388{ find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element); }
389/**
390 * An element must be an instance of type "Payload class".
391 */
392private pattern mustInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
393 Type.name(type,"Payload class");
394 find directInstanceOf(problem,interpretation,element,type);
395}
396private pattern scopeDisallowsNewPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) {
397 find interpretation(problem,interpretation);
398 PartialInterpretation.scopes(interpretation,scope);
399 Scope.targetTypeInterpretation(scope,typeInterpretation);
400 Scope.maxNewElements(scope,0);
401 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
402 Type.name(type,"Payload class");
403}
404
405/**
406 * An element may be an instance of type "Payload class".
407 */
408private pattern mayInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
409{
410 find interpretation(problem,interpretation);
411 PartialInterpretation.newElements(interpretation,element);
412 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
413 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
414 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
415 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
416 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
417 neg find scopeDisallowsNewPayload_class(problem, interpretation);
418 neg find isPrimitive(element);
419} or {
420 find interpretation(problem,interpretation);
421 PartialInterpretation.openWorldElements(interpretation,element);
422 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
423 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
424 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
425 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
426 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
427 neg find scopeDisallowsNewPayload_class(problem, interpretation);
428 neg find isPrimitive(element);
429} or
430{ find mustInstanceOfPayload_class(problem,interpretation,element); }
431/**
432 * An element must be an instance of type "InterferometryPayload class".
433 */
434private pattern mustInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
435 Type.name(type,"InterferometryPayload class");
436 find directInstanceOf(problem,interpretation,element,type);
437}
438private pattern scopeDisallowsNewInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) {
439 find interpretation(problem,interpretation);
440 PartialInterpretation.scopes(interpretation,scope);
441 Scope.targetTypeInterpretation(scope,typeInterpretation);
442 Scope.maxNewElements(scope,0);
443 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
444 Type.name(type,"InterferometryPayload class");
445}
446
447/**
448 * An element may be an instance of type "InterferometryPayload class".
449 */
450private pattern mayInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
451{
452 find interpretation(problem,interpretation);
453 PartialInterpretation.newElements(interpretation,element);
454 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
455 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
456 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
457 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
458 neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation);
459 neg find isPrimitive(element);
460} or {
461 find interpretation(problem,interpretation);
462 PartialInterpretation.openWorldElements(interpretation,element);
463 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
464 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
465 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
466 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
467 neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation);
468 neg find isPrimitive(element);
469} or
470{ find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); }
471/**
472 * An element must be an instance of type "CubeSat3U class".
473 */
474private pattern mustInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
475 Type.name(type,"CubeSat3U class");
476 find directInstanceOf(problem,interpretation,element,type);
477}
478private pattern scopeDisallowsNewCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation) {
479 find interpretation(problem,interpretation);
480 PartialInterpretation.scopes(interpretation,scope);
481 Scope.targetTypeInterpretation(scope,typeInterpretation);
482 Scope.maxNewElements(scope,0);
483 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
484 Type.name(type,"CubeSat3U class");
485}
486
487/**
488 * An element may be an instance of type "CubeSat3U class".
489 */
490private pattern mayInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
491{
492 find interpretation(problem,interpretation);
493 PartialInterpretation.newElements(interpretation,element);
494 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
495 neg find mustInstanceOfPayload_class(problem,interpretation,element);
496 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
497 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
498 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
499 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
500 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
501 neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation);
502 neg find isPrimitive(element);
503} or {
504 find interpretation(problem,interpretation);
505 PartialInterpretation.openWorldElements(interpretation,element);
506 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
507 neg find mustInstanceOfPayload_class(problem,interpretation,element);
508 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
509 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
510 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
511 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
512 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
513 neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation);
514 neg find isPrimitive(element);
515} or
516{ find mustInstanceOfCubeSat3U_class(problem,interpretation,element); }
517/**
518 * An element must be an instance of type "CubeSat6U class".
519 */
520private pattern mustInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
521 Type.name(type,"CubeSat6U class");
522 find directInstanceOf(problem,interpretation,element,type);
523}
524private pattern scopeDisallowsNewCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation) {
525 find interpretation(problem,interpretation);
526 PartialInterpretation.scopes(interpretation,scope);
527 Scope.targetTypeInterpretation(scope,typeInterpretation);
528 Scope.maxNewElements(scope,0);
529 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
530 Type.name(type,"CubeSat6U class");
531}
532
533/**
534 * An element may be an instance of type "CubeSat6U class".
535 */
536private pattern mayInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
537{
538 find interpretation(problem,interpretation);
539 PartialInterpretation.newElements(interpretation,element);
540 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
541 neg find mustInstanceOfPayload_class(problem,interpretation,element);
542 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
543 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
544 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
545 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
546 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
547 neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation);
548 neg find isPrimitive(element);
549} or {
550 find interpretation(problem,interpretation);
551 PartialInterpretation.openWorldElements(interpretation,element);
552 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
553 neg find mustInstanceOfPayload_class(problem,interpretation,element);
554 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
555 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
556 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
557 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
558 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
559 neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation);
560 neg find isPrimitive(element);
561} or
562{ find mustInstanceOfCubeSat6U_class(problem,interpretation,element); }
563/**
564 * An element must be an instance of type "SmallSat class".
565 */
566private pattern mustInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
567 Type.name(type,"SmallSat class");
568 find directInstanceOf(problem,interpretation,element,type);
569}
570private pattern scopeDisallowsNewSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation) {
571 find interpretation(problem,interpretation);
572 PartialInterpretation.scopes(interpretation,scope);
573 Scope.targetTypeInterpretation(scope,typeInterpretation);
574 Scope.maxNewElements(scope,0);
575 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
576 Type.name(type,"SmallSat class");
577}
578
579/**
580 * An element may be an instance of type "SmallSat class".
581 */
582private pattern mayInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
583{
584 find interpretation(problem,interpretation);
585 PartialInterpretation.newElements(interpretation,element);
586 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
587 neg find mustInstanceOfPayload_class(problem,interpretation,element);
588 neg find mustInstanceOfCubeSat_class(problem,interpretation,element);
589 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
590 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
591 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
592 neg find scopeDisallowsNewSmallSat_class(problem, interpretation);
593 neg find isPrimitive(element);
594} or {
595 find interpretation(problem,interpretation);
596 PartialInterpretation.openWorldElements(interpretation,element);
597 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
598 neg find mustInstanceOfPayload_class(problem,interpretation,element);
599 neg find mustInstanceOfCubeSat_class(problem,interpretation,element);
600 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
601 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
602 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
603 neg find scopeDisallowsNewSmallSat_class(problem, interpretation);
604 neg find isPrimitive(element);
605} or
606{ find mustInstanceOfSmallSat_class(problem,interpretation,element); }
607/**
608 * An element must be an instance of type "CubeSat class".
609 */
610private pattern mustInstanceOfCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
611 Type.name(type,"CubeSat class");
612 find directInstanceOf(problem,interpretation,element,type);
613}
614private pattern scopeDisallowsNewCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation) {
615 find interpretation(problem,interpretation);
616 PartialInterpretation.scopes(interpretation,scope);
617 Scope.targetTypeInterpretation(scope,typeInterpretation);
618 Scope.maxNewElements(scope,0);
619 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
620 Type.name(type,"CubeSat class");
621}
622
623/**
624 * An element may be an instance of type "CubeSat class".
625 */
626private pattern mayInstanceOfCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
627{
628 find interpretation(problem,interpretation);
629 PartialInterpretation.newElements(interpretation,element);
630 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
631 neg find mustInstanceOfPayload_class(problem,interpretation,element);
632 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
633 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
634 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
635 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
636 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
637 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
638 neg find scopeDisallowsNewCubeSat_class(problem, interpretation);
639 neg find isPrimitive(element);
640} or {
641 find interpretation(problem,interpretation);
642 PartialInterpretation.openWorldElements(interpretation,element);
643 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
644 neg find mustInstanceOfPayload_class(problem,interpretation,element);
645 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
646 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
647 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
648 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
649 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
650 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
651 neg find scopeDisallowsNewCubeSat_class(problem, interpretation);
652 neg find isPrimitive(element);
653} or
654{ find mustInstanceOfCubeSat_class(problem,interpretation,element); }
655/**
656 * An element must be an instance of type "TransceiverBand enum".
657 */
658private pattern mustInstanceOfTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
659 Type.name(type,"TransceiverBand enum");
660 find directInstanceOf(problem,interpretation,element,type);
661}
662private pattern scopeDisallowsNewTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
663 find interpretation(problem,interpretation);
664 PartialInterpretation.scopes(interpretation,scope);
665 Scope.targetTypeInterpretation(scope,typeInterpretation);
666 Scope.maxNewElements(scope,0);
667 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
668 Type.name(type,"TransceiverBand enum");
669}
670
671/**
672 * An element may be an instance of type "TransceiverBand enum".
673 */
674private pattern mayInstanceOfTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
675{ find mustInstanceOfTransceiverBand_enum(problem,interpretation,element); }
676/**
677 * An element must be an instance of type "AntennaGain enum".
678 */
679private pattern mustInstanceOfAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
680 Type.name(type,"AntennaGain enum");
681 find directInstanceOf(problem,interpretation,element,type);
682}
683private pattern scopeDisallowsNewAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
684 find interpretation(problem,interpretation);
685 PartialInterpretation.scopes(interpretation,scope);
686 Scope.targetTypeInterpretation(scope,typeInterpretation);
687 Scope.maxNewElements(scope,0);
688 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
689 Type.name(type,"AntennaGain enum");
690}
691
692/**
693 * An element may be an instance of type "AntennaGain enum".
694 */
695private pattern mayInstanceOfAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
696{ find mustInstanceOfAntennaGain_enum(problem,interpretation,element); }
697/**
698 * An element must be an instance of type "SpacecraftKind enum".
699 */
700private pattern mustInstanceOfSpacecraftKind_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
701 Type.name(type,"SpacecraftKind enum");
702 find directInstanceOf(problem,interpretation,element,type);
703}
704private pattern scopeDisallowsNewSpacecraftKind_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
705 find interpretation(problem,interpretation);
706 PartialInterpretation.scopes(interpretation,scope);
707 Scope.targetTypeInterpretation(scope,typeInterpretation);
708 Scope.maxNewElements(scope,0);
709 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
710 Type.name(type,"SpacecraftKind enum");
711}
712
713/**
714 * An element may be an instance of type "SpacecraftKind enum".
715 */
716private pattern mayInstanceOfSpacecraftKind_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
717{ find mustInstanceOfSpacecraftKind_enum(problem,interpretation,element); }
718/**
719 * An element must be an instance of type "ConstellationMission class DefinedPart".
720 */
721private pattern mustInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
722 Type.name(type,"ConstellationMission class DefinedPart");
723 find directInstanceOf(problem,interpretation,element,type);
724}
725private pattern scopeDisallowsNewConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
726 find interpretation(problem,interpretation);
727 PartialInterpretation.scopes(interpretation,scope);
728 Scope.targetTypeInterpretation(scope,typeInterpretation);
729 Scope.maxNewElements(scope,0);
730 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
731 Type.name(type,"ConstellationMission class DefinedPart");
732}
733
734/**
735 * An element may be an instance of type "ConstellationMission class DefinedPart".
736 */
737private pattern mayInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
738{ find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,element); }
739/**
740 * An element must be an instance of type "ConstellationMission class UndefinedPart".
741 */
742private pattern mustInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
743 Type.name(type,"ConstellationMission class UndefinedPart");
744 find directInstanceOf(problem,interpretation,element,type);
745}
746private pattern scopeDisallowsNewConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
747 find interpretation(problem,interpretation);
748 PartialInterpretation.scopes(interpretation,scope);
749 Scope.targetTypeInterpretation(scope,typeInterpretation);
750 Scope.maxNewElements(scope,0);
751 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
752 Type.name(type,"ConstellationMission class UndefinedPart");
753}
754
755/**
756 * An element may be an instance of type "ConstellationMission class UndefinedPart".
757 */
758private pattern mayInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
759{
760 find interpretation(problem,interpretation);
761 PartialInterpretation.newElements(interpretation,element);
762 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
763 neg find mustInstanceOfPayload_class(problem,interpretation,element);
764 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
765 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
766 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
767 neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation);
768 neg find isPrimitive(element);
769} or {
770 find interpretation(problem,interpretation);
771 PartialInterpretation.openWorldElements(interpretation,element);
772 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
773 neg find mustInstanceOfPayload_class(problem,interpretation,element);
774 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
775 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
776 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
777 neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation);
778 neg find isPrimitive(element);
779} or
780{ find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); }
781/**
782 * An element must be an instance of type "InterferometryMission class DefinedPart".
783 */
784private pattern mustInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
785 Type.name(type,"InterferometryMission class DefinedPart");
786 find directInstanceOf(problem,interpretation,element,type);
787}
788private pattern scopeDisallowsNewInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
789 find interpretation(problem,interpretation);
790 PartialInterpretation.scopes(interpretation,scope);
791 Scope.targetTypeInterpretation(scope,typeInterpretation);
792 Scope.maxNewElements(scope,0);
793 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
794 Type.name(type,"InterferometryMission class DefinedPart");
795}
796
797/**
798 * An element may be an instance of type "InterferometryMission class DefinedPart".
799 */
800private pattern mayInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
801{ find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,element); }
802/**
803 * An element must be an instance of type "InterferometryMission class UndefinedPart".
804 */
805private pattern mustInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
806 Type.name(type,"InterferometryMission class UndefinedPart");
807 find directInstanceOf(problem,interpretation,element,type);
808}
809private pattern scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
810 find interpretation(problem,interpretation);
811 PartialInterpretation.scopes(interpretation,scope);
812 Scope.targetTypeInterpretation(scope,typeInterpretation);
813 Scope.maxNewElements(scope,0);
814 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
815 Type.name(type,"InterferometryMission class UndefinedPart");
816}
817
818/**
819 * An element may be an instance of type "InterferometryMission class UndefinedPart".
820 */
821private pattern mayInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
822{
823 find interpretation(problem,interpretation);
824 PartialInterpretation.newElements(interpretation,element);
825 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
826 neg find mustInstanceOfPayload_class(problem,interpretation,element);
827 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
828 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
829 neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation);
830 neg find isPrimitive(element);
831} or {
832 find interpretation(problem,interpretation);
833 PartialInterpretation.openWorldElements(interpretation,element);
834 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
835 neg find mustInstanceOfPayload_class(problem,interpretation,element);
836 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
837 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
838 neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation);
839 neg find isPrimitive(element);
840} or
841{ find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element); }
842/**
843 * An element must be an instance of type "CommunicatingElement class DefinedPart".
844 */
845private pattern mustInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
846 Type.name(type,"CommunicatingElement class DefinedPart");
847 find directInstanceOf(problem,interpretation,element,type);
848}
849private pattern scopeDisallowsNewCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
850 find interpretation(problem,interpretation);
851 PartialInterpretation.scopes(interpretation,scope);
852 Scope.targetTypeInterpretation(scope,typeInterpretation);
853 Scope.maxNewElements(scope,0);
854 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
855 Type.name(type,"CommunicatingElement class DefinedPart");
856}
857
858/**
859 * An element may be an instance of type "CommunicatingElement class DefinedPart".
860 */
861private pattern mayInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
862{ find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,element); }
863/**
864 * An element must be an instance of type "CommunicatingElement class UndefinedPart".
865 */
866private pattern mustInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
867 Type.name(type,"CommunicatingElement class UndefinedPart");
868 find directInstanceOf(problem,interpretation,element,type);
869}
870private pattern scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
871 find interpretation(problem,interpretation);
872 PartialInterpretation.scopes(interpretation,scope);
873 Scope.targetTypeInterpretation(scope,typeInterpretation);
874 Scope.maxNewElements(scope,0);
875 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
876 Type.name(type,"CommunicatingElement class UndefinedPart");
877}
878
879/**
880 * An element may be an instance of type "CommunicatingElement class UndefinedPart".
881 */
882private pattern mayInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
883{
884 find interpretation(problem,interpretation);
885 PartialInterpretation.newElements(interpretation,element);
886 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
887 neg find mustInstanceOfPayload_class(problem,interpretation,element);
888 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
889 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
890 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
891 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
892 neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation);
893 neg find isPrimitive(element);
894} or {
895 find interpretation(problem,interpretation);
896 PartialInterpretation.openWorldElements(interpretation,element);
897 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
898 neg find mustInstanceOfPayload_class(problem,interpretation,element);
899 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
900 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
901 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
902 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
903 neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation);
904 neg find isPrimitive(element);
905} or
906{ find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); }
907/**
908 * An element must be an instance of type "GroundStationNetwork class DefinedPart".
909 */
910private pattern mustInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
911 Type.name(type,"GroundStationNetwork class DefinedPart");
912 find directInstanceOf(problem,interpretation,element,type);
913}
914private pattern scopeDisallowsNewGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
915 find interpretation(problem,interpretation);
916 PartialInterpretation.scopes(interpretation,scope);
917 Scope.targetTypeInterpretation(scope,typeInterpretation);
918 Scope.maxNewElements(scope,0);
919 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
920 Type.name(type,"GroundStationNetwork class DefinedPart");
921}
922
923/**
924 * An element may be an instance of type "GroundStationNetwork class DefinedPart".
925 */
926private pattern mayInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
927{ find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,element); }
928/**
929 * An element must be an instance of type "GroundStationNetwork class UndefinedPart".
930 */
931private pattern mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
932 Type.name(type,"GroundStationNetwork class UndefinedPart");
933 find directInstanceOf(problem,interpretation,element,type);
934}
935private pattern scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
936 find interpretation(problem,interpretation);
937 PartialInterpretation.scopes(interpretation,scope);
938 Scope.targetTypeInterpretation(scope,typeInterpretation);
939 Scope.maxNewElements(scope,0);
940 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
941 Type.name(type,"GroundStationNetwork class UndefinedPart");
942}
943
944/**
945 * An element may be an instance of type "GroundStationNetwork class UndefinedPart".
946 */
947private pattern mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
948{
949 find interpretation(problem,interpretation);
950 PartialInterpretation.newElements(interpretation,element);
951 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
952 neg find mustInstanceOfPayload_class(problem,interpretation,element);
953 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
954 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
955 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
956 neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation);
957 neg find isPrimitive(element);
958} or {
959 find interpretation(problem,interpretation);
960 PartialInterpretation.openWorldElements(interpretation,element);
961 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
962 neg find mustInstanceOfPayload_class(problem,interpretation,element);
963 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
964 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
965 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
966 neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation);
967 neg find isPrimitive(element);
968} or
969{ find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element); }
970/**
971 * An element must be an instance of type "CommSubsystem class DefinedPart".
972 */
973private pattern mustInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
974 Type.name(type,"CommSubsystem class DefinedPart");
975 find directInstanceOf(problem,interpretation,element,type);
976}
977private pattern scopeDisallowsNewCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
978 find interpretation(problem,interpretation);
979 PartialInterpretation.scopes(interpretation,scope);
980 Scope.targetTypeInterpretation(scope,typeInterpretation);
981 Scope.maxNewElements(scope,0);
982 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
983 Type.name(type,"CommSubsystem class DefinedPart");
984}
985
986/**
987 * An element may be an instance of type "CommSubsystem class DefinedPart".
988 */
989private pattern mayInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
990{ find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,element); }
991/**
992 * An element must be an instance of type "CommSubsystem class UndefinedPart".
993 */
994private pattern mustInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
995 Type.name(type,"CommSubsystem class UndefinedPart");
996 find directInstanceOf(problem,interpretation,element,type);
997}
998private pattern scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
999 find interpretation(problem,interpretation);
1000 PartialInterpretation.scopes(interpretation,scope);
1001 Scope.targetTypeInterpretation(scope,typeInterpretation);
1002 Scope.maxNewElements(scope,0);
1003 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1004 Type.name(type,"CommSubsystem class UndefinedPart");
1005}
1006
1007/**
1008 * An element may be an instance of type "CommSubsystem class UndefinedPart".
1009 */
1010private pattern mayInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1011{
1012 find interpretation(problem,interpretation);
1013 PartialInterpretation.newElements(interpretation,element);
1014 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
1015 neg find mustInstanceOfPayload_class(problem,interpretation,element);
1016 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
1017 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
1018 neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation);
1019 neg find isPrimitive(element);
1020} or {
1021 find interpretation(problem,interpretation);
1022 PartialInterpretation.openWorldElements(interpretation,element);
1023 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
1024 neg find mustInstanceOfPayload_class(problem,interpretation,element);
1025 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
1026 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
1027 neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation);
1028 neg find isPrimitive(element);
1029} or
1030{ find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); }
1031
1032//////////
1033// 1.2 Relation Declaration Indexers
1034//////////
1035/**
1036 * Matcher for detecting tuples t where []groundStationNetwork reference ConstellationMission(source,target)
1037 */
1038private pattern mustInRelationgroundStationNetwork_reference_ConstellationMission(
1039 problem:LogicProblem, interpretation:PartialInterpretation,
1040 source: DefinedElement, target:DefinedElement)
1041{
1042 find interpretation(problem,interpretation);
1043 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1044 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission");
1045 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1046 BinaryElementRelationLink.param1(link,source);
1047 BinaryElementRelationLink.param2(link,target);
1048}
1049/**
1050 * Matcher for detecting tuples t where <>groundStationNetwork reference ConstellationMission(source,target)
1051 */
1052private pattern mayInRelationgroundStationNetwork_reference_ConstellationMission(
1053 problem:LogicProblem, interpretation:PartialInterpretation,
1054 source: DefinedElement, target:DefinedElement)
1055{
1056 find interpretation(problem,interpretation);
1057 // The two endpoint of the link have to exist
1058 find mayExist(problem, interpretation, source);
1059 find mayExist(problem, interpretation, target);
1060 // Type consistency
1061 find mayInstanceOfConstellationMission_class(problem,interpretation,source);
1062 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,target);
1063 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1064 // the upper bound of the multiplicity should be considered.
1065 numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,_);
1066 check(numberOfExistingReferences < 1);
1067 // The reference is containment, then a new reference cannot be create if:
1068 // 1. Multiple parents
1069 neg find mustContains4(problem,interpretation,_,target);
1070 // 2. Circle in the containment hierarchy
1071 neg find mustTransitiveContains(source,target);
1072} or {
1073 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target);
1074}
1075/**
1076 * Matcher for detecting tuples t where []spacecraft reference ConstellationMission(source,target)
1077 */
1078private pattern mustInRelationspacecraft_reference_ConstellationMission(
1079 problem:LogicProblem, interpretation:PartialInterpretation,
1080 source: DefinedElement, target:DefinedElement)
1081{
1082 find interpretation(problem,interpretation);
1083 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1084 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission");
1085 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1086 BinaryElementRelationLink.param1(link,source);
1087 BinaryElementRelationLink.param2(link,target);
1088}
1089/**
1090 * Matcher for detecting tuples t where <>spacecraft reference ConstellationMission(source,target)
1091 */
1092private pattern mayInRelationspacecraft_reference_ConstellationMission(
1093 problem:LogicProblem, interpretation:PartialInterpretation,
1094 source: DefinedElement, target:DefinedElement)
1095{
1096 find interpretation(problem,interpretation);
1097 // The two endpoint of the link have to exist
1098 find mayExist(problem, interpretation, source);
1099 find mayExist(problem, interpretation, target);
1100 // Type consistency
1101 find mayInstanceOfConstellationMission_class(problem,interpretation,source);
1102 find mayInstanceOfSpacecraft_class(problem,interpretation,target);
1103 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1104 // the upper bound of the multiplicity should be considered.
1105 numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,_);
1106 check(numberOfExistingReferences < 50);
1107 // The reference is containment, then a new reference cannot be create if:
1108 // 1. Multiple parents
1109 neg find mustContains4(problem,interpretation,_,target);
1110 // 2. Circle in the containment hierarchy
1111 neg find mustTransitiveContains(source,target);
1112} or {
1113 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target);
1114}
1115/**
1116 * Matcher for detecting tuples t where []commSubsystem reference CommunicatingElement(source,target)
1117 */
1118private pattern mustInRelationcommSubsystem_reference_CommunicatingElement(
1119 problem:LogicProblem, interpretation:PartialInterpretation,
1120 source: DefinedElement, target:DefinedElement)
1121{
1122 find interpretation(problem,interpretation);
1123 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1124 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement");
1125 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1126 BinaryElementRelationLink.param1(link,source);
1127 BinaryElementRelationLink.param2(link,target);
1128}
1129/**
1130 * Matcher for detecting tuples t where <>commSubsystem reference CommunicatingElement(source,target)
1131 */
1132private pattern mayInRelationcommSubsystem_reference_CommunicatingElement(
1133 problem:LogicProblem, interpretation:PartialInterpretation,
1134 source: DefinedElement, target:DefinedElement)
1135{
1136 find interpretation(problem,interpretation);
1137 // The two endpoint of the link have to exist
1138 find mayExist(problem, interpretation, source);
1139 find mayExist(problem, interpretation, target);
1140 // Type consistency
1141 find mayInstanceOfCommunicatingElement_class(problem,interpretation,source);
1142 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1143 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1144 // the upper bound of the multiplicity should be considered.
1145 numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,_);
1146 check(numberOfExistingReferences < 2);
1147 // The reference is containment, then a new reference cannot be create if:
1148 // 1. Multiple parents
1149 neg find mustContains4(problem,interpretation,_,target);
1150 // 2. Circle in the containment hierarchy
1151 neg find mustTransitiveContains(source,target);
1152} or {
1153 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target);
1154}
1155/**
1156 * Matcher for detecting tuples t where []communicationLink reference CommunicatingElement(source,target)
1157 */
1158private pattern mustInRelationcommunicationLink_reference_CommunicatingElement(
1159 problem:LogicProblem, interpretation:PartialInterpretation,
1160 source: DefinedElement, target:DefinedElement)
1161{
1162 find interpretation(problem,interpretation);
1163 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1164 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"communicationLink reference CommunicatingElement");
1165 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1166 BinaryElementRelationLink.param1(link,source);
1167 BinaryElementRelationLink.param2(link,target);
1168}
1169/**
1170 * Matcher for detecting tuples t where <>communicationLink reference CommunicatingElement(source,target)
1171 */
1172private pattern mayInRelationcommunicationLink_reference_CommunicatingElement(
1173 problem:LogicProblem, interpretation:PartialInterpretation,
1174 source: DefinedElement, target:DefinedElement)
1175{
1176 find interpretation(problem,interpretation);
1177 // The two endpoint of the link have to exist
1178 find mayExist(problem, interpretation, source);
1179 find mayExist(problem, interpretation, target);
1180 // Type consistency
1181 find mayInstanceOfCommunicatingElement_class(problem,interpretation,source);
1182 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,target);
1183 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1184 // the upper bound of the multiplicity should be considered.
1185 numberOfExistingReferences == count find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,_);
1186 check(numberOfExistingReferences < 1);
1187 // The reference is containment, then a new reference cannot be create if:
1188 // 1. Multiple parents
1189 neg find mustContains4(problem,interpretation,_,target);
1190 // 2. Circle in the containment hierarchy
1191 neg find mustTransitiveContains(source,target);
1192} or {
1193 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,target);
1194}
1195/**
1196 * Matcher for detecting tuples t where []payload reference Spacecraft(source,target)
1197 */
1198private pattern mustInRelationpayload_reference_Spacecraft(
1199 problem:LogicProblem, interpretation:PartialInterpretation,
1200 source: DefinedElement, target:DefinedElement)
1201{
1202 find interpretation(problem,interpretation);
1203 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1204 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"payload reference Spacecraft");
1205 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1206 BinaryElementRelationLink.param1(link,source);
1207 BinaryElementRelationLink.param2(link,target);
1208}
1209/**
1210 * Matcher for detecting tuples t where <>payload reference Spacecraft(source,target)
1211 */
1212private pattern mayInRelationpayload_reference_Spacecraft(
1213 problem:LogicProblem, interpretation:PartialInterpretation,
1214 source: DefinedElement, target:DefinedElement)
1215{
1216 find interpretation(problem,interpretation);
1217 // The two endpoint of the link have to exist
1218 find mayExist(problem, interpretation, source);
1219 find mayExist(problem, interpretation, target);
1220 // Type consistency
1221 find mayInstanceOfSpacecraft_class(problem,interpretation,source);
1222 find mayInstanceOfPayload_class(problem,interpretation,target);
1223 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1224 // the upper bound of the multiplicity should be considered.
1225 numberOfExistingReferences == count find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,_);
1226 check(numberOfExistingReferences < 1);
1227 // The reference is containment, then a new reference cannot be create if:
1228 // 1. Multiple parents
1229 neg find mustContains4(problem,interpretation,_,target);
1230 // 2. Circle in the containment hierarchy
1231 neg find mustTransitiveContains(source,target);
1232} or {
1233 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target);
1234}
1235/**
1236 * Matcher for detecting tuples t where []source reference DirectedCommunicationLink(source,target)
1237 */
1238private pattern mustInRelationsource_reference_DirectedCommunicationLink(
1239 problem:LogicProblem, interpretation:PartialInterpretation,
1240 source: DefinedElement, target:DefinedElement)
1241{
1242 find interpretation(problem,interpretation);
1243 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1244 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
1245 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1246 BinaryElementRelationLink.param1(link,source);
1247 BinaryElementRelationLink.param2(link,target);
1248}
1249/**
1250 * Matcher for detecting tuples t where <>source reference DirectedCommunicationLink(source,target)
1251 */
1252private pattern mayInRelationsource_reference_DirectedCommunicationLink(
1253 problem:LogicProblem, interpretation:PartialInterpretation,
1254 source: DefinedElement, target:DefinedElement)
1255{
1256 find interpretation(problem,interpretation);
1257 // The two endpoint of the link have to exist
1258 find mayExist(problem, interpretation, source);
1259 find mayExist(problem, interpretation, target);
1260 // Type consistency
1261 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,source);
1262 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1263 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1264 // the upper bound of the multiplicity should be considered.
1265 numberOfExistingReferences == count find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,source,_);
1266 check(numberOfExistingReferences < 1);
1267} or {
1268 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,source,target);
1269}
1270/**
1271 * Matcher for detecting tuples t where []target reference DirectedCommunicationLink(source,target)
1272 */
1273private pattern mustInRelationtarget_reference_DirectedCommunicationLink(
1274 problem:LogicProblem, interpretation:PartialInterpretation,
1275 source: DefinedElement, target:DefinedElement)
1276{
1277 find interpretation(problem,interpretation);
1278 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1279 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
1280 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1281 BinaryElementRelationLink.param1(link,source);
1282 BinaryElementRelationLink.param2(link,target);
1283}
1284/**
1285 * Matcher for detecting tuples t where <>target reference DirectedCommunicationLink(source,target)
1286 */
1287private pattern mayInRelationtarget_reference_DirectedCommunicationLink(
1288 problem:LogicProblem, interpretation:PartialInterpretation,
1289 source: DefinedElement, target:DefinedElement)
1290{
1291 find interpretation(problem,interpretation);
1292 // The two endpoint of the link have to exist
1293 find mayExist(problem, interpretation, source);
1294 find mayExist(problem, interpretation, target);
1295 // Type consistency
1296 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,source);
1297 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1298 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1299 // the upper bound of the multiplicity should be considered.
1300 numberOfExistingReferences == count find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,source,_);
1301 check(numberOfExistingReferences < 1);
1302} or {
1303 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,source,target);
1304}
1305/**
1306 * Matcher for detecting tuples t where []kind attribute Spacecraft(source,target)
1307 */
1308 private pattern mustInRelationkind_attribute_Spacecraft(
1309 problem:LogicProblem, interpretation:PartialInterpretation,
1310 source: DefinedElement, target:DefinedElement)
1311 {
1312 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftOfKind(problem,interpretation,source,target);
1313 }
1314/**
1315 * Matcher for detecting tuples t where []kind attribute Spacecraft(source,target)
1316 */
1317 private pattern mayInRelationkind_attribute_Spacecraft(
1318 problem:LogicProblem, interpretation:PartialInterpretation,
1319 source: DefinedElement, target:DefinedElement)
1320 {
1321 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftOfKind(problem,interpretation,source,target);
1322 }
1323/**
1324 * Matcher for detecting tuples t where []band attribute CommSubsystem(source,target)
1325 */
1326private pattern mustInRelationband_attribute_CommSubsystem(
1327 problem:LogicProblem, interpretation:PartialInterpretation,
1328 source: DefinedElement, target:DefinedElement)
1329{
1330 find interpretation(problem,interpretation);
1331 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1332 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"band attribute CommSubsystem");
1333 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1334 BinaryElementRelationLink.param1(link,source);
1335 BinaryElementRelationLink.param2(link,target);
1336}
1337/**
1338 * Matcher for detecting tuples t where <>band attribute CommSubsystem(source,target)
1339 */
1340private pattern mayInRelationband_attribute_CommSubsystem(
1341 problem:LogicProblem, interpretation:PartialInterpretation,
1342 source: DefinedElement, target:DefinedElement)
1343{
1344 find interpretation(problem,interpretation);
1345 // The two endpoint of the link have to exist
1346 find mayExist(problem, interpretation, source);
1347 find mayExist(problem, interpretation, target);
1348 // Type consistency
1349 find mayInstanceOfCommSubsystem_class(problem,interpretation,source);
1350 find mayInstanceOfTransceiverBand_enum(problem,interpretation,target);
1351 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1352 // the upper bound of the multiplicity should be considered.
1353 numberOfExistingReferences == count find mustInRelationband_attribute_CommSubsystem(problem,interpretation,source,_);
1354 check(numberOfExistingReferences < 1);
1355} or {
1356 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,source,target);
1357}
1358/**
1359 * Matcher for detecting tuples t where []gain attribute CommSubsystem(source,target)
1360 */
1361private pattern mustInRelationgain_attribute_CommSubsystem(
1362 problem:LogicProblem, interpretation:PartialInterpretation,
1363 source: DefinedElement, target:DefinedElement)
1364{
1365 find interpretation(problem,interpretation);
1366 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1367 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"gain attribute CommSubsystem");
1368 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1369 BinaryElementRelationLink.param1(link,source);
1370 BinaryElementRelationLink.param2(link,target);
1371}
1372/**
1373 * Matcher for detecting tuples t where <>gain attribute CommSubsystem(source,target)
1374 */
1375private pattern mayInRelationgain_attribute_CommSubsystem(
1376 problem:LogicProblem, interpretation:PartialInterpretation,
1377 source: DefinedElement, target:DefinedElement)
1378{
1379 find interpretation(problem,interpretation);
1380 // The two endpoint of the link have to exist
1381 find mayExist(problem, interpretation, source);
1382 find mayExist(problem, interpretation, target);
1383 // Type consistency
1384 find mayInstanceOfCommSubsystem_class(problem,interpretation,source);
1385 find mayInstanceOfAntennaGain_enum(problem,interpretation,target);
1386 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1387 // the upper bound of the multiplicity should be considered.
1388 numberOfExistingReferences == count find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,source,_);
1389 check(numberOfExistingReferences < 1);
1390} or {
1391 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,source,target);
1392}
1393
1394//////////
1395// 1.3 Relation Definition Indexers
1396//////////
1397// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement
1398private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1399 problem:LogicProblem, interpretation:PartialInterpretation,
1400 var_Link)
1401{
1402 find interpretation(problem,interpretation);
1403 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1404 // Link is exported
1405 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1406 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1407 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1408 find mustEquivalent(problem, interpretation, var_virtual0, var_Link);
1409 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1410 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1411 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1412 find mustEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
1413 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1414 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1415 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1416 find mustEquivalent(problem, interpretation, var_virtual2, var_SourceComm);
1417 neg find mayEquivalent(problem, interpretation, var_Element, var_SourceElement);
1418}
1419private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1420 problem:LogicProblem, interpretation:PartialInterpretation,
1421 var_Link)
1422{
1423 find interpretation(problem,interpretation);
1424 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1425 // Link is exported
1426 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1427 find mayInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1428 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1429 find mayEquivalent(problem, interpretation, var_virtual0, var_Link);
1430 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1431 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1432 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1433 find mayEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
1434 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1435 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1436 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1437 find mayEquivalent(problem, interpretation, var_virtual2, var_SourceComm);
1438 neg find mustEquivalent(problem, interpretation, var_Element, var_SourceElement);
1439}
1440private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1441 problem:LogicProblem, interpretation:PartialInterpretation,
1442 var_Link)
1443{
1444 find interpretation(problem,interpretation);
1445 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1446 // Link is exported
1447 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1448 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1449 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1450 find mustEquivalent(problem, interpretation, var_virtual0, var_Link);
1451 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1452 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1453 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1454 find mustEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
1455 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1456 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1457 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1458 find mustEquivalent(problem, interpretation, var_virtual2, var_SourceComm);
1459 neg find mustEquivalent(problem, interpretation, var_Element, var_SourceElement);
1460}
1461// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads
1462private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1463 problem:LogicProblem, interpretation:PartialInterpretation,
1464 var_Mission)
1465{
1466 find interpretation(problem,interpretation);
1467 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1468 // Mission is exported
1469 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1470 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1471}
1472private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1473 problem:LogicProblem, interpretation:PartialInterpretation,
1474 var_Mission)
1475{
1476 find interpretation(problem,interpretation);
1477 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1478 // Mission is exported
1479 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1480 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1481}
1482private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1483 problem:LogicProblem, interpretation:PartialInterpretation,
1484 var_Mission)
1485{
1486 find interpretation(problem,interpretation);
1487 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1488 // Mission is exported
1489 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1490 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1491}
1492// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries atLeastTwoInterferometryPayloads
1493private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1494 problem:LogicProblem, interpretation:PartialInterpretation,
1495 var_Mission)
1496{
1497 find interpretation(problem,interpretation);
1498 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1499 // Mission is exported
1500 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1501 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1502 neg find mayEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2);
1503}
1504private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1505 problem:LogicProblem, interpretation:PartialInterpretation,
1506 var_Mission)
1507{
1508 find interpretation(problem,interpretation);
1509 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1510 // Mission is exported
1511 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1512 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1513 neg find mustEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2);
1514}
1515private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1516 problem:LogicProblem, interpretation:PartialInterpretation,
1517 var_Mission)
1518{
1519 find interpretation(problem,interpretation);
1520 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1521 // Mission is exported
1522 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1523 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1524 neg find mustEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2);
1525}
1526// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries spacecraftWithInterferometryPayload
1527private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1528 problem:LogicProblem, interpretation:PartialInterpretation,
1529 var_Mission, var_Spacecraft)
1530{
1531 find interpretation(problem,interpretation);
1532 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1533 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1534 // Mission is exported
1535 // Spacecraft is exported
1536 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1537 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1538 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1539 find mustEquivalent(problem, interpretation, var_virtual0, var_Spacecraft);
1540 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1541 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1542 find mustInstanceOfPayload_class(problem,interpretation,var_virtual1);
1543 find mustEquivalent(problem, interpretation, var_virtual1, var_Payload);
1544 find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1545}
1546private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1547 problem:LogicProblem, interpretation:PartialInterpretation,
1548 var_Mission, var_Spacecraft)
1549{
1550 find interpretation(problem,interpretation);
1551 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1552 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1553 // Mission is exported
1554 // Spacecraft is exported
1555 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1556 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1557 find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1558 find mayEquivalent(problem, interpretation, var_virtual0, var_Spacecraft);
1559 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1560 find mayInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1561 find mayInstanceOfPayload_class(problem,interpretation,var_virtual1);
1562 find mayEquivalent(problem, interpretation, var_virtual1, var_Payload);
1563 find mayInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1564}
1565private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1566 problem:LogicProblem, interpretation:PartialInterpretation,
1567 var_Mission, var_Spacecraft)
1568{
1569 find interpretation(problem,interpretation);
1570 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1571 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1572 // Mission is exported
1573 // Spacecraft is exported
1574 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1575 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1576 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1577 find mustEquivalent(problem, interpretation, var_virtual0, var_Spacecraft);
1578 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1579 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1580 find mustInstanceOfPayload_class(problem,interpretation,var_virtual1);
1581 find mustEquivalent(problem, interpretation, var_virtual1, var_Payload);
1582 find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1583}
1584// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation
1585private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1586 problem:LogicProblem, interpretation:PartialInterpretation,
1587 var_Spacecraft)
1588{
1589 find interpretation(problem,interpretation);
1590 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1591 // Spacecraft is exported
1592 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1593 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1594 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1595 find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1596 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1597 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1598 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1599 find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1600 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1601}
1602private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1603 problem:LogicProblem, interpretation:PartialInterpretation,
1604 var_Spacecraft)
1605{
1606 find interpretation(problem,interpretation);
1607 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1608 // Spacecraft is exported
1609 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1610 find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1611 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1612 find mayEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1613 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1614 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1615 find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1616 find mayEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1617 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1618}
1619private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1620 problem:LogicProblem, interpretation:PartialInterpretation,
1621 var_Spacecraft)
1622{
1623 find interpretation(problem,interpretation);
1624 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1625 // Spacecraft is exported
1626 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1627 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1628 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1629 find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1630 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1631 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1632 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1633 find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1634 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1635}
1636// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries noPotentialLinkToGroundStation
1637private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(
1638 problem:LogicProblem, interpretation:PartialInterpretation,
1639 var_Spacecraft)
1640{
1641 find interpretation(problem,interpretation);
1642 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1643 // Spacecraft is exported
1644 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1645 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1646 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1647 find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1648 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1649 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1650 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1651 find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1652 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation);
1653}
1654private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(
1655 problem:LogicProblem, interpretation:PartialInterpretation,
1656 var_Spacecraft)
1657{
1658 find interpretation(problem,interpretation);
1659 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1660 // Spacecraft is exported
1661 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1662 find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1663 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1664 find mayEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1665 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1666 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1667 find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1668 find mayEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1669 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation);
1670}
1671private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(
1672 problem:LogicProblem, interpretation:PartialInterpretation,
1673 var_Spacecraft)
1674{
1675 find interpretation(problem,interpretation);
1676 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1677 // Spacecraft is exported
1678 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1679 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1680 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1681 find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1682 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1683 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1684 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1685 find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1686 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation);
1687}
1688// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries indirectLinkAllowed
1689private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(
1690 problem:LogicProblem, interpretation:PartialInterpretation,
1691 var_From, var_To)
1692{
1693 find interpretation(problem,interpretation);
1694 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1695 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1696 // From is exported
1697 // To is exported
1698 find twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To);
1699}
1700private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(
1701 problem:LogicProblem, interpretation:PartialInterpretation,
1702 var_From, var_To)
1703{
1704 find interpretation(problem,interpretation);
1705 find mayInstanceOfSpacecraft_class(problem,interpretation,var_From);
1706 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1707 // From is exported
1708 // To is exported
1709 find twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To);
1710}
1711private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(
1712 problem:LogicProblem, interpretation:PartialInterpretation,
1713 var_From, var_To)
1714{
1715 find interpretation(problem,interpretation);
1716 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1717 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1718 // From is exported
1719 // To is exported
1720 find twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To);
1721}
1722// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries linkAllowed
1723private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(
1724 problem:LogicProblem, interpretation:PartialInterpretation,
1725 var_From, var_To)
1726{
1727 find interpretation(problem,interpretation);
1728 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1729 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1730 // From is exported
1731 // To is exported
1732 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1733 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From);
1734}or{
1735 find interpretation(problem,interpretation);
1736 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1737 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1738 // From is exported
1739 // To is exported
1740 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1741 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,var_virtual0);
1742 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1743}or{
1744 find interpretation(problem,interpretation);
1745 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1746 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1747 // From is exported
1748 // To is exported
1749 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1750 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1751 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_To);
1752}
1753private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(
1754 problem:LogicProblem, interpretation:PartialInterpretation,
1755 var_From, var_To)
1756{
1757 find interpretation(problem,interpretation);
1758 find mayInstanceOfSpacecraft_class(problem,interpretation,var_From);
1759 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1760 // From is exported
1761 // To is exported
1762 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1763 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From);
1764}or{
1765 find interpretation(problem,interpretation);
1766 find mayInstanceOfSpacecraft_class(problem,interpretation,var_From);
1767 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1768 // From is exported
1769 // To is exported
1770 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1771 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,var_virtual0);
1772 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1773}or{
1774 find interpretation(problem,interpretation);
1775 find mayInstanceOfSpacecraft_class(problem,interpretation,var_From);
1776 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1777 // From is exported
1778 // To is exported
1779 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1780 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1781 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_To);
1782}
1783private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(
1784 problem:LogicProblem, interpretation:PartialInterpretation,
1785 var_From, var_To)
1786{
1787 find interpretation(problem,interpretation);
1788 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1789 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1790 // From is exported
1791 // To is exported
1792 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1793 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From);
1794}or{
1795 find interpretation(problem,interpretation);
1796 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1797 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1798 // From is exported
1799 // To is exported
1800 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1801 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,var_virtual0);
1802 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1803}or{
1804 find interpretation(problem,interpretation);
1805 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1806 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1807 // From is exported
1808 // To is exported
1809 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To,_var__0);
1810 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From);
1811 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_To);
1812}
1813private pattern twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) {
1814 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To);
1815}
1816private pattern twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) {
1817 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To);
1818}
1819private pattern twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) {
1820 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To);
1821}
1822// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries matchingAntenna
1823private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(
1824 problem:LogicProblem, interpretation:PartialInterpretation,
1825 var_From, var_To, var_Band)
1826{
1827 find interpretation(problem,interpretation);
1828 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1829 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1830 // type constraint is enforced by construction
1831 // From is exported
1832 // To is exported
1833 // Band is exported
1834 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1835 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0);
1836 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1837 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual0,var_virtual1);
1838 // type constraint is enforced by construction
1839 find mustEquivalent(problem, interpretation, var_virtual1, var_Band);
1840 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1841 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual2);
1842 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1843 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual2,var_virtual3);
1844 // type constraint is enforced by construction
1845 find mustEquivalent(problem, interpretation, var_virtual3, var_Band);
1846 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1847 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual4);
1848 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual4);
1849 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual4,var_virtual5);
1850 // type constraint is enforced by construction
1851 find mustEquivalent(problem, interpretation, var_virtual5, var_Gain);
1852 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1853 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual6);
1854 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual6);
1855 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual6,var_virtual7);
1856 // type constraint is enforced by construction
1857 find mustEquivalent(problem, interpretation, var_virtual7, var_Gain);
1858}
1859private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(
1860 problem:LogicProblem, interpretation:PartialInterpretation,
1861 var_From, var_To, var_Band)
1862{
1863 find interpretation(problem,interpretation);
1864 find mayInstanceOfSpacecraft_class(problem,interpretation,var_From);
1865 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1866 // type constraint is enforced by construction
1867 // From is exported
1868 // To is exported
1869 // Band is exported
1870 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1871 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0);
1872 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1873 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual0,var_virtual1);
1874 // type constraint is enforced by construction
1875 find mayEquivalent(problem, interpretation, var_virtual1, var_Band);
1876 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1877 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual2);
1878 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1879 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual2,var_virtual3);
1880 // type constraint is enforced by construction
1881 find mayEquivalent(problem, interpretation, var_virtual3, var_Band);
1882 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1883 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual4);
1884 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual4);
1885 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual4,var_virtual5);
1886 // type constraint is enforced by construction
1887 find mayEquivalent(problem, interpretation, var_virtual5, var_Gain);
1888 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1889 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual6);
1890 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual6);
1891 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual6,var_virtual7);
1892 // type constraint is enforced by construction
1893 find mayEquivalent(problem, interpretation, var_virtual7, var_Gain);
1894}
1895private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(
1896 problem:LogicProblem, interpretation:PartialInterpretation,
1897 var_From, var_To, var_Band)
1898{
1899 find interpretation(problem,interpretation);
1900 find mustInstanceOfSpacecraft_class(problem,interpretation,var_From);
1901 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1902 // type constraint is enforced by construction
1903 // From is exported
1904 // To is exported
1905 // Band is exported
1906 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1907 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0);
1908 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1909 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual0,var_virtual1);
1910 // type constraint is enforced by construction
1911 find mustEquivalent(problem, interpretation, var_virtual1, var_Band);
1912 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1913 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual2);
1914 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1915 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual2,var_virtual3);
1916 // type constraint is enforced by construction
1917 find mustEquivalent(problem, interpretation, var_virtual3, var_Band);
1918 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From);
1919 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual4);
1920 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual4);
1921 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual4,var_virtual5);
1922 // type constraint is enforced by construction
1923 find mustEquivalent(problem, interpretation, var_virtual5, var_Gain);
1924 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To);
1925 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual6);
1926 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual6);
1927 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_virtual6,var_virtual7);
1928 // type constraint is enforced by construction
1929 find mustEquivalent(problem, interpretation, var_virtual7, var_Gain);
1930}
1931// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSat3U
1932private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(
1933 problem:LogicProblem, interpretation:PartialInterpretation,
1934 var_Sat)
1935{
1936 find interpretation(problem,interpretation);
1937 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1938 // Sat is exported
1939 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1940}
1941private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(
1942 problem:LogicProblem, interpretation:PartialInterpretation,
1943 var_Sat)
1944{
1945 find interpretation(problem,interpretation);
1946 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1947 // Sat is exported
1948 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1949}
1950private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(
1951 problem:LogicProblem, interpretation:PartialInterpretation,
1952 var_Sat)
1953{
1954 find interpretation(problem,interpretation);
1955 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1956 // Sat is exported
1957 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
1958}
1959// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLoop
1960private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1961 problem:LogicProblem, interpretation:PartialInterpretation,
1962 var_Element)
1963{
1964 find interpretation(problem,interpretation);
1965 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1966 // Element is exported
1967 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1968}
1969private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1970 problem:LogicProblem, interpretation:PartialInterpretation,
1971 var_Element)
1972{
1973 find interpretation(problem,interpretation);
1974 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1975 // Element is exported
1976 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1977}
1978private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1979 problem:LogicProblem, interpretation:PartialInterpretation,
1980 var_Element)
1981{
1982 find interpretation(problem,interpretation);
1983 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1984 // Element is exported
1985 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1986}
1987// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries indirectCommunicationLink
1988private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
1989 problem:LogicProblem, interpretation:PartialInterpretation,
1990 var_Source, var_Target)
1991{
1992 find interpretation(problem,interpretation);
1993 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1994 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1995 // Source is exported
1996 // Target is exported
1997 find twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
1998}
1999private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
2000 problem:LogicProblem, interpretation:PartialInterpretation,
2001 var_Source, var_Target)
2002{
2003 find interpretation(problem,interpretation);
2004 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2005 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2006 // Source is exported
2007 // Target is exported
2008 find twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
2009}
2010private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
2011 problem:LogicProblem, interpretation:PartialInterpretation,
2012 var_Source, var_Target)
2013{
2014 find interpretation(problem,interpretation);
2015 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2016 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2017 // Source is exported
2018 // Target is exported
2019 find twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
2020}
2021// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries directCommunicationLink
2022private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
2023 problem:LogicProblem, interpretation:PartialInterpretation,
2024 var_Source, var_Target)
2025{
2026 find interpretation(problem,interpretation);
2027 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2028 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2029 // Source is exported
2030 // Target is exported
2031 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2032 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2033 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2034 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2035 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2036 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2037 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2038 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2039 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2040 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
2041 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2042 find mustEquivalent(problem, interpretation, var_virtual2, var_SourceSubsystem);
2043 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2044 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2045 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2046 find mustEquivalent(problem, interpretation, var_virtual3, var_TargetSubsystem);
2047}
2048private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
2049 problem:LogicProblem, interpretation:PartialInterpretation,
2050 var_Source, var_Target)
2051{
2052 find interpretation(problem,interpretation);
2053 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2054 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2055 // Source is exported
2056 // Target is exported
2057 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2058 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2059 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2060 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2061 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2062 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2063 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2064 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2065 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2066 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
2067 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2068 find mayEquivalent(problem, interpretation, var_virtual2, var_SourceSubsystem);
2069 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2070 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2071 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2072 find mayEquivalent(problem, interpretation, var_virtual3, var_TargetSubsystem);
2073}
2074private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
2075 problem:LogicProblem, interpretation:PartialInterpretation,
2076 var_Source, var_Target)
2077{
2078 find interpretation(problem,interpretation);
2079 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2080 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2081 // Source is exported
2082 // Target is exported
2083 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2084 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2085 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2086 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2087 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2088 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2089 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2090 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2091 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
2092 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
2093 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2094 find mustEquivalent(problem, interpretation, var_virtual2, var_SourceSubsystem);
2095 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2096 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2097 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2098 find mustEquivalent(problem, interpretation, var_virtual3, var_TargetSubsystem);
2099}
2100private pattern twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
2101 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
2102}
2103private pattern twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
2104 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
2105}
2106private pattern twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
2107 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
2108}
2109// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand
2110private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
2111 problem:LogicProblem, interpretation:PartialInterpretation,
2112 var_Link)
2113{
2114 find interpretation(problem,interpretation);
2115 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2116 // Link is exported
2117 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2118 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2119 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2120 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2121 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2122 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2123 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2124 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2125 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2126 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2127 // type constraint is enforced by construction
2128 find mustEquivalent(problem, interpretation, var_virtual2, var_Band);
2129 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
2130}
2131private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
2132 problem:LogicProblem, interpretation:PartialInterpretation,
2133 var_Link)
2134{
2135 find interpretation(problem,interpretation);
2136 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2137 // Link is exported
2138 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2139 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2140 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2141 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2142 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2143 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2144 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2145 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2146 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2147 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2148 // type constraint is enforced by construction
2149 find mayEquivalent(problem, interpretation, var_virtual2, var_Band);
2150 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
2151}
2152private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
2153 problem:LogicProblem, interpretation:PartialInterpretation,
2154 var_Link)
2155{
2156 find interpretation(problem,interpretation);
2157 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2158 // Link is exported
2159 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2160 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2161 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2162 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2163 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2164 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2165 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2166 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2167 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2168 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2169 // type constraint is enforced by construction
2170 find mustEquivalent(problem, interpretation, var_virtual2, var_Band);
2171 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
2172}
2173// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBand
2174private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
2175 problem:LogicProblem, interpretation:PartialInterpretation,
2176 var_Comm, var_Band)
2177{
2178 find interpretation(problem,interpretation);
2179 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2180 // type constraint is enforced by construction
2181 // Comm is exported
2182 // Band is exported
2183 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2184 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2185 // type constraint is enforced by construction
2186 find mustEquivalent(problem, interpretation, var_virtual0, var_Band);
2187}
2188private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
2189 problem:LogicProblem, interpretation:PartialInterpretation,
2190 var_Comm, var_Band)
2191{
2192 find interpretation(problem,interpretation);
2193 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2194 // type constraint is enforced by construction
2195 // Comm is exported
2196 // Band is exported
2197 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2198 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2199 // type constraint is enforced by construction
2200 find mayEquivalent(problem, interpretation, var_virtual0, var_Band);
2201}
2202private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
2203 problem:LogicProblem, interpretation:PartialInterpretation,
2204 var_Comm, var_Band)
2205{
2206 find interpretation(problem,interpretation);
2207 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2208 // type constraint is enforced by construction
2209 // Comm is exported
2210 // Band is exported
2211 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2212 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2213 // type constraint is enforced by construction
2214 find mustEquivalent(problem, interpretation, var_virtual0, var_Band);
2215}
2216// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain
2217private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
2218 problem:LogicProblem, interpretation:PartialInterpretation,
2219 var_Link)
2220{
2221 find interpretation(problem,interpretation);
2222 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2223 // Link is exported
2224 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2225 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2226 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2227 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2228 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2229 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2230 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2231 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2232 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2233 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2234 // type constraint is enforced by construction
2235 find mustEquivalent(problem, interpretation, var_virtual2, var_Gain);
2236 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
2237}
2238private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
2239 problem:LogicProblem, interpretation:PartialInterpretation,
2240 var_Link)
2241{
2242 find interpretation(problem,interpretation);
2243 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2244 // Link is exported
2245 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2246 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2247 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2248 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2249 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2250 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2251 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2252 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2253 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2254 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2255 // type constraint is enforced by construction
2256 find mayEquivalent(problem, interpretation, var_virtual2, var_Gain);
2257 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
2258}
2259private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
2260 problem:LogicProblem, interpretation:PartialInterpretation,
2261 var_Link)
2262{
2263 find interpretation(problem,interpretation);
2264 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2265 // Link is exported
2266 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2267 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
2268 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2269 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
2270 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2271 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2272 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2273 find mustEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
2274 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
2275 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
2276 // type constraint is enforced by construction
2277 find mustEquivalent(problem, interpretation, var_virtual2, var_Gain);
2278 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
2279}
2280// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGain
2281private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
2282 problem:LogicProblem, interpretation:PartialInterpretation,
2283 var_Comm, var_Gain)
2284{
2285 find interpretation(problem,interpretation);
2286 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2287 // type constraint is enforced by construction
2288 // Comm is exported
2289 // Gain is exported
2290 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2291 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2292 // type constraint is enforced by construction
2293 find mustEquivalent(problem, interpretation, var_virtual0, var_Gain);
2294}
2295private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
2296 problem:LogicProblem, interpretation:PartialInterpretation,
2297 var_Comm, var_Gain)
2298{
2299 find interpretation(problem,interpretation);
2300 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2301 // type constraint is enforced by construction
2302 // Comm is exported
2303 // Gain is exported
2304 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2305 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2306 // type constraint is enforced by construction
2307 find mayEquivalent(problem, interpretation, var_virtual0, var_Gain);
2308}
2309private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
2310 problem:LogicProblem, interpretation:PartialInterpretation,
2311 var_Comm, var_Gain)
2312{
2313 find interpretation(problem,interpretation);
2314 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2315 // type constraint is enforced by construction
2316 // Comm is exported
2317 // Gain is exported
2318 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2319 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
2320 // type constraint is enforced by construction
2321 find mustEquivalent(problem, interpretation, var_virtual0, var_Gain);
2322}
2323// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow
2324private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
2325 problem:LogicProblem, interpretation:PartialInterpretation,
2326 var_Comm)
2327{
2328 find interpretation(problem,interpretation);
2329 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2330 // Comm is exported
2331 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2332 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2333 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2334 // type constraint is enforced by construction
2335 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2336 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
2337}
2338private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
2339 problem:LogicProblem, interpretation:PartialInterpretation,
2340 var_Comm)
2341{
2342 find interpretation(problem,interpretation);
2343 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2344 // Comm is exported
2345 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2346 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2347 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2348 // type constraint is enforced by construction
2349 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2350 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
2351}
2352private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
2353 problem:LogicProblem, interpretation:PartialInterpretation,
2354 var_Comm)
2355{
2356 find interpretation(problem,interpretation);
2357 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2358 // Comm is exported
2359 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2360 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2361 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2362 // type constraint is enforced by construction
2363 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2364 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
2365}
2366// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainLow
2367private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
2368 problem:LogicProblem, interpretation:PartialInterpretation,
2369 var_Comm)
2370{
2371 find interpretation(problem,interpretation);
2372 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2373 // Comm is exported
2374 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2375 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2376 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2377 // type constraint is enforced by construction
2378 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2379}
2380private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
2381 problem:LogicProblem, interpretation:PartialInterpretation,
2382 var_Comm)
2383{
2384 find interpretation(problem,interpretation);
2385 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2386 // Comm is exported
2387 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2388 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2389 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2390 // type constraint is enforced by construction
2391 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2392}
2393private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
2394 problem:LogicProblem, interpretation:PartialInterpretation,
2395 var_Comm)
2396{
2397 find interpretation(problem,interpretation);
2398 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2399 // Comm is exported
2400 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2401 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2402 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2403 // type constraint is enforced by construction
2404 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2405}
2406// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium
2407private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
2408 problem:LogicProblem, interpretation:PartialInterpretation,
2409 var_Comm)
2410{
2411 find interpretation(problem,interpretation);
2412 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2413 // Comm is exported
2414 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2415 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2416 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2417 // type constraint is enforced by construction
2418 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2419 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2420}
2421private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
2422 problem:LogicProblem, interpretation:PartialInterpretation,
2423 var_Comm)
2424{
2425 find interpretation(problem,interpretation);
2426 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2427 // Comm is exported
2428 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2429 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2430 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2431 // type constraint is enforced by construction
2432 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2433 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2434}
2435private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
2436 problem:LogicProblem, interpretation:PartialInterpretation,
2437 var_Comm)
2438{
2439 find interpretation(problem,interpretation);
2440 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2441 // Comm is exported
2442 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2443 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2444 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2445 // type constraint is enforced by construction
2446 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2447 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2448}
2449// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainMedium
2450private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2451 problem:LogicProblem, interpretation:PartialInterpretation,
2452 var_Comm)
2453{
2454 find interpretation(problem,interpretation);
2455 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2456 // Comm is exported
2457 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2458 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2459 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2460 // type constraint is enforced by construction
2461 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2462}
2463private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2464 problem:LogicProblem, interpretation:PartialInterpretation,
2465 var_Comm)
2466{
2467 find interpretation(problem,interpretation);
2468 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2469 // Comm is exported
2470 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2471 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2472 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2473 // type constraint is enforced by construction
2474 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2475}
2476private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2477 problem:LogicProblem, interpretation:PartialInterpretation,
2478 var_Comm)
2479{
2480 find interpretation(problem,interpretation);
2481 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2482 // Comm is exported
2483 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2484 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2485 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2486 // type constraint is enforced by construction
2487 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2488}
2489// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow
2490private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2491 problem:LogicProblem, interpretation:PartialInterpretation,
2492 var_Comm)
2493{
2494 find interpretation(problem,interpretation);
2495 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2496 // Comm is exported
2497 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2498 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2499 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2500 // type constraint is enforced by construction
2501 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2502 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2503 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2504 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2505 // type constraint is enforced by construction
2506 find mustEquivalent(problem, interpretation, var_virtual3, var_virtual2);
2507}
2508private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2509 problem:LogicProblem, interpretation:PartialInterpretation,
2510 var_Comm)
2511{
2512 find interpretation(problem,interpretation);
2513 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2514 // Comm is exported
2515 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2516 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2517 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2518 // type constraint is enforced by construction
2519 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2520 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2521 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2522 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2523 // type constraint is enforced by construction
2524 find mayEquivalent(problem, interpretation, var_virtual3, var_virtual2);
2525}
2526private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2527 problem:LogicProblem, interpretation:PartialInterpretation,
2528 var_Comm)
2529{
2530 find interpretation(problem,interpretation);
2531 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2532 // Comm is exported
2533 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2534 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2535 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2536 // type constraint is enforced by construction
2537 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2538 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2539 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2540 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2541 // type constraint is enforced by construction
2542 find mustEquivalent(problem, interpretation, var_virtual3, var_virtual2);
2543}
2544// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink
2545private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2546 problem:LogicProblem, interpretation:PartialInterpretation,
2547 var_Sat)
2548{
2549 find interpretation(problem,interpretation);
2550 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2551 // Sat is exported
2552 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2553 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2554 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2555 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceComm);
2556 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2557 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2558 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2559 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2560 find mustEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
2561 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2562 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2563 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2564 find mustEquivalent(problem, interpretation, var_virtual2, var_TargetComm);
2565 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2566 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2567 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2568 find mustEquivalent(problem, interpretation, var_virtual3, var_TargetComm);
2569 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2570}
2571private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2572 problem:LogicProblem, interpretation:PartialInterpretation,
2573 var_Sat)
2574{
2575 find interpretation(problem,interpretation);
2576 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2577 // Sat is exported
2578 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2579 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2580 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2581 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceComm);
2582 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2583 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2584 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2585 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2586 find mayEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
2587 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2588 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2589 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2590 find mayEquivalent(problem, interpretation, var_virtual2, var_TargetComm);
2591 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2592 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2593 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2594 find mayEquivalent(problem, interpretation, var_virtual3, var_TargetComm);
2595 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2596}
2597private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2598 problem:LogicProblem, interpretation:PartialInterpretation,
2599 var_Sat)
2600{
2601 find interpretation(problem,interpretation);
2602 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2603 // Sat is exported
2604 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2605 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2606 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2607 find mustEquivalent(problem, interpretation, var_virtual0, var_SourceComm);
2608 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2609 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2610 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2611 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2612 find mustEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
2613 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2614 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2615 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2616 find mustEquivalent(problem, interpretation, var_virtual2, var_TargetComm);
2617 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2618 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2619 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2620 find mustEquivalent(problem, interpretation, var_virtual3, var_TargetComm);
2621 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2622}
2623// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBandUhf
2624private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2625 problem:LogicProblem, interpretation:PartialInterpretation,
2626 var_Comm)
2627{
2628 find interpretation(problem,interpretation);
2629 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2630 // Comm is exported
2631 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2632 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2633 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2634 // type constraint is enforced by construction
2635 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2636}
2637private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2638 problem:LogicProblem, interpretation:PartialInterpretation,
2639 var_Comm)
2640{
2641 find interpretation(problem,interpretation);
2642 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2643 // Comm is exported
2644 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2645 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2646 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2647 // type constraint is enforced by construction
2648 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2649}
2650private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2651 problem:LogicProblem, interpretation:PartialInterpretation,
2652 var_Comm)
2653{
2654 find interpretation(problem,interpretation);
2655 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2656 // Comm is exported
2657 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2658 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2659 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2660 // type constraint is enforced by construction
2661 find mustEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2662}
2663// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries groundStationNetwork
2664private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2665 problem:LogicProblem, interpretation:PartialInterpretation,
2666 var_Network)
2667{
2668 find interpretation(problem,interpretation);
2669 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2670 // Network is exported
2671 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2672}
2673private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2674 problem:LogicProblem, interpretation:PartialInterpretation,
2675 var_Network)
2676{
2677 find interpretation(problem,interpretation);
2678 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2679 // Network is exported
2680 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2681}
2682private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2683 problem:LogicProblem, interpretation:PartialInterpretation,
2684 var_Network)
2685{
2686 find interpretation(problem,interpretation);
2687 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2688 // Network is exported
2689 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2690}
2691// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna
2692private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2693 problem:LogicProblem, interpretation:PartialInterpretation,
2694 var_Spacecraft)
2695{
2696 find interpretation(problem,interpretation);
2697 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2698 // Spacecraft is exported
2699 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2700 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2701 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2702 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2703 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2704 // type constraint is enforced by construction
2705 find mustEquivalent(problem, interpretation, var_virtual2, var_virtual0);
2706 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2707}
2708private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2709 problem:LogicProblem, interpretation:PartialInterpretation,
2710 var_Spacecraft)
2711{
2712 find interpretation(problem,interpretation);
2713 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2714 // Spacecraft is exported
2715 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2716 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2717 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2718 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2719 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2720 // type constraint is enforced by construction
2721 find mayEquivalent(problem, interpretation, var_virtual2, var_virtual0);
2722 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2723}
2724private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2725 problem:LogicProblem, interpretation:PartialInterpretation,
2726 var_Spacecraft)
2727{
2728 find interpretation(problem,interpretation);
2729 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2730 // Spacecraft is exported
2731 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2732 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2733 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2734 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2735 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2736 // type constraint is enforced by construction
2737 find mustEquivalent(problem, interpretation, var_virtual2, var_virtual0);
2738 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2739}
2740// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries smallSat
2741private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2742 problem:LogicProblem, interpretation:PartialInterpretation,
2743 var_Sat)
2744{
2745 find interpretation(problem,interpretation);
2746 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2747 // Sat is exported
2748 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2749}
2750private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2751 problem:LogicProblem, interpretation:PartialInterpretation,
2752 var_Sat)
2753{
2754 find interpretation(problem,interpretation);
2755 find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2756 // Sat is exported
2757 find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2758}
2759private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2760 problem:LogicProblem, interpretation:PartialInterpretation,
2761 var_Sat)
2762{
2763 find interpretation(problem,interpretation);
2764 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2765 // Sat is exported
2766 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2767}
2768// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries spacecraftOfKind
2769private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftOfKind(
2770 problem:LogicProblem, interpretation:PartialInterpretation,
2771 var_Spacecraft, var_Kind)
2772{
2773 find interpretation(problem,interpretation);
2774 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2775 // type constraint is enforced by construction
2776 // Spacecraft is exported
2777 // Kind is exported
2778 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Spacecraft);
2779 var_virtual0 == const_CubeSat3U_SpacecraftKind;DefinedElement.name(const_CubeSat3U_SpacecraftKind,"CubeSat3U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat3U_SpacecraftKind);
2780 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2781}or{
2782 find interpretation(problem,interpretation);
2783 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2784 // type constraint is enforced by construction
2785 // Spacecraft is exported
2786 // Kind is exported
2787 find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Spacecraft);
2788 var_virtual0 == const_CubeSat6U_SpacecraftKind;DefinedElement.name(const_CubeSat6U_SpacecraftKind,"CubeSat6U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat6U_SpacecraftKind);
2789 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2790}or{
2791 find interpretation(problem,interpretation);
2792 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2793 // type constraint is enforced by construction
2794 // Spacecraft is exported
2795 // Kind is exported
2796 find mustInstanceOfSmallSat_class(problem,interpretation,var_Spacecraft);
2797 var_virtual0 == const_SmallSat_SpacecraftKind;DefinedElement.name(const_SmallSat_SpacecraftKind,"SmallSat SpacecraftKind"); //LogicProblem.elements(problem,const_SmallSat_SpacecraftKind);
2798 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2799}
2800private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftOfKind(
2801 problem:LogicProblem, interpretation:PartialInterpretation,
2802 var_Spacecraft, var_Kind)
2803{
2804 find interpretation(problem,interpretation);
2805 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2806 // type constraint is enforced by construction
2807 // Spacecraft is exported
2808 // Kind is exported
2809 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Spacecraft);
2810 var_virtual0 == const_CubeSat3U_SpacecraftKind;DefinedElement.name(const_CubeSat3U_SpacecraftKind,"CubeSat3U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat3U_SpacecraftKind);
2811 find mayEquivalent(problem, interpretation, var_Kind, var_virtual0);
2812}or{
2813 find interpretation(problem,interpretation);
2814 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2815 // type constraint is enforced by construction
2816 // Spacecraft is exported
2817 // Kind is exported
2818 find mayInstanceOfCubeSat6U_class(problem,interpretation,var_Spacecraft);
2819 var_virtual0 == const_CubeSat6U_SpacecraftKind;DefinedElement.name(const_CubeSat6U_SpacecraftKind,"CubeSat6U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat6U_SpacecraftKind);
2820 find mayEquivalent(problem, interpretation, var_Kind, var_virtual0);
2821}or{
2822 find interpretation(problem,interpretation);
2823 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2824 // type constraint is enforced by construction
2825 // Spacecraft is exported
2826 // Kind is exported
2827 find mayInstanceOfSmallSat_class(problem,interpretation,var_Spacecraft);
2828 var_virtual0 == const_SmallSat_SpacecraftKind;DefinedElement.name(const_SmallSat_SpacecraftKind,"SmallSat SpacecraftKind"); //LogicProblem.elements(problem,const_SmallSat_SpacecraftKind);
2829 find mayEquivalent(problem, interpretation, var_Kind, var_virtual0);
2830}
2831private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftOfKind(
2832 problem:LogicProblem, interpretation:PartialInterpretation,
2833 var_Spacecraft, var_Kind)
2834{
2835 find interpretation(problem,interpretation);
2836 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2837 // type constraint is enforced by construction
2838 // Spacecraft is exported
2839 // Kind is exported
2840 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Spacecraft);
2841 var_virtual0 == const_CubeSat3U_SpacecraftKind;DefinedElement.name(const_CubeSat3U_SpacecraftKind,"CubeSat3U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat3U_SpacecraftKind);
2842 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2843}or{
2844 find interpretation(problem,interpretation);
2845 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2846 // type constraint is enforced by construction
2847 // Spacecraft is exported
2848 // Kind is exported
2849 find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Spacecraft);
2850 var_virtual0 == const_CubeSat6U_SpacecraftKind;DefinedElement.name(const_CubeSat6U_SpacecraftKind,"CubeSat6U SpacecraftKind"); //LogicProblem.elements(problem,const_CubeSat6U_SpacecraftKind);
2851 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2852}or{
2853 find interpretation(problem,interpretation);
2854 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2855 // type constraint is enforced by construction
2856 // Spacecraft is exported
2857 // Kind is exported
2858 find mustInstanceOfSmallSat_class(problem,interpretation,var_Spacecraft);
2859 var_virtual0 == const_SmallSat_SpacecraftKind;DefinedElement.name(const_SmallSat_SpacecraftKind,"SmallSat SpacecraftKind"); //LogicProblem.elements(problem,const_SmallSat_SpacecraftKind);
2860 find mustEquivalent(problem, interpretation, var_Kind, var_virtual0);
2861}
2862
2863//////////
2864// 1.4 Containment Indexer
2865//////////
2866private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
2867 find mustContains4(_,_,source,target);
2868}
2869
2870private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
2871 source: DefinedElement, target: DefinedElement)
2872 { find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target); }or
2873
2874 { find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target); }or
2875
2876 { find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target); }or
2877
2878 { find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,target); }or
2879
2880 { find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target); }
2881
2882private pattern mustTransitiveContains(source,target) {
2883 find mustContains2+(source,target);
2884}
2885
2886//////////
2887// 2. Invalidation Indexers
2888//////////
2889// 2.1 Invalidated by WF Queries
2890//////////
2891pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation,
2892 var_Link)
2893{
2894 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Link);
2895}
2896pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem:LogicProblem, interpretation:PartialInterpretation,
2897 var_Mission)
2898{
2899 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem,interpretation,var_Mission);
2900}
2901pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
2902 var_Spacecraft)
2903{
2904 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft);
2905}
2906pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
2907 var_Spacecraft)
2908{
2909 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem,interpretation,var_Spacecraft);
2910}
2911pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation,
2912 var_Element)
2913{
2914 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element);
2915}
2916pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation,
2917 var_Link)
2918{
2919 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_Link);
2920}
2921pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem:LogicProblem, interpretation:PartialInterpretation,
2922 var_Link)
2923{
2924 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem,interpretation,var_Link);
2925}
2926pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem:LogicProblem, interpretation:PartialInterpretation,
2927 var_Comm)
2928{
2929 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem,interpretation,var_Comm);
2930}
2931pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem:LogicProblem, interpretation:PartialInterpretation,
2932 var_Comm)
2933{
2934 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem,interpretation,var_Comm);
2935}
2936pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem:LogicProblem, interpretation:PartialInterpretation,
2937 var_Comm)
2938{
2939 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem,interpretation,var_Comm);
2940}
2941pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation,
2942 var_Sat)
2943{
2944 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat);
2945}
2946pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation,
2947 var_Spacecraft)
2948{
2949 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft);
2950}
2951
2952//////////
2953// 3. Unfinishedness Indexers
2954//////////
2955// 3.1 Unfinishedness Measured by Multiplicity
2956//////////
2957pattern unfinishedLowerMultiplicity_groundStationNetwork_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2958 find interpretation(problem,interpretation);
2959 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2960 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission");
2961 find mustInstanceOfConstellationMission_class(problem,interpretation,object);
2962 numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,object,_);
2963 check(numberOfExistingReferences < 1);
2964 missingMultiplicity == eval(1-numberOfExistingReferences);
2965}
2966pattern unfinishedLowerMultiplicity_spacecraft_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2967 find interpretation(problem,interpretation);
2968 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2969 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission");
2970 find mustInstanceOfConstellationMission_class(problem,interpretation,object);
2971 numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,object,_);
2972 check(numberOfExistingReferences < 2);
2973 missingMultiplicity == eval(2-numberOfExistingReferences);
2974}
2975pattern unfinishedLowerMultiplicity_commSubsystem_reference_CommunicatingElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2976 find interpretation(problem,interpretation);
2977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement");
2979 find mustInstanceOfCommunicatingElement_class(problem,interpretation,object);
2980 numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,object,_);
2981 check(numberOfExistingReferences < 1);
2982 missingMultiplicity == eval(1-numberOfExistingReferences);
2983}
2984pattern unfinishedLowerMultiplicity_source_reference_DirectedCommunicationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2985 find interpretation(problem,interpretation);
2986 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2987 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
2988 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,object);
2989 numberOfExistingReferences == count find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,object,_);
2990 check(numberOfExistingReferences < 1);
2991 missingMultiplicity == eval(1-numberOfExistingReferences);
2992}
2993pattern unfinishedLowerMultiplicity_target_reference_DirectedCommunicationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2994 find interpretation(problem,interpretation);
2995 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2996 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
2997 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,object);
2998 numberOfExistingReferences == count find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,object,_);
2999 check(numberOfExistingReferences < 1);
3000 missingMultiplicity == eval(1-numberOfExistingReferences);
3001}
3002pattern unfinishedLowerMultiplicity_band_attribute_CommSubsystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3003 find interpretation(problem,interpretation);
3004 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3005 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"band attribute CommSubsystem");
3006 find mustInstanceOfCommSubsystem_class(problem,interpretation,object);
3007 numberOfExistingReferences == count find mustInRelationband_attribute_CommSubsystem(problem,interpretation,object,_);
3008 check(numberOfExistingReferences < 1);
3009 missingMultiplicity == eval(1-numberOfExistingReferences);
3010}
3011pattern unfinishedLowerMultiplicity_gain_attribute_CommSubsystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3012 find interpretation(problem,interpretation);
3013 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3014 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"gain attribute CommSubsystem");
3015 find mustInstanceOfCommSubsystem_class(problem,interpretation,object);
3016 numberOfExistingReferences == count find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,object,_);
3017 check(numberOfExistingReferences < 1);
3018 missingMultiplicity == eval(1-numberOfExistingReferences);
3019}
3020
3021//////////
3022// 3.2 Unfinishedness Measured by WF Queries
3023//////////
3024pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation,
3025 var_Link)
3026{
3027 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Link);
3028}
3029pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem:LogicProblem, interpretation:PartialInterpretation,
3030 var_Mission)
3031{
3032 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem,interpretation,var_Mission);
3033}
3034pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
3035 var_Spacecraft)
3036{
3037 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft);
3038}
3039pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
3040 var_Spacecraft)
3041{
3042 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem,interpretation,var_Spacecraft);
3043}
3044pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation,
3045 var_Element)
3046{
3047 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element);
3048}
3049pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation,
3050 var_Link)
3051{
3052 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_Link);
3053}
3054pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem:LogicProblem, interpretation:PartialInterpretation,
3055 var_Link)
3056{
3057 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem,interpretation,var_Link);
3058}
3059pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem:LogicProblem, interpretation:PartialInterpretation,
3060 var_Comm)
3061{
3062 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem,interpretation,var_Comm);
3063}
3064pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem:LogicProblem, interpretation:PartialInterpretation,
3065 var_Comm)
3066{
3067 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem,interpretation,var_Comm);
3068}
3069pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem:LogicProblem, interpretation:PartialInterpretation,
3070 var_Comm)
3071{
3072 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem,interpretation,var_Comm);
3073}
3074pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation,
3075 var_Sat)
3076{
3077 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat);
3078}
3079pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation,
3080 var_Spacecraft)
3081{
3082 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft);
3083}
3084
3085//////////
3086// 4. Refinement Indexers
3087//////////
3088// 4.1 Object constructors
3089//////////
3090private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
3091{
3092 find interpretation(problem,interpretation);
3093 find mustInstanceOfInterferometryPayload_class(problem,interpretation,root);
3094 find mustExist(problem, interpretation, root);
3095}or{
3096 find interpretation(problem,interpretation);
3097 find mustInstanceOfSpacecraft_class(problem,interpretation,root);
3098 find mustExist(problem, interpretation, root);
3099}or{
3100 find interpretation(problem,interpretation);
3101 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,root);
3102 find mustExist(problem, interpretation, root);
3103}or{
3104 find interpretation(problem,interpretation);
3105 find mustInstanceOfCubeSat_class(problem,interpretation,root);
3106 find mustExist(problem, interpretation, root);
3107}or{
3108 find interpretation(problem,interpretation);
3109 find mustInstanceOfConstellationMission_class(problem,interpretation,root);
3110 find mustExist(problem, interpretation, root);
3111}or{
3112 find interpretation(problem,interpretation);
3113 find mustInstanceOfInterferometryMission_class(problem,interpretation,root);
3114 find mustExist(problem, interpretation, root);
3115}or{
3116 find interpretation(problem,interpretation);
3117 find mustInstanceOfCubeSat3U_class(problem,interpretation,root);
3118 find mustExist(problem, interpretation, root);
3119}or{
3120 find interpretation(problem,interpretation);
3121 find mustInstanceOfCommunicatingElement_class(problem,interpretation,root);
3122 find mustExist(problem, interpretation, root);
3123}or{
3124 find interpretation(problem,interpretation);
3125 find mustInstanceOfCubeSat6U_class(problem,interpretation,root);
3126 find mustExist(problem, interpretation, root);
3127}or{
3128 find interpretation(problem,interpretation);
3129 find mustInstanceOfSmallSat_class(problem,interpretation,root);
3130 find mustExist(problem, interpretation, root);
3131}or{
3132 find interpretation(problem,interpretation);
3133 find mustInstanceOfCommSubsystem_class(problem,interpretation,root);
3134 find mustExist(problem, interpretation, root);
3135}or{
3136 find interpretation(problem,interpretation);
3137 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,root);
3138 find mustExist(problem, interpretation, root);
3139}or{
3140 find interpretation(problem,interpretation);
3141 find mustInstanceOfPayload_class(problem,interpretation,root);
3142 find mustExist(problem, interpretation, root);
3143}or{
3144 find interpretation(problem,interpretation);
3145 find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,root);
3146 find mustExist(problem, interpretation, root);
3147}or{
3148 find interpretation(problem,interpretation);
3149 find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,root);
3150 find mustExist(problem, interpretation, root);
3151}or{
3152 find interpretation(problem,interpretation);
3153 find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,root);
3154 find mustExist(problem, interpretation, root);
3155}or{
3156 find interpretation(problem,interpretation);
3157 find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,root);
3158 find mustExist(problem, interpretation, root);
3159}or{
3160 find interpretation(problem,interpretation);
3161 find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,root);
3162 find mustExist(problem, interpretation, root);
3163}or{
3164 find interpretation(problem,interpretation);
3165 find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,root);
3166 find mustExist(problem, interpretation, root);
3167}or{
3168 find interpretation(problem,interpretation);
3169 find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,root);
3170 find mustExist(problem, interpretation, root);
3171}or{
3172 find interpretation(problem,interpretation);
3173 find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,root);
3174 find mustExist(problem, interpretation, root);
3175}or{
3176 find interpretation(problem,interpretation);
3177 find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,root);
3178 find mustExist(problem, interpretation, root);
3179}or{
3180 find interpretation(problem,interpretation);
3181 find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,root);
3182 find mustExist(problem, interpretation, root);
3183}
3184pattern createObject_DirectedCommunicationLink_class_by_communicationLink_reference_CommunicatingElement(
3185 problem:LogicProblem, interpretation:PartialInterpretation,
3186 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3187 container:DefinedElement)
3188{
3189 find interpretation(problem,interpretation);
3190 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3191 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"DirectedCommunicationLink class");
3192 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3193 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"communicationLink reference CommunicatingElement");
3194 find mustInstanceOfCommunicatingElement_class(problem,interpretation,container);
3195 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,newObject);
3196 find mayInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,container,newObject);
3197 find mustExist(problem, interpretation, container);
3198 neg find mustExist(problem, interpretation, newObject);
3199}
3200pattern createObject_DirectedCommunicationLink_class(
3201 problem:LogicProblem, interpretation:PartialInterpretation,
3202 typeInterpretation:PartialComplexTypeInterpretation)
3203{
3204 find interpretation(problem,interpretation);
3205 neg find hasElementInContainment(problem,interpretation);
3206 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3207 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"DirectedCommunicationLink class");
3208 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,newObject);
3209 find mayExist(problem, interpretation, newObject);
3210 neg find mustExist(problem, interpretation, newObject);
3211}
3212pattern createObject_InterferometryMission_class_UndefinedPart(
3213 problem:LogicProblem, interpretation:PartialInterpretation,
3214 typeInterpretation:PartialComplexTypeInterpretation)
3215{
3216 find interpretation(problem,interpretation);
3217 neg find hasElementInContainment(problem,interpretation);
3218 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3219 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryMission class UndefinedPart");
3220 find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,newObject);
3221 find mayExist(problem, interpretation, newObject);
3222 neg find mustExist(problem, interpretation, newObject);
3223}
3224pattern createObject_InterferometryPayload_class_by_payload_reference_Spacecraft(
3225 problem:LogicProblem, interpretation:PartialInterpretation,
3226 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3227 container:DefinedElement)
3228{
3229 find interpretation(problem,interpretation);
3230 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3231 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class");
3232 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3233 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"payload reference Spacecraft");
3234 find mustInstanceOfSpacecraft_class(problem,interpretation,container);
3235 find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject);
3236 find mayInRelationpayload_reference_Spacecraft(problem,interpretation,container,newObject);
3237 find mustExist(problem, interpretation, container);
3238 neg find mustExist(problem, interpretation, newObject);
3239}
3240pattern createObject_InterferometryPayload_class(
3241 problem:LogicProblem, interpretation:PartialInterpretation,
3242 typeInterpretation:PartialComplexTypeInterpretation)
3243{
3244 find interpretation(problem,interpretation);
3245 neg find hasElementInContainment(problem,interpretation);
3246 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3247 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class");
3248 find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject);
3249 find mayExist(problem, interpretation, newObject);
3250 neg find mustExist(problem, interpretation, newObject);
3251}
3252pattern createObject_GroundStationNetwork_class_UndefinedPart_by_groundStationNetwork_reference_ConstellationMission(
3253 problem:LogicProblem, interpretation:PartialInterpretation,
3254 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3255 container:DefinedElement)
3256{
3257 find interpretation(problem,interpretation);
3258 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3259 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart");
3260 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3261 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"groundStationNetwork reference ConstellationMission");
3262 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
3263 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject);
3264 find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,container,newObject);
3265 find mustExist(problem, interpretation, container);
3266 neg find mustExist(problem, interpretation, newObject);
3267}
3268pattern createObject_GroundStationNetwork_class_UndefinedPart(
3269 problem:LogicProblem, interpretation:PartialInterpretation,
3270 typeInterpretation:PartialComplexTypeInterpretation)
3271{
3272 find interpretation(problem,interpretation);
3273 neg find hasElementInContainment(problem,interpretation);
3274 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3275 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart");
3276 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject);
3277 find mayExist(problem, interpretation, newObject);
3278 neg find mustExist(problem, interpretation, newObject);
3279}
3280pattern createObject_CubeSat3U_class_by_spacecraft_reference_ConstellationMission(
3281 problem:LogicProblem, interpretation:PartialInterpretation,
3282 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3283 container:DefinedElement)
3284{
3285 find interpretation(problem,interpretation);
3286 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3287 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class");
3288 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3289 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
3290 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
3291 find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject);
3292 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
3293 find mustExist(problem, interpretation, container);
3294 neg find mustExist(problem, interpretation, newObject);
3295}
3296pattern createObject_CubeSat3U_class(
3297 problem:LogicProblem, interpretation:PartialInterpretation,
3298 typeInterpretation:PartialComplexTypeInterpretation)
3299{
3300 find interpretation(problem,interpretation);
3301 neg find hasElementInContainment(problem,interpretation);
3302 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3303 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class");
3304 find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject);
3305 find mayExist(problem, interpretation, newObject);
3306 neg find mustExist(problem, interpretation, newObject);
3307}
3308pattern createObject_SmallSat_class_by_spacecraft_reference_ConstellationMission(
3309 problem:LogicProblem, interpretation:PartialInterpretation,
3310 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3311 container:DefinedElement)
3312{
3313 find interpretation(problem,interpretation);
3314 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3315 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class");
3316 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3317 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
3318 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
3319 find mayInstanceOfSmallSat_class(problem,interpretation,newObject);
3320 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
3321 find mustExist(problem, interpretation, container);
3322 neg find mustExist(problem, interpretation, newObject);
3323}
3324pattern createObject_SmallSat_class(
3325 problem:LogicProblem, interpretation:PartialInterpretation,
3326 typeInterpretation:PartialComplexTypeInterpretation)
3327{
3328 find interpretation(problem,interpretation);
3329 neg find hasElementInContainment(problem,interpretation);
3330 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3331 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class");
3332 find mayInstanceOfSmallSat_class(problem,interpretation,newObject);
3333 find mayExist(problem, interpretation, newObject);
3334 neg find mustExist(problem, interpretation, newObject);
3335}
3336pattern createObject_CommSubsystem_class_UndefinedPart_by_commSubsystem_reference_CommunicatingElement(
3337 problem:LogicProblem, interpretation:PartialInterpretation,
3338 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3339 container:DefinedElement)
3340{
3341 find interpretation(problem,interpretation);
3342 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3343 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CommSubsystem class UndefinedPart");
3344 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3345 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"commSubsystem reference CommunicatingElement");
3346 find mustInstanceOfCommunicatingElement_class(problem,interpretation,container);
3347 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,newObject);
3348 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,container,newObject);
3349 find mustExist(problem, interpretation, container);
3350 neg find mustExist(problem, interpretation, newObject);
3351}
3352pattern createObject_CommSubsystem_class_UndefinedPart(
3353 problem:LogicProblem, interpretation:PartialInterpretation,
3354 typeInterpretation:PartialComplexTypeInterpretation)
3355{
3356 find interpretation(problem,interpretation);
3357 neg find hasElementInContainment(problem,interpretation);
3358 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3359 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CommSubsystem class UndefinedPart");
3360 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,newObject);
3361 find mayExist(problem, interpretation, newObject);
3362 neg find mustExist(problem, interpretation, newObject);
3363}
3364pattern createObject_CubeSat6U_class_by_spacecraft_reference_ConstellationMission(
3365 problem:LogicProblem, interpretation:PartialInterpretation,
3366 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3367 container:DefinedElement)
3368{
3369 find interpretation(problem,interpretation);
3370 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3371 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class");
3372 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3373 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
3374 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
3375 find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject);
3376 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
3377 find mustExist(problem, interpretation, container);
3378 neg find mustExist(problem, interpretation, newObject);
3379}
3380pattern createObject_CubeSat6U_class(
3381 problem:LogicProblem, interpretation:PartialInterpretation,
3382 typeInterpretation:PartialComplexTypeInterpretation)
3383{
3384 find interpretation(problem,interpretation);
3385 neg find hasElementInContainment(problem,interpretation);
3386 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3387 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class");
3388 find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject);
3389 find mayExist(problem, interpretation, newObject);
3390 neg find mustExist(problem, interpretation, newObject);
3391}
3392
3393//////////
3394// 4.2 Type refinement
3395//////////
3396pattern refineTypeTo_DirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3397 find interpretation(problem,interpretation);
3398 PartialInterpretation.newElements(interpretation,element);
3399 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3400 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3401 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3402 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3403 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3404 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
3405}
3406pattern refineTypeTo_InterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3407 find interpretation(problem,interpretation);
3408 PartialInterpretation.newElements(interpretation,element);
3409 find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element);
3410 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3411 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3412 neg find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element);
3413 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3414 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
3415}
3416pattern refineTypeTo_InterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3417 find interpretation(problem,interpretation);
3418 PartialInterpretation.newElements(interpretation,element);
3419 find mayInstanceOfInterferometryPayload_class(problem,interpretation,element);
3420 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3421 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3422 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
3423 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3424 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
3425}
3426pattern refineTypeTo_GroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3427 find interpretation(problem,interpretation);
3428 PartialInterpretation.newElements(interpretation,element);
3429 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element);
3430 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3431 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3432 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3433 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3434 neg find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element);
3435 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
3436}
3437pattern refineTypeTo_CubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3438 find interpretation(problem,interpretation);
3439 PartialInterpretation.newElements(interpretation,element);
3440 find mayInstanceOfCubeSat3U_class(problem,interpretation,element);
3441 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3442 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3443 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
3444 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3445 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3446 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
3447 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
3448 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
3449}
3450pattern refineTypeTo_SmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3451 find interpretation(problem,interpretation);
3452 PartialInterpretation.newElements(interpretation,element);
3453 find mayInstanceOfSmallSat_class(problem,interpretation,element);
3454 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3455 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3456 neg find mustInstanceOfCubeSat_class(problem,interpretation,element);
3457 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
3458 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3459 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3460 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
3461}
3462pattern refineTypeTo_CommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3463 find interpretation(problem,interpretation);
3464 PartialInterpretation.newElements(interpretation,element);
3465 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
3466 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3467 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3468 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3469 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
3470 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
3471}
3472pattern refineTypeTo_CubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3473 find interpretation(problem,interpretation);
3474 PartialInterpretation.newElements(interpretation,element);
3475 find mayInstanceOfCubeSat6U_class(problem,interpretation,element);
3476 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
3477 neg find mustInstanceOfPayload_class(problem,interpretation,element);
3478 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
3479 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
3480 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
3481 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
3482 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
3483 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
3484}
3485
3486//////////
3487// 4.3 Relation refinement
3488//////////
3489pattern refineRelation_source_reference_DirectedCommunicationLink(
3490 problem:LogicProblem, interpretation:PartialInterpretation,
3491 relationIterpretation:PartialRelationInterpretation,
3492 from: DefinedElement, to: DefinedElement)
3493{
3494 find interpretation(problem,interpretation);
3495 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3496 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
3497 find mustExist(problem, interpretation, from);
3498 find mustExist(problem, interpretation, to);
3499 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,from);
3500 find mustInstanceOfCommSubsystem_class(problem,interpretation,to);
3501 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,from,to);
3502 neg find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,from,to);
3503}
3504pattern refineRelation_target_reference_DirectedCommunicationLink(
3505 problem:LogicProblem, interpretation:PartialInterpretation,
3506 relationIterpretation:PartialRelationInterpretation,
3507 from: DefinedElement, to: DefinedElement)
3508{
3509 find interpretation(problem,interpretation);
3510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
3512 find mustExist(problem, interpretation, from);
3513 find mustExist(problem, interpretation, to);
3514 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,from);
3515 find mustInstanceOfCommSubsystem_class(problem,interpretation,to);
3516 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,from,to);
3517 neg find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,from,to);
3518}
3519pattern refineRelation_kind_attribute_Spacecraft(
3520 problem:LogicProblem, interpretation:PartialInterpretation,
3521 relationIterpretation:PartialRelationInterpretation,
3522 from: DefinedElement, to: DefinedElement)
3523{
3524 find interpretation(problem,interpretation);
3525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"kind attribute Spacecraft");
3527 find mustExist(problem, interpretation, from);
3528 find mustExist(problem, interpretation, to);
3529 find mustInstanceOfSpacecraft_class(problem,interpretation,from);
3530 find mustInstanceOfSpacecraftKind_enum(problem,interpretation,to);
3531 find mayInRelationkind_attribute_Spacecraft(problem,interpretation,from,to);
3532 neg find mustInRelationkind_attribute_Spacecraft(problem,interpretation,from,to);
3533}
3534pattern refineRelation_band_attribute_CommSubsystem(
3535 problem:LogicProblem, interpretation:PartialInterpretation,
3536 relationIterpretation:PartialRelationInterpretation,
3537 from: DefinedElement, to: DefinedElement)
3538{
3539 find interpretation(problem,interpretation);
3540 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3541 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"band attribute CommSubsystem");
3542 find mustExist(problem, interpretation, from);
3543 find mustExist(problem, interpretation, to);
3544 find mustInstanceOfCommSubsystem_class(problem,interpretation,from);
3545 find mustInstanceOfTransceiverBand_enum(problem,interpretation,to);
3546 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,from,to);
3547 neg find mustInRelationband_attribute_CommSubsystem(problem,interpretation,from,to);
3548}
3549pattern refineRelation_gain_attribute_CommSubsystem(
3550 problem:LogicProblem, interpretation:PartialInterpretation,
3551 relationIterpretation:PartialRelationInterpretation,
3552 from: DefinedElement, to: DefinedElement)
3553{
3554 find interpretation(problem,interpretation);
3555 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3556 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"gain attribute CommSubsystem");
3557 find mustExist(problem, interpretation, from);
3558 find mustExist(problem, interpretation, to);
3559 find mustInstanceOfCommSubsystem_class(problem,interpretation,from);
3560 find mustInstanceOfAntennaGain_enum(problem,interpretation,to);
3561 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,from,to);
3562 neg find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,from,to);
3563}
3564
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem
new file mode 100644
index 00000000..2a54174a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem
@@ -0,0 +1,2103 @@
1<?xml version="1.0" encoding="ASCII"?>
2<language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partial2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/partial2logicannotation" xmlns:viatra2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/viatra2logicannotation">
3 <types xsi:type="language_1:TypeDeclaration" name="ConstellationMission class" subtypes="//@types.1 //@types.16 //@types.17" isAbstract="true"/>
4 <types xsi:type="language_1:TypeDeclaration" name="InterferometryMission class" subtypes="//@types.18 //@types.19" supertypes="//@types.0" isAbstract="true"/>
5 <types xsi:type="language_1:TypeDeclaration" name="CommunicatingElement class" subtypes="//@types.3 //@types.4 //@types.20 //@types.21" isAbstract="true"/>
6 <types xsi:type="language_1:TypeDeclaration" name="GroundStationNetwork class" subtypes="//@types.22 //@types.23" supertypes="//@types.2" isAbstract="true"/>
7 <types xsi:type="language_1:TypeDeclaration" name="Spacecraft class" subtypes="//@types.11 //@types.12" supertypes="//@types.2 //@types.21" isAbstract="true"/>
8 <types xsi:type="language_1:TypeDeclaration" name="CommSubsystem class" subtypes="//@types.24 //@types.25" isAbstract="true"/>
9 <types xsi:type="language_1:TypeDeclaration" name="DirectedCommunicationLink class"/>
10 <types xsi:type="language_1:TypeDeclaration" name="Payload class" subtypes="//@types.8" isAbstract="true"/>
11 <types xsi:type="language_1:TypeDeclaration" name="InterferometryPayload class" supertypes="//@types.7"/>
12 <types xsi:type="language_1:TypeDeclaration" name="CubeSat3U class" supertypes="//@types.12"/>
13 <types xsi:type="language_1:TypeDeclaration" name="CubeSat6U class" supertypes="//@types.12"/>
14 <types xsi:type="language_1:TypeDeclaration" name="SmallSat class" supertypes="//@types.4"/>
15 <types xsi:type="language_1:TypeDeclaration" name="CubeSat class" subtypes="//@types.9 //@types.10" supertypes="//@types.4" isAbstract="true"/>
16 <types xsi:type="language_1:TypeDefinition" name="TransceiverBand enum" elements="//@elements.0 //@elements.1 //@elements.2"/>
17 <types xsi:type="language_1:TypeDefinition" name="AntennaGain enum" elements="//@elements.3 //@elements.4 //@elements.5"/>
18 <types xsi:type="language_1:TypeDefinition" name="SpacecraftKind enum" elements="//@elements.6 //@elements.7 //@elements.8"/>
19 <types xsi:type="language_1:TypeDefinition" name="ConstellationMission class DefinedPart" subtypes="//@types.18" supertypes="//@types.0" isAbstract="true" elements="//@elements.9"/>
20 <types xsi:type="language_1:TypeDeclaration" name="ConstellationMission class UndefinedPart" subtypes="//@types.19" supertypes="//@types.0" isAbstract="true"/>
21 <types xsi:type="language_1:TypeDefinition" name="InterferometryMission class DefinedPart" supertypes="//@types.1 //@types.16" elements="//@elements.9"/>
22 <types xsi:type="language_1:TypeDeclaration" name="InterferometryMission class UndefinedPart" supertypes="//@types.1 //@types.17"/>
23 <types xsi:type="language_1:TypeDefinition" name="CommunicatingElement class DefinedPart" subtypes="//@types.22" supertypes="//@types.2" isAbstract="true" elements="//@elements.10"/>
24 <types xsi:type="language_1:TypeDeclaration" name="CommunicatingElement class UndefinedPart" subtypes="//@types.23 //@types.4" supertypes="//@types.2" isAbstract="true"/>
25 <types xsi:type="language_1:TypeDefinition" name="GroundStationNetwork class DefinedPart" supertypes="//@types.3 //@types.20" elements="//@elements.10"/>
26 <types xsi:type="language_1:TypeDeclaration" name="GroundStationNetwork class UndefinedPart" supertypes="//@types.3 //@types.21"/>
27 <types xsi:type="language_1:TypeDefinition" name="CommSubsystem class DefinedPart" supertypes="//@types.5" elements="//@elements.11 //@elements.12"/>
28 <types xsi:type="language_1:TypeDeclaration" name="CommSubsystem class UndefinedPart" supertypes="//@types.5"/>
29 <assertions name="lowerMultiplicity groundStationNetwork ConstellationMission" annotations="//@annotations.0">
30 <value xsi:type="language_1:Forall">
31 <quantifiedVariables name="src">
32 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
33 </quantifiedVariables>
34 <expression xsi:type="language_1:Exists">
35 <quantifiedVariables name="trg 1">
36 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
37 </quantifiedVariables>
38 <expression xsi:type="language_1:And">
39 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
40 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
41 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@expression/@quantifiedVariables.0"/>
42 </operands>
43 </expression>
44 </expression>
45 </value>
46 </assertions>
47 <assertions name="upperMultiplicity groundStationNetwork ConstellationMission" annotations="//@annotations.1">
48 <value xsi:type="language_1:Forall">
49 <quantifiedVariables name="src">
50 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
51 </quantifiedVariables>
52 <quantifiedVariables name="trg 1">
53 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
54 </quantifiedVariables>
55 <quantifiedVariables name="trg 2">
56 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
57 </quantifiedVariables>
58 <expression xsi:type="language_1:Impl">
59 <leftOperand xsi:type="language_1:And">
60 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
61 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
62 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
63 </operands>
64 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
65 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
66 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
67 </operands>
68 </leftOperand>
69 <rightOperand xsi:type="language_1:Not">
70 <operand xsi:type="language_1:Distinct">
71 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
72 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
73 </operand>
74 </rightOperand>
75 </expression>
76 </value>
77 </assertions>
78 <assertions name="lowerMultiplicity spacecraft ConstellationMission" annotations="//@annotations.2">
79 <value xsi:type="language_1:Forall">
80 <quantifiedVariables name="src">
81 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
82 </quantifiedVariables>
83 <expression xsi:type="language_1:Exists">
84 <quantifiedVariables name="trg 1">
85 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
86 </quantifiedVariables>
87 <quantifiedVariables name="trg 2">
88 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
89 </quantifiedVariables>
90 <expression xsi:type="language_1:And">
91 <operands xsi:type="language_1:Distinct">
92 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.0"/>
93 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.1"/>
94 </operands>
95 <operands xsi:type="language_1:And">
96 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
97 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
98 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.0"/>
99 </operands>
100 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
101 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
102 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.1"/>
103 </operands>
104 </operands>
105 </expression>
106 </expression>
107 </value>
108 </assertions>
109 <assertions name="upperMultiplicity spacecraft ConstellationMission" annotations="//@annotations.3">
110 <value xsi:type="language_1:Forall">
111 <quantifiedVariables name="src">
112 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
113 </quantifiedVariables>
114 <quantifiedVariables name="trg 1">
115 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
116 </quantifiedVariables>
117 <quantifiedVariables name="trg 2">
118 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
119 </quantifiedVariables>
120 <quantifiedVariables name="trg 3">
121 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
122 </quantifiedVariables>
123 <quantifiedVariables name="trg 4">
124 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
125 </quantifiedVariables>
126 <quantifiedVariables name="trg 5">
127 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
128 </quantifiedVariables>
129 <quantifiedVariables name="trg 6">
130 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
131 </quantifiedVariables>
132 <quantifiedVariables name="trg 7">
133 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
134 </quantifiedVariables>
135 <quantifiedVariables name="trg 8">
136 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
137 </quantifiedVariables>
138 <quantifiedVariables name="trg 9">
139 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
140 </quantifiedVariables>
141 <quantifiedVariables name="trg 10">
142 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
143 </quantifiedVariables>
144 <quantifiedVariables name="trg 11">
145 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
146 </quantifiedVariables>
147 <quantifiedVariables name="trg 12">
148 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
149 </quantifiedVariables>
150 <quantifiedVariables name="trg 13">
151 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
152 </quantifiedVariables>
153 <quantifiedVariables name="trg 14">
154 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
155 </quantifiedVariables>
156 <quantifiedVariables name="trg 15">
157 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
158 </quantifiedVariables>
159 <quantifiedVariables name="trg 16">
160 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
161 </quantifiedVariables>
162 <quantifiedVariables name="trg 17">
163 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
164 </quantifiedVariables>
165 <quantifiedVariables name="trg 18">
166 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
167 </quantifiedVariables>
168 <quantifiedVariables name="trg 19">
169 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
170 </quantifiedVariables>
171 <quantifiedVariables name="trg 20">
172 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
173 </quantifiedVariables>
174 <quantifiedVariables name="trg 21">
175 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
176 </quantifiedVariables>
177 <quantifiedVariables name="trg 22">
178 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
179 </quantifiedVariables>
180 <quantifiedVariables name="trg 23">
181 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
182 </quantifiedVariables>
183 <quantifiedVariables name="trg 24">
184 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
185 </quantifiedVariables>
186 <quantifiedVariables name="trg 25">
187 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
188 </quantifiedVariables>
189 <quantifiedVariables name="trg 26">
190 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
191 </quantifiedVariables>
192 <quantifiedVariables name="trg 27">
193 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
194 </quantifiedVariables>
195 <quantifiedVariables name="trg 28">
196 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
197 </quantifiedVariables>
198 <quantifiedVariables name="trg 29">
199 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
200 </quantifiedVariables>
201 <quantifiedVariables name="trg 30">
202 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
203 </quantifiedVariables>
204 <quantifiedVariables name="trg 31">
205 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
206 </quantifiedVariables>
207 <quantifiedVariables name="trg 32">
208 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
209 </quantifiedVariables>
210 <quantifiedVariables name="trg 33">
211 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
212 </quantifiedVariables>
213 <quantifiedVariables name="trg 34">
214 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
215 </quantifiedVariables>
216 <quantifiedVariables name="trg 35">
217 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
218 </quantifiedVariables>
219 <quantifiedVariables name="trg 36">
220 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
221 </quantifiedVariables>
222 <quantifiedVariables name="trg 37">
223 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
224 </quantifiedVariables>
225 <quantifiedVariables name="trg 38">
226 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
227 </quantifiedVariables>
228 <quantifiedVariables name="trg 39">
229 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
230 </quantifiedVariables>
231 <quantifiedVariables name="trg 40">
232 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
233 </quantifiedVariables>
234 <quantifiedVariables name="trg 41">
235 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
236 </quantifiedVariables>
237 <quantifiedVariables name="trg 42">
238 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
239 </quantifiedVariables>
240 <quantifiedVariables name="trg 43">
241 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
242 </quantifiedVariables>
243 <quantifiedVariables name="trg 44">
244 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
245 </quantifiedVariables>
246 <quantifiedVariables name="trg 45">
247 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
248 </quantifiedVariables>
249 <quantifiedVariables name="trg 46">
250 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
251 </quantifiedVariables>
252 <quantifiedVariables name="trg 47">
253 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
254 </quantifiedVariables>
255 <quantifiedVariables name="trg 48">
256 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
257 </quantifiedVariables>
258 <quantifiedVariables name="trg 49">
259 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
260 </quantifiedVariables>
261 <quantifiedVariables name="trg 50">
262 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
263 </quantifiedVariables>
264 <quantifiedVariables name="trg 51">
265 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
266 </quantifiedVariables>
267 <expression xsi:type="language_1:Impl">
268 <leftOperand xsi:type="language_1:And">
269 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
270 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
271 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
272 </operands>
273 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
274 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
275 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
276 </operands>
277 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
278 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
279 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.3"/>
280 </operands>
281 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
282 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
283 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.4"/>
284 </operands>
285 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
286 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
287 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.5"/>
288 </operands>
289 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
290 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
291 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.6"/>
292 </operands>
293 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
294 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
295 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.7"/>
296 </operands>
297 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
298 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
299 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.8"/>
300 </operands>
301 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
302 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
303 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.9"/>
304 </operands>
305 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
306 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
307 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.10"/>
308 </operands>
309 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
310 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
311 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.11"/>
312 </operands>
313 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
314 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
315 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.12"/>
316 </operands>
317 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
318 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
319 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.13"/>
320 </operands>
321 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
322 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
323 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.14"/>
324 </operands>
325 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
326 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
327 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.15"/>
328 </operands>
329 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
330 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
331 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.16"/>
332 </operands>
333 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
334 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
335 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.17"/>
336 </operands>
337 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
338 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
339 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.18"/>
340 </operands>
341 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
342 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
343 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.19"/>
344 </operands>
345 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
346 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
347 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.20"/>
348 </operands>
349 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
350 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
351 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.21"/>
352 </operands>
353 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
354 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
355 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.22"/>
356 </operands>
357 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
358 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
359 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.23"/>
360 </operands>
361 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
362 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
363 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.24"/>
364 </operands>
365 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
366 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
367 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.25"/>
368 </operands>
369 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
370 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
371 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.26"/>
372 </operands>
373 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
374 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
375 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.27"/>
376 </operands>
377 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
378 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
379 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.28"/>
380 </operands>
381 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
382 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
383 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.29"/>
384 </operands>
385 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
386 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
387 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.30"/>
388 </operands>
389 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
390 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
391 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.31"/>
392 </operands>
393 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
394 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
395 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.32"/>
396 </operands>
397 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
398 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
399 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.33"/>
400 </operands>
401 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
402 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
403 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.34"/>
404 </operands>
405 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
406 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
407 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.35"/>
408 </operands>
409 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
410 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
411 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.36"/>
412 </operands>
413 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
414 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
415 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.37"/>
416 </operands>
417 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
418 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
419 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.38"/>
420 </operands>
421 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
422 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
423 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.39"/>
424 </operands>
425 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
426 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
427 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.40"/>
428 </operands>
429 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
430 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
431 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.41"/>
432 </operands>
433 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
434 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
435 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.42"/>
436 </operands>
437 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
438 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
439 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.43"/>
440 </operands>
441 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
442 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
443 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.44"/>
444 </operands>
445 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
446 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
447 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.45"/>
448 </operands>
449 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
450 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
451 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.46"/>
452 </operands>
453 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
454 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
455 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.47"/>
456 </operands>
457 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
458 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
459 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.48"/>
460 </operands>
461 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
462 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
463 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.49"/>
464 </operands>
465 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
466 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
467 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.50"/>
468 </operands>
469 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
470 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
471 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.51"/>
472 </operands>
473 </leftOperand>
474 <rightOperand xsi:type="language_1:Not">
475 <operand xsi:type="language_1:Distinct">
476 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
477 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
478 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.3"/>
479 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.4"/>
480 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.5"/>
481 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.6"/>
482 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.7"/>
483 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.8"/>
484 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.9"/>
485 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.10"/>
486 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.11"/>
487 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.12"/>
488 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.13"/>
489 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.14"/>
490 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.15"/>
491 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.16"/>
492 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.17"/>
493 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.18"/>
494 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.19"/>
495 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.20"/>
496 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.21"/>
497 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.22"/>
498 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.23"/>
499 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.24"/>
500 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.25"/>
501 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.26"/>
502 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.27"/>
503 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.28"/>
504 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.29"/>
505 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.30"/>
506 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.31"/>
507 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.32"/>
508 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.33"/>
509 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.34"/>
510 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.35"/>
511 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.36"/>
512 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.37"/>
513 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.38"/>
514 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.39"/>
515 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.40"/>
516 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.41"/>
517 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.42"/>
518 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.43"/>
519 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.44"/>
520 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.45"/>
521 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.46"/>
522 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.47"/>
523 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.48"/>
524 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.49"/>
525 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.50"/>
526 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.51"/>
527 </operand>
528 </rightOperand>
529 </expression>
530 </value>
531 </assertions>
532 <assertions name="lowerMultiplicity commSubsystem CommunicatingElement" annotations="//@annotations.4">
533 <value xsi:type="language_1:Forall">
534 <quantifiedVariables name="src">
535 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
536 </quantifiedVariables>
537 <expression xsi:type="language_1:Exists">
538 <quantifiedVariables name="trg 1">
539 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
540 </quantifiedVariables>
541 <expression xsi:type="language_1:And">
542 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
543 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
544 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@expression/@quantifiedVariables.0"/>
545 </operands>
546 </expression>
547 </expression>
548 </value>
549 </assertions>
550 <assertions name="upperMultiplicity commSubsystem CommunicatingElement" annotations="//@annotations.5">
551 <value xsi:type="language_1:Forall">
552 <quantifiedVariables name="src">
553 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
554 </quantifiedVariables>
555 <quantifiedVariables name="trg 1">
556 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
557 </quantifiedVariables>
558 <quantifiedVariables name="trg 2">
559 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
560 </quantifiedVariables>
561 <quantifiedVariables name="trg 3">
562 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
563 </quantifiedVariables>
564 <expression xsi:type="language_1:Impl">
565 <leftOperand xsi:type="language_1:And">
566 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
567 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
568 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
569 </operands>
570 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
571 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
572 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
573 </operands>
574 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
575 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
576 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.3"/>
577 </operands>
578 </leftOperand>
579 <rightOperand xsi:type="language_1:Not">
580 <operand xsi:type="language_1:Distinct">
581 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
582 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
583 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.3"/>
584 </operand>
585 </rightOperand>
586 </expression>
587 </value>
588 </assertions>
589 <assertions name="upperMultiplicity communicationLink CommunicatingElement" annotations="//@annotations.6">
590 <value xsi:type="language_1:Forall">
591 <quantifiedVariables name="src">
592 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
593 </quantifiedVariables>
594 <quantifiedVariables name="trg 1">
595 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
596 </quantifiedVariables>
597 <quantifiedVariables name="trg 2">
598 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
599 </quantifiedVariables>
600 <expression xsi:type="language_1:Impl">
601 <leftOperand xsi:type="language_1:And">
602 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
603 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
604 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
605 </operands>
606 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
607 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
608 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
609 </operands>
610 </leftOperand>
611 <rightOperand xsi:type="language_1:Not">
612 <operand xsi:type="language_1:Distinct">
613 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
614 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
615 </operand>
616 </rightOperand>
617 </expression>
618 </value>
619 </assertions>
620 <assertions name="upperMultiplicity payload Spacecraft" annotations="//@annotations.7">
621 <value xsi:type="language_1:Forall">
622 <quantifiedVariables name="src">
623 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
624 </quantifiedVariables>
625 <quantifiedVariables name="trg 1">
626 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
627 </quantifiedVariables>
628 <quantifiedVariables name="trg 2">
629 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
630 </quantifiedVariables>
631 <expression xsi:type="language_1:Impl">
632 <leftOperand xsi:type="language_1:And">
633 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
634 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
635 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
636 </operands>
637 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
638 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
639 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
640 </operands>
641 </leftOperand>
642 <rightOperand xsi:type="language_1:Not">
643 <operand xsi:type="language_1:Distinct">
644 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
645 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
646 </operand>
647 </rightOperand>
648 </expression>
649 </value>
650 </assertions>
651 <assertions name="lowerMultiplicity source DirectedCommunicationLink" annotations="//@annotations.8">
652 <value xsi:type="language_1:Forall">
653 <quantifiedVariables name="src">
654 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
655 </quantifiedVariables>
656 <expression xsi:type="language_1:Exists">
657 <quantifiedVariables name="trg 1">
658 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
659 </quantifiedVariables>
660 <expression xsi:type="language_1:And">
661 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
662 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.0"/>
663 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@expression/@quantifiedVariables.0"/>
664 </operands>
665 </expression>
666 </expression>
667 </value>
668 </assertions>
669 <assertions name="upperMultiplicity source DirectedCommunicationLink" annotations="//@annotations.9">
670 <value xsi:type="language_1:Forall">
671 <quantifiedVariables name="src">
672 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
673 </quantifiedVariables>
674 <quantifiedVariables name="trg 1">
675 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
676 </quantifiedVariables>
677 <quantifiedVariables name="trg 2">
678 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
679 </quantifiedVariables>
680 <expression xsi:type="language_1:Impl">
681 <leftOperand xsi:type="language_1:And">
682 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
683 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
684 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
685 </operands>
686 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
687 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
688 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
689 </operands>
690 </leftOperand>
691 <rightOperand xsi:type="language_1:Not">
692 <operand xsi:type="language_1:Distinct">
693 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
694 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
695 </operand>
696 </rightOperand>
697 </expression>
698 </value>
699 </assertions>
700 <assertions name="lowerMultiplicity target DirectedCommunicationLink" annotations="//@annotations.10">
701 <value xsi:type="language_1:Forall">
702 <quantifiedVariables name="src">
703 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
704 </quantifiedVariables>
705 <expression xsi:type="language_1:Exists">
706 <quantifiedVariables name="trg 1">
707 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
708 </quantifiedVariables>
709 <expression xsi:type="language_1:And">
710 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
711 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@quantifiedVariables.0"/>
712 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@expression/@quantifiedVariables.0"/>
713 </operands>
714 </expression>
715 </expression>
716 </value>
717 </assertions>
718 <assertions name="upperMultiplicity target DirectedCommunicationLink" annotations="//@annotations.11">
719 <value xsi:type="language_1:Forall">
720 <quantifiedVariables name="src">
721 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
722 </quantifiedVariables>
723 <quantifiedVariables name="trg 1">
724 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
725 </quantifiedVariables>
726 <quantifiedVariables name="trg 2">
727 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
728 </quantifiedVariables>
729 <expression xsi:type="language_1:Impl">
730 <leftOperand xsi:type="language_1:And">
731 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
732 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
733 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
734 </operands>
735 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
736 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
737 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
738 </operands>
739 </leftOperand>
740 <rightOperand xsi:type="language_1:Not">
741 <operand xsi:type="language_1:Distinct">
742 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
743 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
744 </operand>
745 </rightOperand>
746 </expression>
747 </value>
748 </assertions>
749 <assertions name="lowerMultiplicity kind Spacecraft" annotations="//@annotations.12">
750 <value xsi:type="language_1:Forall">
751 <quantifiedVariables name="src">
752 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
753 </quantifiedVariables>
754 <expression xsi:type="language_1:Exists">
755 <quantifiedVariables name="trg 1">
756 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
757 </quantifiedVariables>
758 <expression xsi:type="language_1:And">
759 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
760 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.0"/>
761 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@expression/@quantifiedVariables.0"/>
762 </operands>
763 </expression>
764 </expression>
765 </value>
766 </assertions>
767 <assertions name="upperMultiplicity kind Spacecraft" annotations="//@annotations.13">
768 <value xsi:type="language_1:Forall">
769 <quantifiedVariables name="src">
770 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
771 </quantifiedVariables>
772 <quantifiedVariables name="trg 1">
773 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
774 </quantifiedVariables>
775 <quantifiedVariables name="trg 2">
776 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
777 </quantifiedVariables>
778 <expression xsi:type="language_1:Impl">
779 <leftOperand xsi:type="language_1:And">
780 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
781 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
782 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
783 </operands>
784 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
785 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
786 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
787 </operands>
788 </leftOperand>
789 <rightOperand xsi:type="language_1:Not">
790 <operand xsi:type="language_1:Distinct">
791 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
792 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
793 </operand>
794 </rightOperand>
795 </expression>
796 </value>
797 </assertions>
798 <assertions name="lowerMultiplicity band CommSubsystem" annotations="//@annotations.14">
799 <value xsi:type="language_1:Forall">
800 <quantifiedVariables name="src">
801 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
802 </quantifiedVariables>
803 <expression xsi:type="language_1:Exists">
804 <quantifiedVariables name="trg 1">
805 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
806 </quantifiedVariables>
807 <expression xsi:type="language_1:And">
808 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
809 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.0"/>
810 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@expression/@quantifiedVariables.0"/>
811 </operands>
812 </expression>
813 </expression>
814 </value>
815 </assertions>
816 <assertions name="upperMultiplicity band CommSubsystem" annotations="//@annotations.15">
817 <value xsi:type="language_1:Forall">
818 <quantifiedVariables name="src">
819 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
820 </quantifiedVariables>
821 <quantifiedVariables name="trg 1">
822 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
823 </quantifiedVariables>
824 <quantifiedVariables name="trg 2">
825 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
826 </quantifiedVariables>
827 <expression xsi:type="language_1:Impl">
828 <leftOperand xsi:type="language_1:And">
829 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
830 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
831 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
832 </operands>
833 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
834 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
835 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
836 </operands>
837 </leftOperand>
838 <rightOperand xsi:type="language_1:Not">
839 <operand xsi:type="language_1:Distinct">
840 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
841 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
842 </operand>
843 </rightOperand>
844 </expression>
845 </value>
846 </assertions>
847 <assertions name="lowerMultiplicity gain CommSubsystem" annotations="//@annotations.16">
848 <value xsi:type="language_1:Forall">
849 <quantifiedVariables name="src">
850 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
851 </quantifiedVariables>
852 <expression xsi:type="language_1:Exists">
853 <quantifiedVariables name="trg 1">
854 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
855 </quantifiedVariables>
856 <expression xsi:type="language_1:And">
857 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
858 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.16/@value/@quantifiedVariables.0"/>
859 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.16/@value/@expression/@quantifiedVariables.0"/>
860 </operands>
861 </expression>
862 </expression>
863 </value>
864 </assertions>
865 <assertions name="upperMultiplicity gain CommSubsystem" annotations="//@annotations.17">
866 <value xsi:type="language_1:Forall">
867 <quantifiedVariables name="src">
868 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
869 </quantifiedVariables>
870 <quantifiedVariables name="trg 1">
871 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
872 </quantifiedVariables>
873 <quantifiedVariables name="trg 2">
874 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
875 </quantifiedVariables>
876 <expression xsi:type="language_1:Impl">
877 <leftOperand xsi:type="language_1:And">
878 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
879 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.0"/>
880 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.1"/>
881 </operands>
882 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
883 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.0"/>
884 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.2"/>
885 </operands>
886 </leftOperand>
887 <rightOperand xsi:type="language_1:Not">
888 <operand xsi:type="language_1:Distinct">
889 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.1"/>
890 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.2"/>
891 </operand>
892 </rightOperand>
893 </expression>
894 </value>
895 </assertions>
896 <assertions name="PartialInterpretation groundStationNetwork reference ConstellationMission" annotations="//@annotations.18">
897 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
898 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.9"/>
899 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.10"/>
900 </value>
901 </assertions>
902 <assertions name="PartialInterpretation commSubsystem reference CommunicatingElement" annotations="//@annotations.19">
903 <value xsi:type="language_1:And">
904 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
905 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.10"/>
906 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.11"/>
907 </operands>
908 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
909 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.10"/>
910 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.12"/>
911 </operands>
912 </value>
913 </assertions>
914 <assertions name="PartialInterpretation band attribute CommSubsystem" annotations="//@annotations.20">
915 <value xsi:type="language_1:And">
916 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
917 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.11"/>
918 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.1"/>
919 </operands>
920 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
921 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.12"/>
922 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
923 </operands>
924 </value>
925 </assertions>
926 <assertions name="PartialInterpretation gain attribute CommSubsystem" annotations="//@annotations.21">
927 <value xsi:type="language_1:And">
928 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
929 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.11"/>
930 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.4"/>
931 </operands>
932 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
933 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.12"/>
934 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.5"/>
935 </operands>
936 </value>
937 </assertions>
938 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement" annotations="//@annotations.50">
939 <value xsi:type="language_1:Forall">
940 <quantifiedVariables name="p0">
941 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
942 </quantifiedVariables>
943 <expression xsi:type="language_1:Not">
944 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10">
945 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.0"/>
946 </operand>
947 </expression>
948 </value>
949 </assertions>
950 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads" annotations="//@annotations.51">
951 <value xsi:type="language_1:Forall">
952 <quantifiedVariables name="p0">
953 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
954 </quantifiedVariables>
955 <expression xsi:type="language_1:Not">
956 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11">
957 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.0"/>
958 </operand>
959 </expression>
960 </value>
961 </assertions>
962 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation" annotations="//@annotations.52">
963 <value xsi:type="language_1:Forall">
964 <quantifiedVariables name="p0">
965 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
966 </quantifiedVariables>
967 <expression xsi:type="language_1:Not">
968 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14">
969 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.0"/>
970 </operand>
971 </expression>
972 </value>
973 </assertions>
974 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries noPotentialLinkToGroundStation" annotations="//@annotations.53">
975 <value xsi:type="language_1:Forall">
976 <quantifiedVariables name="p0">
977 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
978 </quantifiedVariables>
979 <expression xsi:type="language_1:Not">
980 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
981 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.0"/>
982 </operand>
983 </expression>
984 </value>
985 </assertions>
986 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries communicationLoop" annotations="//@annotations.54">
987 <value xsi:type="language_1:Forall">
988 <quantifiedVariables name="p0">
989 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
990 </quantifiedVariables>
991 <expression xsi:type="language_1:Not">
992 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20">
993 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.0"/>
994 </operand>
995 </expression>
996 </value>
997 </assertions>
998 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand" annotations="//@annotations.55">
999 <value xsi:type="language_1:Forall">
1000 <quantifiedVariables name="p0">
1001 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1002 </quantifiedVariables>
1003 <expression xsi:type="language_1:Not">
1004 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23">
1005 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.0"/>
1006 </operand>
1007 </expression>
1008 </value>
1009 </assertions>
1010 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain" annotations="//@annotations.56">
1011 <value xsi:type="language_1:Forall">
1012 <quantifiedVariables name="p0">
1013 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1014 </quantifiedVariables>
1015 <expression xsi:type="language_1:Not">
1016 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25">
1017 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.0"/>
1018 </operand>
1019 </expression>
1020 </value>
1021 </assertions>
1022 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow" annotations="//@annotations.57">
1023 <value xsi:type="language_1:Forall">
1024 <quantifiedVariables name="p0">
1025 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1026 </quantifiedVariables>
1027 <expression xsi:type="language_1:Not">
1028 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27">
1029 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.0"/>
1030 </operand>
1031 </expression>
1032 </value>
1033 </assertions>
1034 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium" annotations="//@annotations.58">
1035 <value xsi:type="language_1:Forall">
1036 <quantifiedVariables name="p0">
1037 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1038 </quantifiedVariables>
1039 <expression xsi:type="language_1:Not">
1040 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29">
1041 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.0"/>
1042 </operand>
1043 </expression>
1044 </value>
1045 </assertions>
1046 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow" annotations="//@annotations.59">
1047 <value xsi:type="language_1:Forall">
1048 <quantifiedVariables name="p0">
1049 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1050 </quantifiedVariables>
1051 <expression xsi:type="language_1:Not">
1052 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31">
1053 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.0"/>
1054 </operand>
1055 </expression>
1056 </value>
1057 </assertions>
1058 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink" annotations="//@annotations.60">
1059 <value xsi:type="language_1:Forall">
1060 <quantifiedVariables name="p0">
1061 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1062 </quantifiedVariables>
1063 <expression xsi:type="language_1:Not">
1064 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32">
1065 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.0"/>
1066 </operand>
1067 </expression>
1068 </value>
1069 </assertions>
1070 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna" annotations="//@annotations.61">
1071 <value xsi:type="language_1:Forall">
1072 <quantifiedVariables name="p0">
1073 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1074 </quantifiedVariables>
1075 <expression xsi:type="language_1:Not">
1076 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35">
1077 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.0"/>
1078 </operand>
1079 </expression>
1080 </value>
1081 </assertions>
1082 <relations xsi:type="language_1:RelationDeclaration" name="groundStationNetwork reference ConstellationMission">
1083 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1084 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1085 </relations>
1086 <relations xsi:type="language_1:RelationDeclaration" name="spacecraft reference ConstellationMission">
1087 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1088 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1089 </relations>
1090 <relations xsi:type="language_1:RelationDeclaration" name="commSubsystem reference CommunicatingElement">
1091 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1092 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1093 </relations>
1094 <relations xsi:type="language_1:RelationDeclaration" name="communicationLink reference CommunicatingElement">
1095 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1096 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1097 </relations>
1098 <relations xsi:type="language_1:RelationDeclaration" name="payload reference Spacecraft">
1099 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1100 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1101 </relations>
1102 <relations xsi:type="language_1:RelationDeclaration" name="source reference DirectedCommunicationLink">
1103 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1104 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1105 </relations>
1106 <relations xsi:type="language_1:RelationDeclaration" name="target reference DirectedCommunicationLink">
1107 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1108 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1109 </relations>
1110 <relations xsi:type="language_1:RelationDeclaration" name="kind attribute Spacecraft" annotations="//@annotations.62">
1111 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1112 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1113 </relations>
1114 <relations xsi:type="language_1:RelationDeclaration" name="band attribute CommSubsystem">
1115 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1116 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1117 </relations>
1118 <relations xsi:type="language_1:RelationDeclaration" name="gain attribute CommSubsystem">
1119 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1120 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1121 </relations>
1122 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement" annotations="//@annotations.22">
1123 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1124 <variables name="parameter Link">
1125 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1126 </variables>
1127 <value xsi:type="language_1:Or">
1128 <operands xsi:type="language_1:Exists">
1129 <quantifiedVariables name="variable Element">
1130 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1131 </quantifiedVariables>
1132 <quantifiedVariables name="variable SourceComm">
1133 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1134 </quantifiedVariables>
1135 <quantifiedVariables name="variable SourceElement">
1136 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1137 </quantifiedVariables>
1138 <expression xsi:type="language_1:And">
1139 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
1140 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.0"/>
1141 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@variables.0"/>
1142 </operands>
1143 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1144 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@variables.0"/>
1145 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.1"/>
1146 </operands>
1147 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1148 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.2"/>
1149 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.1"/>
1150 </operands>
1151 <operands xsi:type="language_1:InstanceOf">
1152 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.1"/>
1153 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1154 </operands>
1155 <operands xsi:type="language_1:Distinct">
1156 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.0"/>
1157 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@value/@operands.0/@quantifiedVariables.2"/>
1158 </operands>
1159 </expression>
1160 </operands>
1161 </value>
1162 </relations>
1163 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads" annotations="//@annotations.23">
1164 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1165 <variables name="parameter Mission">
1166 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1167 </variables>
1168 <value xsi:type="language_1:Or">
1169 <operands xsi:type="language_1:And">
1170 <operands xsi:type="language_1:InstanceOf">
1171 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@variables.0"/>
1172 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1173 </operands>
1174 <operands xsi:type="language_1:Not">
1175 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12">
1176 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@variables.0"/>
1177 </operand>
1178 </operands>
1179 </operands>
1180 </value>
1181 </relations>
1182 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries atLeastTwoInterferometryPayloads" annotations="//@annotations.24">
1183 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1184 <variables name="parameter Mission">
1185 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1186 </variables>
1187 <value xsi:type="language_1:Or">
1188 <operands xsi:type="language_1:Exists">
1189 <quantifiedVariables name="variable Spacecraft1">
1190 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1191 </quantifiedVariables>
1192 <quantifiedVariables name="variable Spacecraft2">
1193 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1194 </quantifiedVariables>
1195 <expression xsi:type="language_1:And">
1196 <operands xsi:type="language_1:InstanceOf">
1197 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.0"/>
1198 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1199 </operands>
1200 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13">
1201 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.0"/>
1202 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.0"/>
1203 </operands>
1204 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13">
1205 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.0"/>
1206 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.1"/>
1207 </operands>
1208 <operands xsi:type="language_1:Distinct">
1209 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.0"/>
1210 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.1"/>
1211 </operands>
1212 </expression>
1213 </operands>
1214 </value>
1215 </relations>
1216 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries spacecraftWithInterferometryPayload" annotations="//@annotations.25">
1217 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1218 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1219 <variables name="parameter Mission">
1220 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1221 </variables>
1222 <variables name="parameter Spacecraft">
1223 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1224 </variables>
1225 <value xsi:type="language_1:Or">
1226 <operands xsi:type="language_1:Exists">
1227 <quantifiedVariables name="variable Payload">
1228 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1229 </quantifiedVariables>
1230 <expression xsi:type="language_1:And">
1231 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
1232 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.0"/>
1233 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.1"/>
1234 </operands>
1235 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
1236 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.1"/>
1237 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.0"/>
1238 </operands>
1239 <operands xsi:type="language_1:InstanceOf">
1240 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.0"/>
1241 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1242 </operands>
1243 </expression>
1244 </operands>
1245 </value>
1246 </relations>
1247 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation" annotations="//@annotations.26">
1248 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1249 <variables name="parameter Spacecraft">
1250 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1251 </variables>
1252 <value xsi:type="language_1:Or">
1253 <operands xsi:type="language_1:Exists">
1254 <quantifiedVariables name="variable Mission">
1255 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1256 </quantifiedVariables>
1257 <quantifiedVariables name="variable GroundStation">
1258 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1259 </quantifiedVariables>
1260 <expression xsi:type="language_1:And">
1261 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
1262 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@value/@operands.0/@quantifiedVariables.0"/>
1263 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@value/@operands.0/@quantifiedVariables.1"/>
1264 </operands>
1265 <operands xsi:type="language_1:InstanceOf">
1266 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@value/@operands.0/@quantifiedVariables.1"/>
1267 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1268 </operands>
1269 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
1270 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@value/@operands.0/@quantifiedVariables.0"/>
1271 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@variables.0"/>
1272 </operands>
1273 <operands xsi:type="language_1:InstanceOf">
1274 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@variables.0"/>
1275 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1276 </operands>
1277 <operands xsi:type="language_1:Not">
1278 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21">
1279 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@variables.0"/>
1280 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@value/@operands.0/@quantifiedVariables.1"/>
1281 </operand>
1282 </operands>
1283 </expression>
1284 </operands>
1285 </value>
1286 </relations>
1287 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries noPotentialLinkToGroundStation" annotations="//@annotations.27">
1288 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1289 <variables name="parameter Spacecraft">
1290 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1291 </variables>
1292 <value xsi:type="language_1:Or">
1293 <operands xsi:type="language_1:Exists">
1294 <quantifiedVariables name="variable Mission">
1295 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1296 </quantifiedVariables>
1297 <quantifiedVariables name="variable GroundStation">
1298 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1299 </quantifiedVariables>
1300 <expression xsi:type="language_1:And">
1301 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
1302 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/>
1303 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.1"/>
1304 </operands>
1305 <operands xsi:type="language_1:InstanceOf">
1306 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.1"/>
1307 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1308 </operands>
1309 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
1310 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/>
1311 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/>
1312 </operands>
1313 <operands xsi:type="language_1:InstanceOf">
1314 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/>
1315 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1316 </operands>
1317 <operands xsi:type="language_1:Not">
1318 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16">
1319 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/>
1320 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.1"/>
1321 </operand>
1322 </operands>
1323 </expression>
1324 </operands>
1325 </value>
1326 </relations>
1327 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries indirectLinkAllowed" annotations="//@annotations.28">
1328 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1329 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1330 <variables name="parameter From">
1331 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1332 </variables>
1333 <variables name="parameter To">
1334 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1335 </variables>
1336 <value xsi:type="language_1:Or">
1337 <operands xsi:type="language_1:And">
1338 <operands xsi:type="language_1:TransitiveClosure" relation="//@relations.17"/>
1339 </operands>
1340 </value>
1341 </relations>
1342 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries linkAllowed" annotations="//@annotations.29">
1343 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1344 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1345 <variables name="parameter From">
1346 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1347 </variables>
1348 <variables name="parameter To">
1349 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1350 </variables>
1351 <value xsi:type="language_1:Or">
1352 <operands xsi:type="language_1:Exists">
1353 <quantifiedVariables name="variable 0">
1354 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1355 </quantifiedVariables>
1356 <expression xsi:type="language_1:And">
1357 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18">
1358 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1359 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.1"/>
1360 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.0"/>
1361 </operands>
1362 <operands xsi:type="language_1:Not">
1363 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19">
1364 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1365 </operand>
1366 </operands>
1367 </expression>
1368 </operands>
1369 <operands xsi:type="language_1:Exists">
1370 <quantifiedVariables name="variable virtual0">
1371 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1372 </quantifiedVariables>
1373 <expression xsi:type="language_1:And">
1374 <operands xsi:type="language_1:Equals">
1375 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.1/@quantifiedVariables.0"/>
1376 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1377 </operands>
1378 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18">
1379 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1380 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.1"/>
1381 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.1/@quantifiedVariables.0"/>
1382 </operands>
1383 <operands xsi:type="language_1:InstanceOf">
1384 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1385 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1386 </operands>
1387 </expression>
1388 </operands>
1389 <operands xsi:type="language_1:Exists">
1390 <quantifiedVariables name="variable 0">
1391 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1392 </quantifiedVariables>
1393 <expression xsi:type="language_1:And">
1394 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18">
1395 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1396 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.1"/>
1397 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.2/@quantifiedVariables.0"/>
1398 </operands>
1399 <operands xsi:type="language_1:InstanceOf">
1400 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1401 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1402 </operands>
1403 <operands xsi:type="language_1:InstanceOf">
1404 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.1"/>
1405 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1406 </operands>
1407 </expression>
1408 </operands>
1409 </value>
1410 </relations>
1411 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries matchingAntenna" annotations="//@annotations.30">
1412 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1413 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1414 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1415 <variables name="parameter From">
1416 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1417 </variables>
1418 <variables name="parameter To">
1419 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1420 </variables>
1421 <variables name="parameter Band">
1422 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1423 </variables>
1424 <value xsi:type="language_1:Or">
1425 <operands xsi:type="language_1:Exists">
1426 <quantifiedVariables name="variable Gain">
1427 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1428 </quantifiedVariables>
1429 <quantifiedVariables name="variable virtual0">
1430 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1431 </quantifiedVariables>
1432 <quantifiedVariables name="variable virtual2">
1433 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1434 </quantifiedVariables>
1435 <quantifiedVariables name="variable virtual4">
1436 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1437 </quantifiedVariables>
1438 <quantifiedVariables name="variable virtual6">
1439 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1440 </quantifiedVariables>
1441 <expression xsi:type="language_1:And">
1442 <operands xsi:type="language_1:InstanceOf">
1443 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.0"/>
1444 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1445 </operands>
1446 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1447 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.0"/>
1448 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.1"/>
1449 </operands>
1450 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1451 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.1"/>
1452 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.2"/>
1453 </operands>
1454 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1455 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.1"/>
1456 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.2"/>
1457 </operands>
1458 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1459 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.2"/>
1460 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.2"/>
1461 </operands>
1462 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1463 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.0"/>
1464 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.3"/>
1465 </operands>
1466 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1467 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.3"/>
1468 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.0"/>
1469 </operands>
1470 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1471 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.1"/>
1472 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.4"/>
1473 </operands>
1474 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1475 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.4"/>
1476 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@value/@operands.0/@quantifiedVariables.0"/>
1477 </operands>
1478 </expression>
1479 </operands>
1480 </value>
1481 </relations>
1482 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries cubeSat3U" annotations="//@annotations.31">
1483 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1484 <variables name="parameter Sat">
1485 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1486 </variables>
1487 <value xsi:type="language_1:Or">
1488 <operands xsi:type="language_1:And">
1489 <operands xsi:type="language_1:InstanceOf">
1490 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@variables.0"/>
1491 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1492 </operands>
1493 </operands>
1494 </value>
1495 </relations>
1496 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries communicationLoop" annotations="//@annotations.32">
1497 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1498 <variables name="parameter Element">
1499 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1500 </variables>
1501 <value xsi:type="language_1:Or">
1502 <operands xsi:type="language_1:And">
1503 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21">
1504 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20/@variables.0"/>
1505 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20/@variables.0"/>
1506 </operands>
1507 </operands>
1508 </value>
1509 </relations>
1510 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries indirectCommunicationLink" annotations="//@annotations.33">
1511 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1512 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1513 <variables name="parameter Source">
1514 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1515 </variables>
1516 <variables name="parameter Target">
1517 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1518 </variables>
1519 <value xsi:type="language_1:Or">
1520 <operands xsi:type="language_1:And">
1521 <operands xsi:type="language_1:TransitiveClosure" relation="//@relations.22"/>
1522 </operands>
1523 </value>
1524 </relations>
1525 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries directCommunicationLink" annotations="//@annotations.34">
1526 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1527 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1528 <variables name="parameter Source">
1529 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1530 </variables>
1531 <variables name="parameter Target">
1532 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1533 </variables>
1534 <value xsi:type="language_1:Or">
1535 <operands xsi:type="language_1:Exists">
1536 <quantifiedVariables name="variable Link">
1537 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1538 </quantifiedVariables>
1539 <quantifiedVariables name="variable SourceSubsystem">
1540 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1541 </quantifiedVariables>
1542 <quantifiedVariables name="variable TargetSubsystem">
1543 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1544 </quantifiedVariables>
1545 <expression xsi:type="language_1:And">
1546 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1547 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.0"/>
1548 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.1"/>
1549 </operands>
1550 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1551 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.0"/>
1552 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.2"/>
1553 </operands>
1554 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1555 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@variables.0"/>
1556 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.1"/>
1557 </operands>
1558 <operands xsi:type="language_1:InstanceOf">
1559 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.1"/>
1560 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1561 </operands>
1562 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1563 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@variables.1"/>
1564 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.2"/>
1565 </operands>
1566 <operands xsi:type="language_1:InstanceOf">
1567 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.2"/>
1568 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1569 </operands>
1570 </expression>
1571 </operands>
1572 </value>
1573 </relations>
1574 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand" annotations="//@annotations.35">
1575 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1576 <variables name="parameter Link">
1577 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1578 </variables>
1579 <value xsi:type="language_1:Or">
1580 <operands xsi:type="language_1:Exists">
1581 <quantifiedVariables name="variable SourceSubsystem">
1582 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1583 </quantifiedVariables>
1584 <quantifiedVariables name="variable TargetSubsystem">
1585 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1586 </quantifiedVariables>
1587 <quantifiedVariables name="variable Band">
1588 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1589 </quantifiedVariables>
1590 <expression xsi:type="language_1:And">
1591 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1592 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@variables.0"/>
1593 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.0"/>
1594 </operands>
1595 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1596 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@variables.0"/>
1597 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.1"/>
1598 </operands>
1599 <operands xsi:type="language_1:InstanceOf">
1600 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.1"/>
1601 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1602 </operands>
1603 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1604 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.0"/>
1605 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.2"/>
1606 </operands>
1607 <operands xsi:type="language_1:Not">
1608 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24">
1609 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.1"/>
1610 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.2"/>
1611 </operand>
1612 </operands>
1613 </expression>
1614 </operands>
1615 </value>
1616 </relations>
1617 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBand" annotations="//@annotations.36">
1618 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1619 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1620 <variables name="parameter Comm">
1621 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1622 </variables>
1623 <variables name="parameter Band">
1624 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1625 </variables>
1626 <value xsi:type="language_1:Or">
1627 <operands xsi:type="language_1:And">
1628 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1629 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24/@variables.0"/>
1630 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24/@variables.1"/>
1631 </operands>
1632 </operands>
1633 </value>
1634 </relations>
1635 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain" annotations="//@annotations.37">
1636 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1637 <variables name="parameter Link">
1638 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1639 </variables>
1640 <value xsi:type="language_1:Or">
1641 <operands xsi:type="language_1:Exists">
1642 <quantifiedVariables name="variable SourceSubsystem">
1643 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1644 </quantifiedVariables>
1645 <quantifiedVariables name="variable TargetSubsystem">
1646 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1647 </quantifiedVariables>
1648 <quantifiedVariables name="variable Gain">
1649 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1650 </quantifiedVariables>
1651 <expression xsi:type="language_1:And">
1652 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1653 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@variables.0"/>
1654 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.0"/>
1655 </operands>
1656 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1657 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@variables.0"/>
1658 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.1"/>
1659 </operands>
1660 <operands xsi:type="language_1:InstanceOf">
1661 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.1"/>
1662 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1663 </operands>
1664 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1665 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.0"/>
1666 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.2"/>
1667 </operands>
1668 <operands xsi:type="language_1:Not">
1669 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26">
1670 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.1"/>
1671 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.2"/>
1672 </operand>
1673 </operands>
1674 </expression>
1675 </operands>
1676 </value>
1677 </relations>
1678 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGain" annotations="//@annotations.38">
1679 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1680 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1681 <variables name="parameter Comm">
1682 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1683 </variables>
1684 <variables name="parameter Gain">
1685 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1686 </variables>
1687 <value xsi:type="language_1:Or">
1688 <operands xsi:type="language_1:And">
1689 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1690 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@variables.0"/>
1691 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@variables.1"/>
1692 </operands>
1693 </operands>
1694 </value>
1695 </relations>
1696 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow" annotations="//@annotations.39">
1697 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1698 <variables name="parameter Comm">
1699 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1700 </variables>
1701 <value xsi:type="language_1:Or">
1702 <operands xsi:type="language_1:Exists">
1703 <quantifiedVariables name="variable virtual0">
1704 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1705 </quantifiedVariables>
1706 <expression xsi:type="language_1:And">
1707 <operands xsi:type="language_1:Equals">
1708 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@value/@operands.0/@quantifiedVariables.0"/>
1709 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1710 </operands>
1711 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1712 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@variables.0"/>
1713 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@value/@operands.0/@quantifiedVariables.0"/>
1714 </operands>
1715 <operands xsi:type="language_1:Not">
1716 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28">
1717 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@variables.0"/>
1718 </operand>
1719 </operands>
1720 </expression>
1721 </operands>
1722 </value>
1723 </relations>
1724 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainLow" annotations="//@annotations.40">
1725 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1726 <variables name="parameter Comm">
1727 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1728 </variables>
1729 <value xsi:type="language_1:Or">
1730 <operands xsi:type="language_1:Exists">
1731 <quantifiedVariables name="variable virtual0">
1732 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1733 </quantifiedVariables>
1734 <expression xsi:type="language_1:And">
1735 <operands xsi:type="language_1:Equals">
1736 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28/@value/@operands.0/@quantifiedVariables.0"/>
1737 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.3"/>
1738 </operands>
1739 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1740 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28/@variables.0"/>
1741 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28/@value/@operands.0/@quantifiedVariables.0"/>
1742 </operands>
1743 </expression>
1744 </operands>
1745 </value>
1746 </relations>
1747 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium" annotations="//@annotations.41">
1748 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1749 <variables name="parameter Comm">
1750 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1751 </variables>
1752 <value xsi:type="language_1:Or">
1753 <operands xsi:type="language_1:Exists">
1754 <quantifiedVariables name="variable virtual0">
1755 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1756 </quantifiedVariables>
1757 <expression xsi:type="language_1:And">
1758 <operands xsi:type="language_1:Equals">
1759 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.0"/>
1760 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.1"/>
1761 </operands>
1762 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1763 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@variables.0"/>
1764 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.0"/>
1765 </operands>
1766 <operands xsi:type="language_1:Not">
1767 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30">
1768 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@variables.0"/>
1769 </operand>
1770 </operands>
1771 </expression>
1772 </operands>
1773 </value>
1774 </relations>
1775 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainMedium" annotations="//@annotations.42">
1776 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1777 <variables name="parameter Comm">
1778 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1779 </variables>
1780 <value xsi:type="language_1:Or">
1781 <operands xsi:type="language_1:Exists">
1782 <quantifiedVariables name="variable virtual0">
1783 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1784 </quantifiedVariables>
1785 <expression xsi:type="language_1:And">
1786 <operands xsi:type="language_1:Equals">
1787 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30/@value/@operands.0/@quantifiedVariables.0"/>
1788 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.4"/>
1789 </operands>
1790 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1791 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30/@variables.0"/>
1792 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30/@value/@operands.0/@quantifiedVariables.0"/>
1793 </operands>
1794 </expression>
1795 </operands>
1796 </value>
1797 </relations>
1798 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow" annotations="//@annotations.43">
1799 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1800 <variables name="parameter Comm">
1801 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1802 </variables>
1803 <value xsi:type="language_1:Or">
1804 <operands xsi:type="language_1:Exists">
1805 <quantifiedVariables name="variable virtual0">
1806 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1807 </quantifiedVariables>
1808 <quantifiedVariables name="variable virtual2">
1809 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1810 </quantifiedVariables>
1811 <expression xsi:type="language_1:And">
1812 <operands xsi:type="language_1:Equals">
1813 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@value/@operands.0/@quantifiedVariables.0"/>
1814 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
1815 </operands>
1816 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1817 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@variables.0"/>
1818 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@value/@operands.0/@quantifiedVariables.0"/>
1819 </operands>
1820 <operands xsi:type="language_1:Equals">
1821 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@value/@operands.0/@quantifiedVariables.1"/>
1822 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.3"/>
1823 </operands>
1824 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
1825 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@variables.0"/>
1826 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31/@value/@operands.0/@quantifiedVariables.1"/>
1827 </operands>
1828 </expression>
1829 </operands>
1830 </value>
1831 </relations>
1832 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink" annotations="//@annotations.44">
1833 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1834 <variables name="parameter Sat">
1835 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1836 </variables>
1837 <value xsi:type="language_1:Or">
1838 <operands xsi:type="language_1:Exists">
1839 <quantifiedVariables name="variable SourceComm">
1840 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1841 </quantifiedVariables>
1842 <quantifiedVariables name="variable Link">
1843 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1844 </quantifiedVariables>
1845 <quantifiedVariables name="variable TargetComm">
1846 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1847 </quantifiedVariables>
1848 <quantifiedVariables name="variable Target">
1849 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1850 </quantifiedVariables>
1851 <expression xsi:type="language_1:And">
1852 <operands xsi:type="language_1:InstanceOf">
1853 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@variables.0"/>
1854 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1855 </operands>
1856 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1857 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@variables.0"/>
1858 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.0"/>
1859 </operands>
1860 <operands xsi:type="language_1:Not">
1861 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33">
1862 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.0"/>
1863 </operand>
1864 </operands>
1865 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1866 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.1"/>
1867 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.0"/>
1868 </operands>
1869 <operands xsi:type="language_1:InstanceOf">
1870 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.0"/>
1871 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1872 </operands>
1873 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1874 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.1"/>
1875 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.2"/>
1876 </operands>
1877 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1878 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.3"/>
1879 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.2"/>
1880 </operands>
1881 <operands xsi:type="language_1:InstanceOf">
1882 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.2"/>
1883 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1884 </operands>
1885 <operands xsi:type="language_1:Not">
1886 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.34">
1887 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32/@value/@operands.0/@quantifiedVariables.3"/>
1888 </operand>
1889 </operands>
1890 </expression>
1891 </operands>
1892 </value>
1893 </relations>
1894 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBandUhf" annotations="//@annotations.45">
1895 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1896 <variables name="parameter Comm">
1897 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1898 </variables>
1899 <value xsi:type="language_1:Or">
1900 <operands xsi:type="language_1:Exists">
1901 <quantifiedVariables name="variable virtual0">
1902 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1903 </quantifiedVariables>
1904 <expression xsi:type="language_1:And">
1905 <operands xsi:type="language_1:Equals">
1906 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33/@value/@operands.0/@quantifiedVariables.0"/>
1907 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1908 </operands>
1909 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1910 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33/@variables.0"/>
1911 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33/@value/@operands.0/@quantifiedVariables.0"/>
1912 </operands>
1913 </expression>
1914 </operands>
1915 </value>
1916 </relations>
1917 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries groundStationNetwork" annotations="//@annotations.46">
1918 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1919 <variables name="parameter Network">
1920 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1921 </variables>
1922 <value xsi:type="language_1:Or">
1923 <operands xsi:type="language_1:And">
1924 <operands xsi:type="language_1:InstanceOf">
1925 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.34/@variables.0"/>
1926 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1927 </operands>
1928 </operands>
1929 </value>
1930 </relations>
1931 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna" annotations="//@annotations.47">
1932 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1933 <variables name="parameter Spacecraft">
1934 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1935 </variables>
1936 <value xsi:type="language_1:Or">
1937 <operands xsi:type="language_1:Exists">
1938 <quantifiedVariables name="variable virtual0">
1939 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1940 </quantifiedVariables>
1941 <quantifiedVariables name="variable virtual1">
1942 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1943 </quantifiedVariables>
1944 <expression xsi:type="language_1:And">
1945 <operands xsi:type="language_1:InstanceOf">
1946 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@variables.0"/>
1947 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1948 </operands>
1949 <operands xsi:type="language_1:Equals">
1950 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@value/@operands.0/@quantifiedVariables.0"/>
1951 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
1952 </operands>
1953 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1954 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@variables.0"/>
1955 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@value/@operands.0/@quantifiedVariables.1"/>
1956 </operands>
1957 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1958 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@value/@operands.0/@quantifiedVariables.1"/>
1959 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@value/@operands.0/@quantifiedVariables.0"/>
1960 </operands>
1961 <operands xsi:type="language_1:Not">
1962 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.36">
1963 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.35/@variables.0"/>
1964 </operand>
1965 </operands>
1966 </expression>
1967 </operands>
1968 </value>
1969 </relations>
1970 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries smallSat" annotations="//@annotations.48">
1971 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1972 <variables name="parameter Sat">
1973 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1974 </variables>
1975 <value xsi:type="language_1:Or">
1976 <operands xsi:type="language_1:And">
1977 <operands xsi:type="language_1:InstanceOf">
1978 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.36/@variables.0"/>
1979 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1980 </operands>
1981 </operands>
1982 </value>
1983 </relations>
1984 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries spacecraftOfKind" annotations="//@annotations.49" defines="//@relations.7">
1985 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1986 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1987 <variables name="parameter Spacecraft">
1988 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1989 </variables>
1990 <variables name="parameter Kind">
1991 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1992 </variables>
1993 <value xsi:type="language_1:Or">
1994 <operands xsi:type="language_1:And">
1995 <operands xsi:type="language_1:InstanceOf">
1996 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.0"/>
1997 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1998 </operands>
1999 <operands xsi:type="language_1:Equals">
2000 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.1"/>
2001 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.6"/>
2002 </operands>
2003 </operands>
2004 <operands xsi:type="language_1:And">
2005 <operands xsi:type="language_1:InstanceOf">
2006 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.0"/>
2007 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
2008 </operands>
2009 <operands xsi:type="language_1:Equals">
2010 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.1"/>
2011 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.7"/>
2012 </operands>
2013 </operands>
2014 <operands xsi:type="language_1:And">
2015 <operands xsi:type="language_1:InstanceOf">
2016 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.0"/>
2017 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
2018 </operands>
2019 <operands xsi:type="language_1:Equals">
2020 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37/@variables.1"/>
2021 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.8"/>
2022 </operands>
2023 </operands>
2024 </value>
2025 </relations>
2026 <elements name="UHF literal TransceiverBand" definedInType="//@types.13"/>
2027 <elements name="X literal TransceiverBand" definedInType="//@types.13"/>
2028 <elements name="Ka literal TransceiverBand" definedInType="//@types.13"/>
2029 <elements name="LOW literal AntennaGain" definedInType="//@types.14"/>
2030 <elements name="MEDIUM literal AntennaGain" definedInType="//@types.14"/>
2031 <elements name="HIGH literal AntennaGain" definedInType="//@types.14"/>
2032 <elements name="CubeSat3U literal SpacecraftKind" definedInType="//@types.15"/>
2033 <elements name="CubeSat6U literal SpacecraftKind" definedInType="//@types.15"/>
2034 <elements name="SmallSat literal SpacecraftKind" definedInType="//@types.15"/>
2035 <elements name="o 1" definedInType="//@types.16 //@types.18"/>
2036 <elements name="o 2" definedInType="//@types.20 //@types.22"/>
2037 <elements name="o 3" definedInType="//@types.24"/>
2038 <elements name="o 4" definedInType="//@types.24"/>
2039 <containmentHierarchies typesOrderedInHierarchy="//@types.8 //@types.4 //@types.6 //@types.12 //@types.0 //@types.1 //@types.9 //@types.2 //@types.10 //@types.11 //@types.5 //@types.3 //@types.7 //@types.16 //@types.17 //@types.18 //@types.19 //@types.20 //@types.21 //@types.22 //@types.23 //@types.24 //@types.25" containmentRelations="//@relations.0 //@relations.1 //@relations.2 //@relations.3 //@relations.4"/>
2040 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" lower="1"/>
2041 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.0" upper="1"/>
2042 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" lower="2"/>
2043 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.3" relation="//@relations.1" upper="50"/>
2044 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.4" relation="//@relations.2" lower="1"/>
2045 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.5" relation="//@relations.2" upper="2"/>
2046 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.6" relation="//@relations.3" upper="1"/>
2047 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.7" relation="//@relations.4" upper="1"/>
2048 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.8" relation="//@relations.5" lower="1"/>
2049 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.9" relation="//@relations.5" upper="1"/>
2050 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.10" relation="//@relations.6" lower="1"/>
2051 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.11" relation="//@relations.6" upper="1"/>
2052 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.12" relation="//@relations.7" lower="1"/>
2053 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.13" relation="//@relations.7" upper="1"/>
2054 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.14" relation="//@relations.8" lower="1"/>
2055 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.15" relation="//@relations.8" upper="1"/>
2056 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.16" relation="//@relations.9" lower="1"/>
2057 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.17" relation="//@relations.9" upper="1"/>
2058 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.18" targetRelation="//@relations.0"/>
2059 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.19" targetRelation="//@relations.2"/>
2060 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.20" targetRelation="//@relations.8"/>
2061 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.21" targetRelation="//@relations.9"/>
2062 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.10" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement"/>
2063 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.11" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads"/>
2064 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.12" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.atLeastTwoInterferometryPayloads"/>
2065 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.13" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftWithInterferometryPayload"/>
2066 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.14" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation"/>
2067 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.15" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation"/>
2068 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.16" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.indirectLinkAllowed"/>
2069 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.17" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.linkAllowed"/>
2070 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.18" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.matchingAntenna"/>
2071 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.19" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSat3U"/>
2072 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.20" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop"/>
2073 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.21" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.indirectCommunicationLink"/>
2074 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.22" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.directCommunicationLink"/>
2075 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.23" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand"/>
2076 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.24" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBand"/>
2077 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.25" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain"/>
2078 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.26" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGain"/>
2079 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.27" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow"/>
2080 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.28" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainLow"/>
2081 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.29" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium"/>
2082 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.30" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainMedium"/>
2083 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.31" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow"/>
2084 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.32" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink"/>
2085 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.33" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBandUhf"/>
2086 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.34" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.groundStationNetwork"/>
2087 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.35" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna"/>
2088 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.36" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat"/>
2089 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.37" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind"/>
2090 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.22" query="//@annotations.22"/>
2091 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.23" query="//@annotations.23"/>
2092 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.24" query="//@annotations.26"/>
2093 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.25" query="//@annotations.27"/>
2094 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.26" query="//@annotations.32"/>
2095 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.27" query="//@annotations.35"/>
2096 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.28" query="//@annotations.37"/>
2097 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.29" query="//@annotations.39"/>
2098 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.30" query="//@annotations.41"/>
2099 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.31" query="//@annotations.43"/>
2100 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.32" query="//@annotations.44"/>
2101 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.33" query="//@annotations.47"/>
2102 <annotations xsi:type="viatra2logicannotations:DefinedByDerivedFeature" target="//@relations.7" query="//@annotations.49"/>
2103</language:LogicProblem>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel
new file mode 100644
index 00000000..6589a3ca
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel
@@ -0,0 +1,170 @@
1<?xml version="1.0" encoding="ASCII"?>
2<partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="16" maxNewElements="32">
3 <problem href="outputs/debug/generation.logicproblem#/"/>
4 <partialrelationinterpretation>
5 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.0"/>
6 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
7 <param1 href="outputs/debug/generation.logicproblem#//@elements.9"/>
8 <param2 href="outputs/debug/generation.logicproblem#//@elements.10"/>
9 </relationlinks>
10 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.0"/>
11 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.1"/>
12 </partialrelationinterpretation>
13 <partialrelationinterpretation>
14 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.1"/>
15 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.0"/>
16 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.1"/>
17 </partialrelationinterpretation>
18 <partialrelationinterpretation>
19 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.2"/>
20 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
21 <param1 href="outputs/debug/generation.logicproblem#//@elements.10"/>
22 <param2 href="outputs/debug/generation.logicproblem#//@elements.11"/>
23 </relationlinks>
24 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
25 <param1 href="outputs/debug/generation.logicproblem#//@elements.10"/>
26 <param2 href="outputs/debug/generation.logicproblem#//@elements.12"/>
27 </relationlinks>
28 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.0"/>
29 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.1"/>
30 </partialrelationinterpretation>
31 <partialrelationinterpretation>
32 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.3"/>
33 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.0"/>
34 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.1"/>
35 </partialrelationinterpretation>
36 <partialrelationinterpretation>
37 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.4"/>
38 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.0"/>
39 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.1"/>
40 </partialrelationinterpretation>
41 <partialrelationinterpretation>
42 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.5"/>
43 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.5/@parameters.0"/>
44 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.5/@parameters.1"/>
45 </partialrelationinterpretation>
46 <partialrelationinterpretation>
47 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.6"/>
48 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.6/@parameters.0"/>
49 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.6/@parameters.1"/>
50 </partialrelationinterpretation>
51 <partialrelationinterpretation>
52 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.7"/>
53 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.7/@parameters.0"/>
54 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.7/@parameters.1"/>
55 </partialrelationinterpretation>
56 <partialrelationinterpretation>
57 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.8"/>
58 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
59 <param1 href="outputs/debug/generation.logicproblem#//@elements.11"/>
60 <param2 href="outputs/debug/generation.logicproblem#//@elements.1"/>
61 </relationlinks>
62 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
63 <param1 href="outputs/debug/generation.logicproblem#//@elements.12"/>
64 <param2 href="outputs/debug/generation.logicproblem#//@elements.2"/>
65 </relationlinks>
66 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.8/@parameters.0"/>
67 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.8/@parameters.1"/>
68 </partialrelationinterpretation>
69 <partialrelationinterpretation>
70 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.9"/>
71 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
72 <param1 href="outputs/debug/generation.logicproblem#//@elements.11"/>
73 <param2 href="outputs/debug/generation.logicproblem#//@elements.4"/>
74 </relationlinks>
75 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
76 <param1 href="outputs/debug/generation.logicproblem#//@elements.12"/>
77 <param2 href="outputs/debug/generation.logicproblem#//@elements.5"/>
78 </relationlinks>
79 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.9/@parameters.0"/>
80 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.9/@parameters.1"/>
81 </partialrelationinterpretation>
82 <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/>
83 <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/>
84 <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/>
85 <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@openWorldElements.0"/>
86 <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.1"/>
87 <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@openWorldElements.2"/>
88 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0">
89 <elements href="outputs/debug/generation.logicproblem#//@elements.9"/>
90 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.0"/>
91 </partialtypeinterpratation>
92 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1" supertypeInterpretation="//@partialtypeinterpratation.4">
93 <elements href="outputs/debug/generation.logicproblem#//@elements.9"/>
94 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.1"/>
95 </partialtypeinterpratation>
96 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2">
97 <elements href="outputs/debug/generation.logicproblem#//@elements.10"/>
98 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.2"/>
99 </partialtypeinterpratation>
100 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.3" supertypeInterpretation="//@partialtypeinterpratation.6">
101 <elements href="outputs/debug/generation.logicproblem#//@elements.10"/>
102 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.3"/>
103 </partialtypeinterpratation>
104 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.4" supertypeInterpretation="//@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
105 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.4"/>
106 </partialtypeinterpratation>
107 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.5">
108 <elements href="outputs/debug/generation.logicproblem#//@elements.11"/>
109 <elements href="outputs/debug/generation.logicproblem#//@elements.12"/>
110 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.5"/>
111 </partialtypeinterpratation>
112 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.6">
113 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.6"/>
114 </partialtypeinterpratation>
115 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.7">
116 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.7"/>
117 </partialtypeinterpratation>
118 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8" supertypeInterpretation="//@partialtypeinterpratation.11">
119 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.8"/>
120 </partialtypeinterpratation>
121 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.9" supertypeInterpretation="//@partialtypeinterpratation.16 //@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
122 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.9"/>
123 </partialtypeinterpratation>
124 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.10" supertypeInterpretation="//@partialtypeinterpratation.16 //@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
125 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.10"/>
126 </partialtypeinterpratation>
127 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.11" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
128 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.11"/>
129 </partialtypeinterpratation>
130 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.12" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
131 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.12"/>
132 </partialtypeinterpratation>
133 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.13" supertypeInterpretation="//@partialtypeinterpratation.4">
134 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.17"/>
135 </partialtypeinterpratation>
136 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.14" supertypeInterpretation="//@partialtypeinterpratation.5 //@partialtypeinterpratation.4 //@partialtypeinterpratation.17">
137 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.19"/>
138 </partialtypeinterpratation>
139 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.15" supertypeInterpretation="//@partialtypeinterpratation.6">
140 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.21"/>
141 </partialtypeinterpratation>
142 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.16" supertypeInterpretation="//@partialtypeinterpratation.7 //@partialtypeinterpratation.6 //@partialtypeinterpratation.19">
143 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.23"/>
144 </partialtypeinterpratation>
145 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.17" supertypeInterpretation="//@partialtypeinterpratation.9">
146 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.25"/>
147 </partialtypeinterpratation>
148 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/>
149 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
150 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
151 <openWorldElements name="New Objects"/>
152 <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/>
153 <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/>
154 <scopes targetTypeInterpretation="//@partialtypeinterpratation.6"/>
155 <scopes targetTypeInterpretation="//@partialtypeinterpratation.7"/>
156 <scopes targetTypeInterpretation="//@partialtypeinterpratation.8"/>
157 <scopes targetTypeInterpretation="//@partialtypeinterpratation.9"/>
158 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/>
159 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/>
160 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/>
161 <scopes targetTypeInterpretation="//@partialtypeinterpratation.13"/>
162 <scopes targetTypeInterpretation="//@partialtypeinterpratation.14"/>
163 <scopes targetTypeInterpretation="//@partialtypeinterpratation.15"/>
164 <scopes targetTypeInterpretation="//@partialtypeinterpratation.16"/>
165 <scopes targetTypeInterpretation="//@partialtypeinterpratation.17"/>
166 <scopes targetTypeInterpretation="//@partialtypeinterpratation.18"/>
167 <scopes targetTypeInterpretation="//@partialtypeinterpratation.19"/>
168 <scopes targetTypeInterpretation="//@partialtypeinterpratation.20"/>
169 <scopes targetTypeInterpretation="//@partialtypeinterpratation.21"/>
170</partialinterpretation:PartialInterpretation>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/log.txt b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/log.txt
new file mode 100644
index 00000000..1d3c9f62
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/log.txt
@@ -0,0 +1 @@
Model generation started
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.gml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.gml
new file mode 100644
index 00000000..59498c9f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.gml
@@ -0,0 +1,1627 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 244.20000000000002
9 h 40
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "UHF literal TransceiverBand"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 TransceiverBand enum
30 "
31 fontSize 14
32 fontName "Consolas"
33 alignment "left"
34 anchor "tl"
35 borderDistance 6
36 ]
37 ]
38
39 node
40 [
41 id 1
42 graphics
43 [
44 w 226.60000000000002
45 h 40
46 type "rectangle"
47 fill "#FFFFFF"
48 fill2 "#FFFFFF"
49 outline "#000000"
50 ]
51 LabelGraphics
52 [
53 text "X literal TransceiverBand"
54 outline "#000000"
55 fill "#FFFFFF"
56 fontSize 16
57 fontName "Monospace"
58 autoSizePolicy "node_width"
59 anchor "t"
60 borderDistance 0.0
61 ]
62 LabelGraphics
63 [
64 text "
65 TransceiverBand enum
66 "
67 fontSize 14
68 fontName "Consolas"
69 alignment "left"
70 anchor "tl"
71 borderDistance 6
72 ]
73 ]
74
75 node
76 [
77 id 2
78 graphics
79 [
80 w 235.4
81 h 40
82 type "rectangle"
83 fill "#FFFFFF"
84 fill2 "#FFFFFF"
85 outline "#000000"
86 ]
87 LabelGraphics
88 [
89 text "Ka literal TransceiverBand"
90 outline "#000000"
91 fill "#FFFFFF"
92 fontSize 16
93 fontName "Monospace"
94 autoSizePolicy "node_width"
95 anchor "t"
96 borderDistance 0.0
97 ]
98 LabelGraphics
99 [
100 text "
101 TransceiverBand enum
102 "
103 fontSize 14
104 fontName "Consolas"
105 alignment "left"
106 anchor "tl"
107 borderDistance 6
108 ]
109 ]
110
111 node
112 [
113 id 3
114 graphics
115 [
116 w 209.00000000000003
117 h 40
118 type "rectangle"
119 fill "#FFFFFF"
120 fill2 "#FFFFFF"
121 outline "#000000"
122 ]
123 LabelGraphics
124 [
125 text "LOW literal AntennaGain"
126 outline "#000000"
127 fill "#FFFFFF"
128 fontSize 16
129 fontName "Monospace"
130 autoSizePolicy "node_width"
131 anchor "t"
132 borderDistance 0.0
133 ]
134 LabelGraphics
135 [
136 text "
137 AntennaGain enum
138 "
139 fontSize 14
140 fontName "Consolas"
141 alignment "left"
142 anchor "tl"
143 borderDistance 6
144 ]
145 ]
146
147 node
148 [
149 id 4
150 graphics
151 [
152 w 235.4
153 h 40
154 type "rectangle"
155 fill "#FFFFFF"
156 fill2 "#FFFFFF"
157 outline "#000000"
158 ]
159 LabelGraphics
160 [
161 text "MEDIUM literal AntennaGain"
162 outline "#000000"
163 fill "#FFFFFF"
164 fontSize 16
165 fontName "Monospace"
166 autoSizePolicy "node_width"
167 anchor "t"
168 borderDistance 0.0
169 ]
170 LabelGraphics
171 [
172 text "
173 AntennaGain enum
174 "
175 fontSize 14
176 fontName "Consolas"
177 alignment "left"
178 anchor "tl"
179 borderDistance 6
180 ]
181 ]
182
183 node
184 [
185 id 5
186 graphics
187 [
188 w 217.8
189 h 40
190 type "rectangle"
191 fill "#FFFFFF"
192 fill2 "#FFFFFF"
193 outline "#000000"
194 ]
195 LabelGraphics
196 [
197 text "HIGH literal AntennaGain"
198 outline "#000000"
199 fill "#FFFFFF"
200 fontSize 16
201 fontName "Monospace"
202 autoSizePolicy "node_width"
203 anchor "t"
204 borderDistance 0.0
205 ]
206 LabelGraphics
207 [
208 text "
209 AntennaGain enum
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 288.20000000000005
225 h 40
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "CubeSat3U literal SpacecraftKind"
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 SpacecraftKind enum
246 "
247 fontSize 14
248 fontName "Consolas"
249 alignment "left"
250 anchor "tl"
251 borderDistance 6
252 ]
253 ]
254
255 node
256 [
257 id 7
258 graphics
259 [
260 w 288.20000000000005
261 h 40
262 type "rectangle"
263 fill "#FFFFFF"
264 fill2 "#FFFFFF"
265 outline "#000000"
266 ]
267 LabelGraphics
268 [
269 text "CubeSat6U literal SpacecraftKind"
270 outline "#000000"
271 fill "#FFFFFF"
272 fontSize 16
273 fontName "Monospace"
274 autoSizePolicy "node_width"
275 anchor "t"
276 borderDistance 0.0
277 ]
278 LabelGraphics
279 [
280 text "
281 SpacecraftKind enum
282 "
283 fontSize 14
284 fontName "Consolas"
285 alignment "left"
286 anchor "tl"
287 borderDistance 6
288 ]
289 ]
290
291 node
292 [
293 id 8
294 graphics
295 [
296 w 279.40000000000003
297 h 40
298 type "rectangle"
299 fill "#FFFFFF"
300 fill2 "#FFFFFF"
301 outline "#000000"
302 ]
303 LabelGraphics
304 [
305 text "SmallSat literal SpacecraftKind"
306 outline "#000000"
307 fill "#FFFFFF"
308 fontSize 16
309 fontName "Monospace"
310 autoSizePolicy "node_width"
311 anchor "t"
312 borderDistance 0.0
313 ]
314 LabelGraphics
315 [
316 text "
317 SpacecraftKind enum
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 315.70000000000005
333 h 82
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "o 1"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 ConstellationMission class DefinedPart
354 InterferometryMission class DefinedPart
355 ConstellationMission class
356 InterferometryMission class
357 "
358 fontSize 14
359 fontName "Consolas"
360 alignment "left"
361 anchor "tl"
362 borderDistance 6
363 ]
364 ]
365
366 node
367 [
368 id 10
369 graphics
370 [
371 w 308.0
372 h 82
373 type "rectangle"
374 fill "#FFFFFF"
375 fill2 "#FFFFFF"
376 outline "#000000"
377 ]
378 LabelGraphics
379 [
380 text "o 2"
381 outline "#000000"
382 fill "#FFFFFF"
383 fontSize 16
384 fontName "Monospace"
385 autoSizePolicy "node_width"
386 anchor "t"
387 borderDistance 0.0
388 ]
389 LabelGraphics
390 [
391 text "
392 CommunicatingElement class DefinedPart
393 GroundStationNetwork class DefinedPart
394 CommunicatingElement class
395 GroundStationNetwork class
396 "
397 fontSize 14
398 fontName "Consolas"
399 alignment "left"
400 anchor "tl"
401 borderDistance 6
402 ]
403 ]
404
405 node
406 [
407 id 11
408 graphics
409 [
410 w 254.10000000000002
411 h 54
412 type "rectangle"
413 fill "#FFFFFF"
414 fill2 "#FFFFFF"
415 outline "#000000"
416 ]
417 LabelGraphics
418 [
419 text "o 3"
420 outline "#000000"
421 fill "#FFFFFF"
422 fontSize 16
423 fontName "Monospace"
424 autoSizePolicy "node_width"
425 anchor "t"
426 borderDistance 0.0
427 ]
428 LabelGraphics
429 [
430 text "
431 CommSubsystem class DefinedPart
432 CommSubsystem class
433 "
434 fontSize 14
435 fontName "Consolas"
436 alignment "left"
437 anchor "tl"
438 borderDistance 6
439 ]
440 ]
441
442 node
443 [
444 id 12
445 graphics
446 [
447 w 254.10000000000002
448 h 54
449 type "rectangle"
450 fill "#FFFFFF"
451 fill2 "#FFFFFF"
452 outline "#000000"
453 ]
454 LabelGraphics
455 [
456 text "o 4"
457 outline "#000000"
458 fill "#FFFFFF"
459 fontSize 16
460 fontName "Monospace"
461 autoSizePolicy "node_width"
462 anchor "t"
463 borderDistance 0.0
464 ]
465 LabelGraphics
466 [
467 text "
468 CommSubsystem class DefinedPart
469 CommSubsystem class
470 "
471 fontSize 14
472 fontName "Consolas"
473 alignment "left"
474 anchor "tl"
475 borderDistance 6
476 ]
477 ]
478
479 node
480 [
481 id 13
482 graphics
483 [
484 w 41.800000000000004
485 h 26
486 type "rectangle"
487 fill "#FFFFFF"
488 fill2 "#FFFFFF"
489 outline "#000000"
490 ]
491 LabelGraphics
492 [
493 text "true"
494 outline "#000000"
495 fill "#FFFFFF"
496 fontSize 16
497 fontName "Monospace"
498 autoSizePolicy "node_width"
499 anchor "t"
500 borderDistance 0.0
501 ]
502 LabelGraphics
503 [
504 text "
505 "
506 fontSize 14
507 fontName "Consolas"
508 alignment "left"
509 anchor "tl"
510 borderDistance 6
511 ]
512 ]
513
514 node
515 [
516 id 14
517 graphics
518 [
519 w 50.6
520 h 26
521 type "rectangle"
522 fill "#FFFFFF"
523 fill2 "#FFFFFF"
524 outline "#000000"
525 ]
526 LabelGraphics
527 [
528 text "false"
529 outline "#000000"
530 fill "#FFFFFF"
531 fontSize 16
532 fontName "Monospace"
533 autoSizePolicy "node_width"
534 anchor "t"
535 borderDistance 0.0
536 ]
537 LabelGraphics
538 [
539 text "
540 "
541 fontSize 14
542 fontName "Consolas"
543 alignment "left"
544 anchor "tl"
545 borderDistance 6
546 ]
547 ]
548
549 node
550 [
551 id 15
552 graphics
553 [
554 w 323.40000000000003
555 h 96
556 type "rectangle"
557 fill "#FFFFFF"
558 fill2 "#FFFFFF"
559 outline "#000000"
560 ]
561 LabelGraphics
562 [
563 text "null"
564 outline "#000000"
565 fill "#FFFFFF"
566 fontSize 16
567 fontName "Monospace"
568 autoSizePolicy "node_width"
569 anchor "t"
570 borderDistance 0.0
571 ]
572 LabelGraphics
573 [
574 text "
575 CommunicatingElement class
576 Spacecraft class
577 CubeSat6U class
578 CubeSat class
579 CommunicatingElement class UndefinedPart
580 "
581 fontSize 14
582 fontName "Consolas"
583 alignment "left"
584 anchor "tl"
585 borderDistance 6
586 ]
587 ]
588
589 node
590 [
591 id 16
592 graphics
593 [
594 w 323.40000000000003
595 h 96
596 type "rectangle"
597 fill "#FFFFFF"
598 fill2 "#FFFFFF"
599 outline "#000000"
600 ]
601 LabelGraphics
602 [
603 text "null"
604 outline "#000000"
605 fill "#FFFFFF"
606 fontSize 16
607 fontName "Monospace"
608 autoSizePolicy "node_width"
609 anchor "t"
610 borderDistance 0.0
611 ]
612 LabelGraphics
613 [
614 text "
615 CommunicatingElement class
616 Spacecraft class
617 CubeSat3U class
618 CubeSat class
619 CommunicatingElement class UndefinedPart
620 "
621 fontSize 14
622 fontName "Consolas"
623 alignment "left"
624 anchor "tl"
625 borderDistance 6
626 ]
627 ]
628
629 node
630 [
631 id 17
632 graphics
633 [
634 w 223.3
635 h 54
636 type "rectangle"
637 fill "#FFFFFF"
638 fill2 "#FFFFFF"
639 outline "#000000"
640 ]
641 LabelGraphics
642 [
643 text "null"
644 outline "#000000"
645 fill "#FFFFFF"
646 fontSize 16
647 fontName "Monospace"
648 autoSizePolicy "node_width"
649 anchor "t"
650 borderDistance 0.0
651 ]
652 LabelGraphics
653 [
654 text "
655 Payload class
656 InterferometryPayload class
657 "
658 fontSize 14
659 fontName "Consolas"
660 alignment "left"
661 anchor "tl"
662 borderDistance 6
663 ]
664 ]
665
666 node
667 [
668 id 18
669 graphics
670 [
671 w 269.5
672 h 54
673 type "rectangle"
674 fill "#FFFFFF"
675 fill2 "#FFFFFF"
676 outline "#000000"
677 ]
678 LabelGraphics
679 [
680 text "null"
681 outline "#000000"
682 fill "#FFFFFF"
683 fontSize 16
684 fontName "Monospace"
685 autoSizePolicy "node_width"
686 anchor "t"
687 borderDistance 0.0
688 ]
689 LabelGraphics
690 [
691 text "
692 CommSubsystem class
693 CommSubsystem class UndefinedPart
694 "
695 fontSize 14
696 fontName "Consolas"
697 alignment "left"
698 anchor "tl"
699 borderDistance 6
700 ]
701 ]
702
703 node
704 [
705 id 19
706 graphics
707 [
708 w 223.3
709 h 54
710 type "rectangle"
711 fill "#FFFFFF"
712 fill2 "#FFFFFF"
713 outline "#000000"
714 ]
715 LabelGraphics
716 [
717 text "null"
718 outline "#000000"
719 fill "#FFFFFF"
720 fontSize 16
721 fontName "Monospace"
722 autoSizePolicy "node_width"
723 anchor "t"
724 borderDistance 0.0
725 ]
726 LabelGraphics
727 [
728 text "
729 Payload class
730 InterferometryPayload class
731 "
732 fontSize 14
733 fontName "Consolas"
734 alignment "left"
735 anchor "tl"
736 borderDistance 6
737 ]
738 ]
739
740 node
741 [
742 id 20
743 graphics
744 [
745 w 269.5
746 h 54
747 type "rectangle"
748 fill "#FFFFFF"
749 fill2 "#FFFFFF"
750 outline "#000000"
751 ]
752 LabelGraphics
753 [
754 text "null"
755 outline "#000000"
756 fill "#FFFFFF"
757 fontSize 16
758 fontName "Monospace"
759 autoSizePolicy "node_width"
760 anchor "t"
761 borderDistance 0.0
762 ]
763 LabelGraphics
764 [
765 text "
766 CommSubsystem class
767 CommSubsystem class UndefinedPart
768 "
769 fontSize 14
770 fontName "Consolas"
771 alignment "left"
772 anchor "tl"
773 borderDistance 6
774 ]
775 ]
776
777 node
778 [
779 id 21
780 graphics
781 [
782 w 254.10000000000002
783 h 40
784 type "rectangle"
785 fill "#FFFFFF"
786 fill2 "#FFFFFF"
787 outline "#000000"
788 ]
789 LabelGraphics
790 [
791 text "null"
792 outline "#000000"
793 fill "#FFFFFF"
794 fontSize 16
795 fontName "Monospace"
796 autoSizePolicy "node_width"
797 anchor "t"
798 borderDistance 0.0
799 ]
800 LabelGraphics
801 [
802 text "
803 DirectedCommunicationLink class
804 "
805 fontSize 14
806 fontName "Consolas"
807 alignment "left"
808 anchor "tl"
809 borderDistance 6
810 ]
811 ]
812
813 node
814 [
815 id 22
816 graphics
817 [
818 w 269.5
819 h 54
820 type "rectangle"
821 fill "#FFFFFF"
822 fill2 "#FFFFFF"
823 outline "#000000"
824 ]
825 LabelGraphics
826 [
827 text "null"
828 outline "#000000"
829 fill "#FFFFFF"
830 fontSize 16
831 fontName "Monospace"
832 autoSizePolicy "node_width"
833 anchor "t"
834 borderDistance 0.0
835 ]
836 LabelGraphics
837 [
838 text "
839 CommSubsystem class
840 CommSubsystem class UndefinedPart
841 "
842 fontSize 14
843 fontName "Consolas"
844 alignment "left"
845 anchor "tl"
846 borderDistance 6
847 ]
848 ]
849
850 node
851 [
852 id 23
853 graphics
854 [
855 w 269.5
856 h 54
857 type "rectangle"
858 fill "#FFFFFF"
859 fill2 "#FFFFFF"
860 outline "#000000"
861 ]
862 LabelGraphics
863 [
864 text "null"
865 outline "#000000"
866 fill "#FFFFFF"
867 fontSize 16
868 fontName "Monospace"
869 autoSizePolicy "node_width"
870 anchor "t"
871 borderDistance 0.0
872 ]
873 LabelGraphics
874 [
875 text "
876 CommSubsystem class
877 CommSubsystem class UndefinedPart
878 "
879 fontSize 14
880 fontName "Consolas"
881 alignment "left"
882 anchor "tl"
883 borderDistance 6
884 ]
885 ]
886
887 node
888 [
889 id 24
890 graphics
891 [
892 w 254.10000000000002
893 h 40
894 type "rectangle"
895 fill "#FFFFFF"
896 fill2 "#FFFFFF"
897 outline "#000000"
898 ]
899 LabelGraphics
900 [
901 text "null"
902 outline "#000000"
903 fill "#FFFFFF"
904 fontSize 16
905 fontName "Monospace"
906 autoSizePolicy "node_width"
907 anchor "t"
908 borderDistance 0.0
909 ]
910 LabelGraphics
911 [
912 text "
913 DirectedCommunicationLink class
914 "
915 fontSize 14
916 fontName "Consolas"
917 alignment "left"
918 anchor "tl"
919 borderDistance 6
920 ]
921 ]
922
923 node
924 [
925 id 25
926 graphics
927 [
928 w 112.2
929 h 26
930 type "rectangle"
931 fill "#FFFFFF"
932 fill2 "#FFFFFF"
933 outline "#000000"
934 ]
935 LabelGraphics
936 [
937 text "New Integers"
938 outline "#000000"
939 fill "#FFFFFF"
940 fontSize 16
941 fontName "Monospace"
942 autoSizePolicy "node_width"
943 anchor "t"
944 borderDistance 0.0
945 ]
946 LabelGraphics
947 [
948 text "
949 "
950 fontSize 14
951 fontName "Consolas"
952 alignment "left"
953 anchor "tl"
954 borderDistance 6
955 ]
956 ]
957
958 node
959 [
960 id 26
961 graphics
962 [
963 w 85.80000000000001
964 h 26
965 type "rectangle"
966 fill "#FFFFFF"
967 fill2 "#FFFFFF"
968 outline "#000000"
969 ]
970 LabelGraphics
971 [
972 text "New Reals"
973 outline "#000000"
974 fill "#FFFFFF"
975 fontSize 16
976 fontName "Monospace"
977 autoSizePolicy "node_width"
978 anchor "t"
979 borderDistance 0.0
980 ]
981 LabelGraphics
982 [
983 text "
984 "
985 fontSize 14
986 fontName "Consolas"
987 alignment "left"
988 anchor "tl"
989 borderDistance 6
990 ]
991 ]
992
993 node
994 [
995 id 27
996 graphics
997 [
998 w 103.4
999 h 26
1000 type "rectangle"
1001 fill "#FFFFFF"
1002 fill2 "#FFFFFF"
1003 outline "#000000"
1004 ]
1005 LabelGraphics
1006 [
1007 text "New Strings"
1008 outline "#000000"
1009 fill "#FFFFFF"
1010 fontSize 16
1011 fontName "Monospace"
1012 autoSizePolicy "node_width"
1013 anchor "t"
1014 borderDistance 0.0
1015 ]
1016 LabelGraphics
1017 [
1018 text "
1019 "
1020 fontSize 14
1021 fontName "Consolas"
1022 alignment "left"
1023 anchor "tl"
1024 borderDistance 6
1025 ]
1026 ]
1027
1028 node
1029 [
1030 id 28
1031 graphics
1032 [
1033 w 103.4
1034 h 26
1035 type "rectangle"
1036 fill "#FFFFFF"
1037 fill2 "#FFFFFF"
1038 outline "#000000"
1039 ]
1040 LabelGraphics
1041 [
1042 text "New Objects"
1043 outline "#000000"
1044 fill "#FFFFFF"
1045 fontSize 16
1046 fontName "Monospace"
1047 autoSizePolicy "node_width"
1048 anchor "t"
1049 borderDistance 0.0
1050 ]
1051 LabelGraphics
1052 [
1053 text "
1054 "
1055 fontSize 14
1056 fontName "Consolas"
1057 alignment "left"
1058 anchor "tl"
1059 borderDistance 6
1060 ]
1061 ]
1062 edge
1063 [
1064 source 9
1065 target 10
1066 graphics
1067 [
1068 fill "#000000"
1069 width 3
1070 targetArrow "standard"
1071 ]
1072 LabelGraphics
1073 [
1074 text "groundStationNetwork reference ConstellationMission"
1075 fontSize 14
1076 fontName "Consolas"
1077 configuration "AutoFlippingLabel"
1078 model "six_pos"
1079 position "thead"
1080 ]
1081 ]
1082 edge
1083 [
1084 source 9
1085 target 15
1086 graphics
1087 [
1088 fill "#000000"
1089 width 3
1090 targetArrow "standard"
1091 ]
1092 LabelGraphics
1093 [
1094 text "spacecraft reference ConstellationMission"
1095 fontSize 14
1096 fontName "Consolas"
1097 configuration "AutoFlippingLabel"
1098 model "six_pos"
1099 position "thead"
1100 ]
1101 ]
1102 edge
1103 [
1104 source 9
1105 target 16
1106 graphics
1107 [
1108 fill "#000000"
1109 width 3
1110 targetArrow "standard"
1111 ]
1112 LabelGraphics
1113 [
1114 text "spacecraft reference ConstellationMission"
1115 fontSize 14
1116 fontName "Consolas"
1117 configuration "AutoFlippingLabel"
1118 model "six_pos"
1119 position "thead"
1120 ]
1121 ]
1122 edge
1123 [
1124 source 10
1125 target 11
1126 graphics
1127 [
1128 fill "#000000"
1129 width 3
1130 targetArrow "standard"
1131 ]
1132 LabelGraphics
1133 [
1134 text "commSubsystem reference CommunicatingElement"
1135 fontSize 14
1136 fontName "Consolas"
1137 configuration "AutoFlippingLabel"
1138 model "six_pos"
1139 position "thead"
1140 ]
1141 ]
1142 edge
1143 [
1144 source 10
1145 target 12
1146 graphics
1147 [
1148 fill "#000000"
1149 width 3
1150 targetArrow "standard"
1151 ]
1152 LabelGraphics
1153 [
1154 text "commSubsystem reference CommunicatingElement"
1155 fontSize 14
1156 fontName "Consolas"
1157 configuration "AutoFlippingLabel"
1158 model "six_pos"
1159 position "thead"
1160 ]
1161 ]
1162 edge
1163 [
1164 source 15
1165 target 18
1166 graphics
1167 [
1168 fill "#000000"
1169 width 3
1170 targetArrow "standard"
1171 ]
1172 LabelGraphics
1173 [
1174 text "commSubsystem reference CommunicatingElement"
1175 fontSize 14
1176 fontName "Consolas"
1177 configuration "AutoFlippingLabel"
1178 model "six_pos"
1179 position "thead"
1180 ]
1181 ]
1182 edge
1183 [
1184 source 16
1185 target 20
1186 graphics
1187 [
1188 fill "#000000"
1189 width 3
1190 targetArrow "standard"
1191 ]
1192 LabelGraphics
1193 [
1194 text "commSubsystem reference CommunicatingElement"
1195 fontSize 14
1196 fontName "Consolas"
1197 configuration "AutoFlippingLabel"
1198 model "six_pos"
1199 position "thead"
1200 ]
1201 ]
1202 edge
1203 [
1204 source 15
1205 target 22
1206 graphics
1207 [
1208 fill "#000000"
1209 width 3
1210 targetArrow "standard"
1211 ]
1212 LabelGraphics
1213 [
1214 text "commSubsystem reference CommunicatingElement"
1215 fontSize 14
1216 fontName "Consolas"
1217 configuration "AutoFlippingLabel"
1218 model "six_pos"
1219 position "thead"
1220 ]
1221 ]
1222 edge
1223 [
1224 source 16
1225 target 23
1226 graphics
1227 [
1228 fill "#000000"
1229 width 3
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "commSubsystem reference CommunicatingElement"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 15
1245 target 21
1246 graphics
1247 [
1248 fill "#000000"
1249 width 3
1250 targetArrow "standard"
1251 ]
1252 LabelGraphics
1253 [
1254 text "communicationLink reference CommunicatingElement"
1255 fontSize 14
1256 fontName "Consolas"
1257 configuration "AutoFlippingLabel"
1258 model "six_pos"
1259 position "thead"
1260 ]
1261 ]
1262 edge
1263 [
1264 source 16
1265 target 24
1266 graphics
1267 [
1268 fill "#000000"
1269 width 3
1270 targetArrow "standard"
1271 ]
1272 LabelGraphics
1273 [
1274 text "communicationLink reference CommunicatingElement"
1275 fontSize 14
1276 fontName "Consolas"
1277 configuration "AutoFlippingLabel"
1278 model "six_pos"
1279 position "thead"
1280 ]
1281 ]
1282 edge
1283 [
1284 source 16
1285 target 17
1286 graphics
1287 [
1288 fill "#000000"
1289 width 3
1290 targetArrow "standard"
1291 ]
1292 LabelGraphics
1293 [
1294 text "payload reference Spacecraft"
1295 fontSize 14
1296 fontName "Consolas"
1297 configuration "AutoFlippingLabel"
1298 model "six_pos"
1299 position "thead"
1300 ]
1301 ]
1302 edge
1303 [
1304 source 15
1305 target 19
1306 graphics
1307 [
1308 fill "#000000"
1309 width 3
1310 targetArrow "standard"
1311 ]
1312 LabelGraphics
1313 [
1314 text "payload reference Spacecraft"
1315 fontSize 14
1316 fontName "Consolas"
1317 configuration "AutoFlippingLabel"
1318 model "six_pos"
1319 position "thead"
1320 ]
1321 ]
1322 edge
1323 [
1324 source 21
1325 target 18
1326 graphics
1327 [
1328 fill "#000000"
1329 targetArrow "standard"
1330 ]
1331 LabelGraphics
1332 [
1333 text "source reference DirectedCommunicationLink"
1334 fontSize 14
1335 fontName "Consolas"
1336 configuration "AutoFlippingLabel"
1337 model "six_pos"
1338 position "thead"
1339 ]
1340 ]
1341 edge
1342 [
1343 source 24
1344 target 23
1345 graphics
1346 [
1347 fill "#000000"
1348 targetArrow "standard"
1349 ]
1350 LabelGraphics
1351 [
1352 text "source reference DirectedCommunicationLink"
1353 fontSize 14
1354 fontName "Consolas"
1355 configuration "AutoFlippingLabel"
1356 model "six_pos"
1357 position "thead"
1358 ]
1359 ]
1360 edge
1361 [
1362 source 21
1363 target 12
1364 graphics
1365 [
1366 fill "#000000"
1367 targetArrow "standard"
1368 ]
1369 LabelGraphics
1370 [
1371 text "target reference DirectedCommunicationLink"
1372 fontSize 14
1373 fontName "Consolas"
1374 configuration "AutoFlippingLabel"
1375 model "six_pos"
1376 position "thead"
1377 ]
1378 ]
1379 edge
1380 [
1381 source 24
1382 target 11
1383 graphics
1384 [
1385 fill "#000000"
1386 targetArrow "standard"
1387 ]
1388 LabelGraphics
1389 [
1390 text "target reference DirectedCommunicationLink"
1391 fontSize 14
1392 fontName "Consolas"
1393 configuration "AutoFlippingLabel"
1394 model "six_pos"
1395 position "thead"
1396 ]
1397 ]
1398 edge
1399 [
1400 source 11
1401 target 1
1402 graphics
1403 [
1404 fill "#000000"
1405 targetArrow "standard"
1406 ]
1407 LabelGraphics
1408 [
1409 text "band attribute CommSubsystem"
1410 fontSize 14
1411 fontName "Consolas"
1412 configuration "AutoFlippingLabel"
1413 model "six_pos"
1414 position "thead"
1415 ]
1416 ]
1417 edge
1418 [
1419 source 12
1420 target 2
1421 graphics
1422 [
1423 fill "#000000"
1424 targetArrow "standard"
1425 ]
1426 LabelGraphics
1427 [
1428 text "band attribute CommSubsystem"
1429 fontSize 14
1430 fontName "Consolas"
1431 configuration "AutoFlippingLabel"
1432 model "six_pos"
1433 position "thead"
1434 ]
1435 ]
1436 edge
1437 [
1438 source 18
1439 target 2
1440 graphics
1441 [
1442 fill "#000000"
1443 targetArrow "standard"
1444 ]
1445 LabelGraphics
1446 [
1447 text "band attribute CommSubsystem"
1448 fontSize 14
1449 fontName "Consolas"
1450 configuration "AutoFlippingLabel"
1451 model "six_pos"
1452 position "thead"
1453 ]
1454 ]
1455 edge
1456 [
1457 source 20
1458 target 1
1459 graphics
1460 [
1461 fill "#000000"
1462 targetArrow "standard"
1463 ]
1464 LabelGraphics
1465 [
1466 text "band attribute CommSubsystem"
1467 fontSize 14
1468 fontName "Consolas"
1469 configuration "AutoFlippingLabel"
1470 model "six_pos"
1471 position "thead"
1472 ]
1473 ]
1474 edge
1475 [
1476 source 22
1477 target 1
1478 graphics
1479 [
1480 fill "#000000"
1481 targetArrow "standard"
1482 ]
1483 LabelGraphics
1484 [
1485 text "band attribute CommSubsystem"
1486 fontSize 14
1487 fontName "Consolas"
1488 configuration "AutoFlippingLabel"
1489 model "six_pos"
1490 position "thead"
1491 ]
1492 ]
1493 edge
1494 [
1495 source 23
1496 target 1
1497 graphics
1498 [
1499 fill "#000000"
1500 targetArrow "standard"
1501 ]
1502 LabelGraphics
1503 [
1504 text "band attribute CommSubsystem"
1505 fontSize 14
1506 fontName "Consolas"
1507 configuration "AutoFlippingLabel"
1508 model "six_pos"
1509 position "thead"
1510 ]
1511 ]
1512 edge
1513 [
1514 source 11
1515 target 4
1516 graphics
1517 [
1518 fill "#000000"
1519 targetArrow "standard"
1520 ]
1521 LabelGraphics
1522 [
1523 text "gain attribute CommSubsystem"
1524 fontSize 14
1525 fontName "Consolas"
1526 configuration "AutoFlippingLabel"
1527 model "six_pos"
1528 position "thead"
1529 ]
1530 ]
1531 edge
1532 [
1533 source 12
1534 target 5
1535 graphics
1536 [
1537 fill "#000000"
1538 targetArrow "standard"
1539 ]
1540 LabelGraphics
1541 [
1542 text "gain attribute CommSubsystem"
1543 fontSize 14
1544 fontName "Consolas"
1545 configuration "AutoFlippingLabel"
1546 model "six_pos"
1547 position "thead"
1548 ]
1549 ]
1550 edge
1551 [
1552 source 18
1553 target 5
1554 graphics
1555 [
1556 fill "#000000"
1557 targetArrow "standard"
1558 ]
1559 LabelGraphics
1560 [
1561 text "gain attribute CommSubsystem"
1562 fontSize 14
1563 fontName "Consolas"
1564 configuration "AutoFlippingLabel"
1565 model "six_pos"
1566 position "thead"
1567 ]
1568 ]
1569 edge
1570 [
1571 source 20
1572 target 5
1573 graphics
1574 [
1575 fill "#000000"
1576 targetArrow "standard"
1577 ]
1578 LabelGraphics
1579 [
1580 text "gain attribute CommSubsystem"
1581 fontSize 14
1582 fontName "Consolas"
1583 configuration "AutoFlippingLabel"
1584 model "six_pos"
1585 position "thead"
1586 ]
1587 ]
1588 edge
1589 [
1590 source 22
1591 target 5
1592 graphics
1593 [
1594 fill "#000000"
1595 targetArrow "standard"
1596 ]
1597 LabelGraphics
1598 [
1599 text "gain attribute CommSubsystem"
1600 fontSize 14
1601 fontName "Consolas"
1602 configuration "AutoFlippingLabel"
1603 model "six_pos"
1604 position "thead"
1605 ]
1606 ]
1607 edge
1608 [
1609 source 23
1610 target 4
1611 graphics
1612 [
1613 fill "#000000"
1614 targetArrow "standard"
1615 ]
1616 LabelGraphics
1617 [
1618 text "gain attribute CommSubsystem"
1619 fontSize 14
1620 fontName "Consolas"
1621 configuration "AutoFlippingLabel"
1622 model "six_pos"
1623 position "thead"
1624 ]
1625 ]
1626]
1627
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.png
new file mode 100644
index 00000000..832f8b42
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.png
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.xmi
new file mode 100644
index 00000000..44ca2b3e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.xmi
@@ -0,0 +1,19 @@
1<?xml version="1.0" encoding="ASCII"?>
2<satellite:InterferometryMission xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:satellite="http://www.example.org/satellite" xsi:schemaLocation="http://www.example.org/satellite model/satellite.ecore">
3 <groundStationNetwork>
4 <commSubsystem band="X" gain="MEDIUM"/>
5 <commSubsystem band="Ka" gain="HIGH"/>
6 </groundStationNetwork>
7 <spacecraft xsi:type="satellite:CubeSat3U">
8 <commSubsystem band="X" gain="HIGH"/>
9 <commSubsystem band="X" gain="MEDIUM"/>
10 <communicationLink source="//@spacecraft.0/@commSubsystem.1" target="//@groundStationNetwork/@commSubsystem.0"/>
11 <payload xsi:type="satellite:InterferometryPayload"/>
12 </spacecraft>
13 <spacecraft xsi:type="satellite:CubeSat6U">
14 <commSubsystem band="X" gain="HIGH"/>
15 <commSubsystem band="Ka" gain="HIGH"/>
16 <communicationLink source="//@spacecraft.1/@commSubsystem.1" target="//@groundStationNetwork/@commSubsystem.1"/>
17 <payload xsi:type="satellite:InterferometryPayload"/>
18 </spacecraft>
19</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/statistics.csv b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/statistics.csv
new file mode 100644
index 00000000..35c220e0
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/statistics.csv
@@ -0,0 +1,3 @@
1Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
21;1;ModelResultImpl;580;4611;34341;4979693485;34306;19566;148;1006;0;5
3
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.properties b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.properties
new file mode 100644
index 00000000..7463353c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = hu.bme.mit.inf.dslreasoner.domains.satellite
4providerName = www.example.org
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.xml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.xml
new file mode 100644
index 00000000..5d75b948
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.xml
@@ -0,0 +1,28 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin>
3 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
4 <wellbehaving-derived-feature classifier-name="Spacecraft" feature-name="kind" package-nsUri="http://www.example.org/satellite"/>
5 </extension>
6 <extension point="org.eclipse.emf.ecore.generated_package">
7 <!-- @generated satellite -->
8 <package class="satellite.SatellitePackage" genModel="model/satellite.genmodel" uri="http://www.example.org/satellite"/>
9 </extension>
10 <extension id="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries" point="org.eclipse.viatra.query.runtime.queryspecification">
11 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries" id="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries">
12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement"/>
13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads"/>
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink"/>
23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna"/>
24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat"/>
25 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind"/>
26 </group>
27 </extension>
28</plugin>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.CommunicationLinkOfElement.java._trace b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.CommunicationLinkOfElement.java._trace
new file mode 100644
index 00000000..8fb61263
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.CommunicationLinkOfElement.java._trace
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.MultipleCommunicationLinks.java._trace b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.MultipleCommunicationLinks.java._trace
new file mode 100644
index 00000000..64b692d3
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.MultipleCommunicationLinks.java._trace
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.gitignore
new file mode 100644
index 00000000..cf45bfe0
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.gitignore
@@ -0,0 +1,26 @@
1/.SatelliteQueries.java._trace
2/.NoLinkToGroundStation.java._trace
3/.CommunicationLoop.java._trace
4/.SingleInterferometryPayload.java._trace
5/.NoInterferometryPayload.java._trace
6/.NotENoughInterferometryPayloads.java._trace
7/.NotEnoughInterferometryPayloads.java._trace
8/.UhfAntennaGainNotLow.java._trace
9/.XAntennaGainNotMedium.java._trace
10/.KaAntennaGainLow.java._trace
11/.IncompatibleSourceAndTarget.java._trace
12/.IncompatibleSourceAndTargetBand.java._trace
13/.IncompatibleSourceAndTargetGain.java._trace
14/.CubeSatWithKaAntenna.java._trace
15/.ThreeUCubeSatWithNonUhfCrossLink.java._trace
16/.CommunicationLinkDoesNotStartAtContainingElement.java._trace
17/.SpacecraftWithInterferometryPayload.java._trace
18/.SatelliteMetrics.java._trace
19/.CoverageMetric.java._trace
20/.TimeMetric.java._trace
21/.CostMetric.java._trace
22/.SpacecraftCost.java._trace
23/.SpacecraftOfKind.java._trace
24/.NoPotentialLinkToGroundStation.java._trace
25/.SmallSat.java._trace
26/CommunicationLinkDoesNotStartAtContainingElement.java
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLinkDoesNotStartAtContainingElement.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLinkDoesNotStartAtContainingElement.java
new file mode 100644
index 00000000..8d27a262
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLinkDoesNotStartAtContainingElement.java
@@ -0,0 +1,579 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.viatra.query.runtime.api.IPatternMatch;
19import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
24import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
25import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
26import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42import satellite.DirectedCommunicationLink;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(severity = "error", key = {Link},
50 * message = "Communication links must start from the containing element.")
51 * pattern communicationLinkDoesNotStartAtContainingElement(Link : DirectedCommunicationLink) {
52 * CommunicatingElement.communicationLink(Element, Link);
53 * DirectedCommunicationLink.source(Link, SourceComm);
54 * CommunicatingElement.commSubsystem(SourceElement, SourceComm);
55 * Element != SourceElement;
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class CommunicationLinkDoesNotStartAtContainingElement extends BaseGeneratedEMFQuerySpecification<CommunicationLinkDoesNotStartAtContainingElement.Matcher> {
65 /**
66 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private DirectedCommunicationLink fLink;
79
80 private static List<String> parameterNames = makeImmutableList("Link");
81
82 private Match(final DirectedCommunicationLink pLink) {
83 this.fLink = pLink;
84 }
85
86 @Override
87 public Object get(final String parameterName) {
88 if ("Link".equals(parameterName)) return this.fLink;
89 return null;
90 }
91
92 public DirectedCommunicationLink getLink() {
93 return this.fLink;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("Link".equals(parameterName) ) {
100 this.fLink = (DirectedCommunicationLink) newValue;
101 return true;
102 }
103 return false;
104 }
105
106 public void setLink(final DirectedCommunicationLink pLink) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 this.fLink = pLink;
109 }
110
111 @Override
112 public String patternName() {
113 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement";
114 }
115
116 @Override
117 public List<String> parameterNames() {
118 return CommunicationLinkDoesNotStartAtContainingElement.Match.parameterNames;
119 }
120
121 @Override
122 public Object[] toArray() {
123 return new Object[]{fLink};
124 }
125
126 @Override
127 public CommunicationLinkDoesNotStartAtContainingElement.Match toImmutable() {
128 return isMutable() ? newMatch(fLink) : this;
129 }
130
131 @Override
132 public String prettyPrint() {
133 StringBuilder result = new StringBuilder();
134 result.append("\"Link\"=" + prettyPrintValue(fLink));
135 return result.toString();
136 }
137
138 @Override
139 public int hashCode() {
140 return Objects.hash(fLink);
141 }
142
143 @Override
144 public boolean equals(final Object obj) {
145 if (this == obj)
146 return true;
147 if (obj == null) {
148 return false;
149 }
150 if ((obj instanceof CommunicationLinkDoesNotStartAtContainingElement.Match)) {
151 CommunicationLinkDoesNotStartAtContainingElement.Match other = (CommunicationLinkDoesNotStartAtContainingElement.Match) obj;
152 return Objects.equals(fLink, other.fLink);
153 } else {
154 // this should be infrequent
155 if (!(obj instanceof IPatternMatch)) {
156 return false;
157 }
158 IPatternMatch otherSig = (IPatternMatch) obj;
159 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
160 }
161 }
162
163 @Override
164 public CommunicationLinkDoesNotStartAtContainingElement specification() {
165 return CommunicationLinkDoesNotStartAtContainingElement.instance();
166 }
167
168 /**
169 * Returns an empty, mutable match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @return the empty match.
173 *
174 */
175 public static CommunicationLinkDoesNotStartAtContainingElement.Match newEmptyMatch() {
176 return new Mutable(null);
177 }
178
179 /**
180 * Returns a mutable (partial) match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
184 * @return the new, mutable (partial) match object.
185 *
186 */
187 public static CommunicationLinkDoesNotStartAtContainingElement.Match newMutableMatch(final DirectedCommunicationLink pLink) {
188 return new Mutable(pLink);
189 }
190
191 /**
192 * Returns a new (partial) match.
193 * This can be used e.g. to call the matcher with a partial match.
194 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
195 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
196 * @return the (partial) match object.
197 *
198 */
199 public static CommunicationLinkDoesNotStartAtContainingElement.Match newMatch(final DirectedCommunicationLink pLink) {
200 return new Immutable(pLink);
201 }
202
203 private static final class Mutable extends CommunicationLinkDoesNotStartAtContainingElement.Match {
204 Mutable(final DirectedCommunicationLink pLink) {
205 super(pLink);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return true;
211 }
212 }
213
214 private static final class Immutable extends CommunicationLinkDoesNotStartAtContainingElement.Match {
215 Immutable(final DirectedCommunicationLink pLink) {
216 super(pLink);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return false;
222 }
223 }
224 }
225
226 /**
227 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement pattern,
228 * providing pattern-specific query methods.
229 *
230 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
231 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
232 *
233 * <p>Matches of the pattern will be represented as {@link Match}.
234 *
235 * <p>Original source:
236 * <code><pre>
237 * {@literal @}Constraint(severity = "error", key = {Link},
238 * message = "Communication links must start from the containing element.")
239 * pattern communicationLinkDoesNotStartAtContainingElement(Link : DirectedCommunicationLink) {
240 * CommunicatingElement.communicationLink(Element, Link);
241 * DirectedCommunicationLink.source(Link, SourceComm);
242 * CommunicatingElement.commSubsystem(SourceElement, SourceComm);
243 * Element != SourceElement;
244 * }
245 * </pre></code>
246 *
247 * @see Match
248 * @see CommunicationLinkDoesNotStartAtContainingElement
249 *
250 */
251 public static class Matcher extends BaseMatcher<CommunicationLinkDoesNotStartAtContainingElement.Match> {
252 /**
253 * Initializes the pattern matcher within an existing VIATRA Query engine.
254 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
255 *
256 * @param engine the existing VIATRA Query engine in which this matcher will be created.
257 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
258 *
259 */
260 public static CommunicationLinkDoesNotStartAtContainingElement.Matcher on(final ViatraQueryEngine engine) {
261 // check if matcher already exists
262 Matcher matcher = engine.getExistingMatcher(querySpecification());
263 if (matcher == null) {
264 matcher = (Matcher)engine.getMatcher(querySpecification());
265 }
266 return matcher;
267 }
268
269 /**
270 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
271 * @return an initialized matcher
272 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
273 *
274 */
275 public static CommunicationLinkDoesNotStartAtContainingElement.Matcher create() {
276 return new Matcher();
277 }
278
279 private static final int POSITION_LINK = 0;
280
281 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(CommunicationLinkDoesNotStartAtContainingElement.Matcher.class);
282
283 /**
284 * Initializes the pattern matcher within an existing VIATRA Query engine.
285 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
286 *
287 * @param engine the existing VIATRA Query engine in which this matcher will be created.
288 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
289 *
290 */
291 private Matcher() {
292 super(querySpecification());
293 }
294
295 /**
296 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
297 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
298 * @return matches represented as a Match object.
299 *
300 */
301 public Collection<CommunicationLinkDoesNotStartAtContainingElement.Match> getAllMatches(final DirectedCommunicationLink pLink) {
302 return rawStreamAllMatches(new Object[]{pLink}).collect(Collectors.toSet());
303 }
304
305 /**
306 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
307 * </p>
308 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
309 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
310 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
311 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
312 * @return a stream of matches represented as a Match object.
313 *
314 */
315 public Stream<CommunicationLinkDoesNotStartAtContainingElement.Match> streamAllMatches(final DirectedCommunicationLink pLink) {
316 return rawStreamAllMatches(new Object[]{pLink});
317 }
318
319 /**
320 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
321 * Neither determinism nor randomness of selection is guaranteed.
322 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
323 * @return a match represented as a Match object, or null if no match is found.
324 *
325 */
326 public Optional<CommunicationLinkDoesNotStartAtContainingElement.Match> getOneArbitraryMatch(final DirectedCommunicationLink pLink) {
327 return rawGetOneArbitraryMatch(new Object[]{pLink});
328 }
329
330 /**
331 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
332 * under any possible substitution of the unspecified parameters (if any).
333 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
334 * @return true if the input is a valid (partial) match of the pattern.
335 *
336 */
337 public boolean hasMatch(final DirectedCommunicationLink pLink) {
338 return rawHasMatch(new Object[]{pLink});
339 }
340
341 /**
342 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
343 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
344 * @return the number of pattern matches found.
345 *
346 */
347 public int countMatches(final DirectedCommunicationLink pLink) {
348 return rawCountMatches(new Object[]{pLink});
349 }
350
351 /**
352 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
353 * Neither determinism nor randomness of selection is guaranteed.
354 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
355 * @param processor the action that will process the selected match.
356 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
357 *
358 */
359 public boolean forOneArbitraryMatch(final DirectedCommunicationLink pLink, final Consumer<? super CommunicationLinkDoesNotStartAtContainingElement.Match> processor) {
360 return rawForOneArbitraryMatch(new Object[]{pLink}, processor);
361 }
362
363 /**
364 * Returns a new (partial) match.
365 * This can be used e.g. to call the matcher with a partial match.
366 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
367 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
368 * @return the (partial) match object.
369 *
370 */
371 public CommunicationLinkDoesNotStartAtContainingElement.Match newMatch(final DirectedCommunicationLink pLink) {
372 return CommunicationLinkDoesNotStartAtContainingElement.Match.newMatch(pLink);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for Link.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 protected Stream<DirectedCommunicationLink> rawStreamAllValuesOfLink(final Object[] parameters) {
381 return rawStreamAllValues(POSITION_LINK, parameters).map(DirectedCommunicationLink.class::cast);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for Link.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Set<DirectedCommunicationLink> getAllValuesOfLink() {
390 return rawStreamAllValuesOfLink(emptyArray()).collect(Collectors.toSet());
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for Link.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Stream<DirectedCommunicationLink> streamAllValuesOfLink() {
399 return rawStreamAllValuesOfLink(emptyArray());
400 }
401
402 @Override
403 protected CommunicationLinkDoesNotStartAtContainingElement.Match tupleToMatch(final Tuple t) {
404 try {
405 return CommunicationLinkDoesNotStartAtContainingElement.Match.newMatch((DirectedCommunicationLink) t.get(POSITION_LINK));
406 } catch(ClassCastException e) {
407 LOGGER.error("Element(s) in tuple not properly typed!",e);
408 return null;
409 }
410 }
411
412 @Override
413 protected CommunicationLinkDoesNotStartAtContainingElement.Match arrayToMatch(final Object[] match) {
414 try {
415 return CommunicationLinkDoesNotStartAtContainingElement.Match.newMatch((DirectedCommunicationLink) match[POSITION_LINK]);
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in array not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected CommunicationLinkDoesNotStartAtContainingElement.Match arrayToMatchMutable(final Object[] match) {
424 try {
425 return CommunicationLinkDoesNotStartAtContainingElement.Match.newMutableMatch((DirectedCommunicationLink) match[POSITION_LINK]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 /**
433 * @return the singleton instance of the query specification of this pattern
434 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
435 *
436 */
437 public static IQuerySpecification<CommunicationLinkDoesNotStartAtContainingElement.Matcher> querySpecification() {
438 return CommunicationLinkDoesNotStartAtContainingElement.instance();
439 }
440 }
441
442 private CommunicationLinkDoesNotStartAtContainingElement() {
443 super(GeneratedPQuery.INSTANCE);
444 }
445
446 /**
447 * @return the singleton instance of the query specification
448 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
449 *
450 */
451 public static CommunicationLinkDoesNotStartAtContainingElement instance() {
452 try{
453 return LazyHolder.INSTANCE;
454 } catch (ExceptionInInitializerError err) {
455 throw processInitializerError(err);
456 }
457 }
458
459 @Override
460 protected CommunicationLinkDoesNotStartAtContainingElement.Matcher instantiate(final ViatraQueryEngine engine) {
461 return CommunicationLinkDoesNotStartAtContainingElement.Matcher.on(engine);
462 }
463
464 @Override
465 public CommunicationLinkDoesNotStartAtContainingElement.Matcher instantiate() {
466 return CommunicationLinkDoesNotStartAtContainingElement.Matcher.create();
467 }
468
469 @Override
470 public CommunicationLinkDoesNotStartAtContainingElement.Match newEmptyMatch() {
471 return CommunicationLinkDoesNotStartAtContainingElement.Match.newEmptyMatch();
472 }
473
474 @Override
475 public CommunicationLinkDoesNotStartAtContainingElement.Match newMatch(final Object... parameters) {
476 return CommunicationLinkDoesNotStartAtContainingElement.Match.newMatch((satellite.DirectedCommunicationLink) parameters[0]);
477 }
478
479 /**
480 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement (visibility: PUBLIC, simpleName: CommunicationLinkDoesNotStartAtContainingElement, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
481 * <b>not</b> at the class load time of the outer class,
482 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement (visibility: PUBLIC, simpleName: CommunicationLinkDoesNotStartAtContainingElement, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
483 *
484 * <p> This workaround is required e.g. to support recursion.
485 *
486 */
487 private static class LazyHolder {
488 private static final CommunicationLinkDoesNotStartAtContainingElement INSTANCE = new CommunicationLinkDoesNotStartAtContainingElement();
489
490 /**
491 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
492 * This initialization order is required to support indirect recursion.
493 *
494 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
495 *
496 */
497 private static final Object STATIC_INITIALIZER = ensureInitialized();
498
499 public static Object ensureInitialized() {
500 INSTANCE.ensureInitializedInternal();
501 return null;
502 }
503 }
504
505 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
506 private static final CommunicationLinkDoesNotStartAtContainingElement.GeneratedPQuery INSTANCE = new GeneratedPQuery();
507
508 private final PParameter parameter_Link = new PParameter("Link", "satellite.DirectedCommunicationLink", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "DirectedCommunicationLink")), PParameterDirection.INOUT);
509
510 private final List<PParameter> parameters = Arrays.asList(parameter_Link);
511
512 private GeneratedPQuery() {
513 super(PVisibility.PUBLIC);
514 }
515
516 @Override
517 public String getFullyQualifiedName() {
518 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement";
519 }
520
521 @Override
522 public List<String> getParameterNames() {
523 return Arrays.asList("Link");
524 }
525
526 @Override
527 public List<PParameter> getParameters() {
528 return parameters;
529 }
530
531 @Override
532 public Set<PBody> doGetContainedBodies() {
533 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
534 Set<PBody> bodies = new LinkedHashSet<>();
535 {
536 PBody body = new PBody(this);
537 PVariable var_Link = body.getOrCreateVariableByName("Link");
538 PVariable var_Element = body.getOrCreateVariableByName("Element");
539 PVariable var_SourceComm = body.getOrCreateVariableByName("SourceComm");
540 PVariable var_SourceElement = body.getOrCreateVariableByName("SourceElement");
541 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
542 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
543 new ExportedParameter(body, var_Link, parameter_Link)
544 ));
545 // CommunicatingElement.communicationLink(Element, Link)
546 new TypeConstraint(body, Tuples.flatTupleOf(var_Element), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
547 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
548 new TypeConstraint(body, Tuples.flatTupleOf(var_Element, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "communicationLink")));
549 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
550 new Equality(body, var__virtual_0_, var_Link);
551 // DirectedCommunicationLink.source(Link, SourceComm)
552 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
553 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
554 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
555 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
556 new Equality(body, var__virtual_1_, var_SourceComm);
557 // CommunicatingElement.commSubsystem(SourceElement, SourceComm)
558 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceElement), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
559 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
560 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceElement, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
561 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
562 new Equality(body, var__virtual_2_, var_SourceComm);
563 // Element != SourceElement
564 new Inequality(body, var_Element, var_SourceElement);
565 bodies.add(body);
566 }
567 {
568 PAnnotation annotation = new PAnnotation("Constraint");
569 annotation.addAttribute("severity", "error");
570 annotation.addAttribute("key", Arrays.asList(new Object[] {
571 new ParameterReference("Link")
572 }));
573 annotation.addAttribute("message", "Communication links must start from the containing element.");
574 addAnnotation(annotation);
575 }
576 return bodies;
577 }
578 }
579}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLoop.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLoop.java
new file mode 100644
index 00000000..ede57df8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CommunicationLoop.java
@@ -0,0 +1,557 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import satellite.CommunicatingElement;
42
43/**
44 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
45 *
46 * <p>Original source:
47 * <code><pre>
48 * // No communication loops may exist
49 * // No spacecraft may directly communicate with itself
50 *
51 * {@literal @}Constraint(severity = "error", key = {Element},
52 * message = "Communication loop.")
53 * pattern communicationLoop(Element : CommunicatingElement) {
54 * find indirectCommunicationLink(Element, Element);
55 * }
56 * </pre></code>
57 *
58 * @see Matcher
59 * @see Match
60 *
61 */
62@SuppressWarnings("all")
63public final class CommunicationLoop extends BaseGeneratedEMFQuerySpecification<CommunicationLoop.Matcher> {
64 /**
65 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop pattern,
66 * to be used in conjunction with {@link Matcher}.
67 *
68 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
69 * Each instance is a (possibly partial) substitution of pattern parameters,
70 * usable to represent a match of the pattern in the result of a query,
71 * or to specify the bound (fixed) input parameters when issuing a query.
72 *
73 * @see Matcher
74 *
75 */
76 public static abstract class Match extends BasePatternMatch {
77 private CommunicatingElement fElement;
78
79 private static List<String> parameterNames = makeImmutableList("Element");
80
81 private Match(final CommunicatingElement pElement) {
82 this.fElement = pElement;
83 }
84
85 @Override
86 public Object get(final String parameterName) {
87 if ("Element".equals(parameterName)) return this.fElement;
88 return null;
89 }
90
91 public CommunicatingElement getElement() {
92 return this.fElement;
93 }
94
95 @Override
96 public boolean set(final String parameterName, final Object newValue) {
97 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
98 if ("Element".equals(parameterName) ) {
99 this.fElement = (CommunicatingElement) newValue;
100 return true;
101 }
102 return false;
103 }
104
105 public void setElement(final CommunicatingElement pElement) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 this.fElement = pElement;
108 }
109
110 @Override
111 public String patternName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop";
113 }
114
115 @Override
116 public List<String> parameterNames() {
117 return CommunicationLoop.Match.parameterNames;
118 }
119
120 @Override
121 public Object[] toArray() {
122 return new Object[]{fElement};
123 }
124
125 @Override
126 public CommunicationLoop.Match toImmutable() {
127 return isMutable() ? newMatch(fElement) : this;
128 }
129
130 @Override
131 public String prettyPrint() {
132 StringBuilder result = new StringBuilder();
133 result.append("\"Element\"=" + prettyPrintValue(fElement));
134 return result.toString();
135 }
136
137 @Override
138 public int hashCode() {
139 return Objects.hash(fElement);
140 }
141
142 @Override
143 public boolean equals(final Object obj) {
144 if (this == obj)
145 return true;
146 if (obj == null) {
147 return false;
148 }
149 if ((obj instanceof CommunicationLoop.Match)) {
150 CommunicationLoop.Match other = (CommunicationLoop.Match) obj;
151 return Objects.equals(fElement, other.fElement);
152 } else {
153 // this should be infrequent
154 if (!(obj instanceof IPatternMatch)) {
155 return false;
156 }
157 IPatternMatch otherSig = (IPatternMatch) obj;
158 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
159 }
160 }
161
162 @Override
163 public CommunicationLoop specification() {
164 return CommunicationLoop.instance();
165 }
166
167 /**
168 * Returns an empty, mutable match.
169 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
170 *
171 * @return the empty match.
172 *
173 */
174 public static CommunicationLoop.Match newEmptyMatch() {
175 return new Mutable(null);
176 }
177
178 /**
179 * Returns a mutable (partial) match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
183 * @return the new, mutable (partial) match object.
184 *
185 */
186 public static CommunicationLoop.Match newMutableMatch(final CommunicatingElement pElement) {
187 return new Mutable(pElement);
188 }
189
190 /**
191 * Returns a new (partial) match.
192 * This can be used e.g. to call the matcher with a partial match.
193 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
194 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
195 * @return the (partial) match object.
196 *
197 */
198 public static CommunicationLoop.Match newMatch(final CommunicatingElement pElement) {
199 return new Immutable(pElement);
200 }
201
202 private static final class Mutable extends CommunicationLoop.Match {
203 Mutable(final CommunicatingElement pElement) {
204 super(pElement);
205 }
206
207 @Override
208 public boolean isMutable() {
209 return true;
210 }
211 }
212
213 private static final class Immutable extends CommunicationLoop.Match {
214 Immutable(final CommunicatingElement pElement) {
215 super(pElement);
216 }
217
218 @Override
219 public boolean isMutable() {
220 return false;
221 }
222 }
223 }
224
225 /**
226 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop pattern,
227 * providing pattern-specific query methods.
228 *
229 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
230 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
231 *
232 * <p>Matches of the pattern will be represented as {@link Match}.
233 *
234 * <p>Original source:
235 * <code><pre>
236 * // No communication loops may exist
237 * // No spacecraft may directly communicate with itself
238 *
239 * {@literal @}Constraint(severity = "error", key = {Element},
240 * message = "Communication loop.")
241 * pattern communicationLoop(Element : CommunicatingElement) {
242 * find indirectCommunicationLink(Element, Element);
243 * }
244 * </pre></code>
245 *
246 * @see Match
247 * @see CommunicationLoop
248 *
249 */
250 public static class Matcher extends BaseMatcher<CommunicationLoop.Match> {
251 /**
252 * Initializes the pattern matcher within an existing VIATRA Query engine.
253 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
254 *
255 * @param engine the existing VIATRA Query engine in which this matcher will be created.
256 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
257 *
258 */
259 public static CommunicationLoop.Matcher on(final ViatraQueryEngine engine) {
260 // check if matcher already exists
261 Matcher matcher = engine.getExistingMatcher(querySpecification());
262 if (matcher == null) {
263 matcher = (Matcher)engine.getMatcher(querySpecification());
264 }
265 return matcher;
266 }
267
268 /**
269 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
270 * @return an initialized matcher
271 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
272 *
273 */
274 public static CommunicationLoop.Matcher create() {
275 return new Matcher();
276 }
277
278 private static final int POSITION_ELEMENT = 0;
279
280 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(CommunicationLoop.Matcher.class);
281
282 /**
283 * Initializes the pattern matcher within an existing VIATRA Query engine.
284 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
285 *
286 * @param engine the existing VIATRA Query engine in which this matcher will be created.
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 *
289 */
290 private Matcher() {
291 super(querySpecification());
292 }
293
294 /**
295 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
296 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
297 * @return matches represented as a Match object.
298 *
299 */
300 public Collection<CommunicationLoop.Match> getAllMatches(final CommunicatingElement pElement) {
301 return rawStreamAllMatches(new Object[]{pElement}).collect(Collectors.toSet());
302 }
303
304 /**
305 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
306 * </p>
307 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
308 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
309 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
310 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
311 * @return a stream of matches represented as a Match object.
312 *
313 */
314 public Stream<CommunicationLoop.Match> streamAllMatches(final CommunicatingElement pElement) {
315 return rawStreamAllMatches(new Object[]{pElement});
316 }
317
318 /**
319 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
320 * Neither determinism nor randomness of selection is guaranteed.
321 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
322 * @return a match represented as a Match object, or null if no match is found.
323 *
324 */
325 public Optional<CommunicationLoop.Match> getOneArbitraryMatch(final CommunicatingElement pElement) {
326 return rawGetOneArbitraryMatch(new Object[]{pElement});
327 }
328
329 /**
330 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
331 * under any possible substitution of the unspecified parameters (if any).
332 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
333 * @return true if the input is a valid (partial) match of the pattern.
334 *
335 */
336 public boolean hasMatch(final CommunicatingElement pElement) {
337 return rawHasMatch(new Object[]{pElement});
338 }
339
340 /**
341 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
342 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
343 * @return the number of pattern matches found.
344 *
345 */
346 public int countMatches(final CommunicatingElement pElement) {
347 return rawCountMatches(new Object[]{pElement});
348 }
349
350 /**
351 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
352 * Neither determinism nor randomness of selection is guaranteed.
353 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
354 * @param processor the action that will process the selected match.
355 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
356 *
357 */
358 public boolean forOneArbitraryMatch(final CommunicatingElement pElement, final Consumer<? super CommunicationLoop.Match> processor) {
359 return rawForOneArbitraryMatch(new Object[]{pElement}, processor);
360 }
361
362 /**
363 * Returns a new (partial) match.
364 * This can be used e.g. to call the matcher with a partial match.
365 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
366 * @param pElement the fixed value of pattern parameter Element, or null if not bound.
367 * @return the (partial) match object.
368 *
369 */
370 public CommunicationLoop.Match newMatch(final CommunicatingElement pElement) {
371 return CommunicationLoop.Match.newMatch(pElement);
372 }
373
374 /**
375 * Retrieve the set of values that occur in matches for Element.
376 * @return the Set of all values or empty set if there are no matches
377 *
378 */
379 protected Stream<CommunicatingElement> rawStreamAllValuesOfElement(final Object[] parameters) {
380 return rawStreamAllValues(POSITION_ELEMENT, parameters).map(CommunicatingElement.class::cast);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for Element.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 public Set<CommunicatingElement> getAllValuesOfElement() {
389 return rawStreamAllValuesOfElement(emptyArray()).collect(Collectors.toSet());
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for Element.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Stream<CommunicatingElement> streamAllValuesOfElement() {
398 return rawStreamAllValuesOfElement(emptyArray());
399 }
400
401 @Override
402 protected CommunicationLoop.Match tupleToMatch(final Tuple t) {
403 try {
404 return CommunicationLoop.Match.newMatch((CommunicatingElement) t.get(POSITION_ELEMENT));
405 } catch(ClassCastException e) {
406 LOGGER.error("Element(s) in tuple not properly typed!",e);
407 return null;
408 }
409 }
410
411 @Override
412 protected CommunicationLoop.Match arrayToMatch(final Object[] match) {
413 try {
414 return CommunicationLoop.Match.newMatch((CommunicatingElement) match[POSITION_ELEMENT]);
415 } catch(ClassCastException e) {
416 LOGGER.error("Element(s) in array not properly typed!",e);
417 return null;
418 }
419 }
420
421 @Override
422 protected CommunicationLoop.Match arrayToMatchMutable(final Object[] match) {
423 try {
424 return CommunicationLoop.Match.newMutableMatch((CommunicatingElement) match[POSITION_ELEMENT]);
425 } catch(ClassCastException e) {
426 LOGGER.error("Element(s) in array not properly typed!",e);
427 return null;
428 }
429 }
430
431 /**
432 * @return the singleton instance of the query specification of this pattern
433 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
434 *
435 */
436 public static IQuerySpecification<CommunicationLoop.Matcher> querySpecification() {
437 return CommunicationLoop.instance();
438 }
439 }
440
441 private CommunicationLoop() {
442 super(GeneratedPQuery.INSTANCE);
443 }
444
445 /**
446 * @return the singleton instance of the query specification
447 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
448 *
449 */
450 public static CommunicationLoop instance() {
451 try{
452 return LazyHolder.INSTANCE;
453 } catch (ExceptionInInitializerError err) {
454 throw processInitializerError(err);
455 }
456 }
457
458 @Override
459 protected CommunicationLoop.Matcher instantiate(final ViatraQueryEngine engine) {
460 return CommunicationLoop.Matcher.on(engine);
461 }
462
463 @Override
464 public CommunicationLoop.Matcher instantiate() {
465 return CommunicationLoop.Matcher.create();
466 }
467
468 @Override
469 public CommunicationLoop.Match newEmptyMatch() {
470 return CommunicationLoop.Match.newEmptyMatch();
471 }
472
473 @Override
474 public CommunicationLoop.Match newMatch(final Object... parameters) {
475 return CommunicationLoop.Match.newMatch((satellite.CommunicatingElement) parameters[0]);
476 }
477
478 /**
479 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop (visibility: PUBLIC, simpleName: CommunicationLoop, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
480 * <b>not</b> at the class load time of the outer class,
481 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop (visibility: PUBLIC, simpleName: CommunicationLoop, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
482 *
483 * <p> This workaround is required e.g. to support recursion.
484 *
485 */
486 private static class LazyHolder {
487 private static final CommunicationLoop INSTANCE = new CommunicationLoop();
488
489 /**
490 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
491 * This initialization order is required to support indirect recursion.
492 *
493 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
494 *
495 */
496 private static final Object STATIC_INITIALIZER = ensureInitialized();
497
498 public static Object ensureInitialized() {
499 INSTANCE.ensureInitializedInternal();
500 return null;
501 }
502 }
503
504 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
505 private static final CommunicationLoop.GeneratedPQuery INSTANCE = new GeneratedPQuery();
506
507 private final PParameter parameter_Element = new PParameter("Element", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
508
509 private final List<PParameter> parameters = Arrays.asList(parameter_Element);
510
511 private GeneratedPQuery() {
512 super(PVisibility.PUBLIC);
513 }
514
515 @Override
516 public String getFullyQualifiedName() {
517 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop";
518 }
519
520 @Override
521 public List<String> getParameterNames() {
522 return Arrays.asList("Element");
523 }
524
525 @Override
526 public List<PParameter> getParameters() {
527 return parameters;
528 }
529
530 @Override
531 public Set<PBody> doGetContainedBodies() {
532 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
533 Set<PBody> bodies = new LinkedHashSet<>();
534 {
535 PBody body = new PBody(this);
536 PVariable var_Element = body.getOrCreateVariableByName("Element");
537 new TypeConstraint(body, Tuples.flatTupleOf(var_Element), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
538 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
539 new ExportedParameter(body, var_Element, parameter_Element)
540 ));
541 // find indirectCommunicationLink(Element, Element)
542 new PositivePatternCall(body, Tuples.flatTupleOf(var_Element, var_Element), IndirectCommunicationLink.instance().getInternalQueryRepresentation());
543 bodies.add(body);
544 }
545 {
546 PAnnotation annotation = new PAnnotation("Constraint");
547 annotation.addAttribute("severity", "error");
548 annotation.addAttribute("key", Arrays.asList(new Object[] {
549 new ParameterReference("Element")
550 }));
551 annotation.addAttribute("message", "Communication loop.");
552 addAnnotation(annotation);
553 }
554 return bodies;
555 }
556 }
557}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CubeSatWithKaAntenna.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CubeSatWithKaAntenna.java
new file mode 100644
index 00000000..b73cb23f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CubeSatWithKaAntenna.java
@@ -0,0 +1,573 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46import satellite.Spacecraft;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * // Only a Small Satellite can be configured with a Ka-band communication system
54 *
55 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
56 * message = "Only a Small Satellite can be configured with a Ka-band communication system.")
57 * pattern cubeSatWithKaAntenna(Spacecraft : Spacecraft) {
58 * CommunicatingElement.commSubsystem.band(Spacecraft, TransceiverBand::Ka);
59 * neg find smallSat(Spacecraft);
60 * }
61 * </pre></code>
62 *
63 * @see Matcher
64 * @see Match
65 *
66 */
67@SuppressWarnings("all")
68public final class CubeSatWithKaAntenna extends BaseGeneratedEMFQuerySpecification<CubeSatWithKaAntenna.Matcher> {
69 /**
70 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna pattern,
71 * to be used in conjunction with {@link Matcher}.
72 *
73 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
74 * Each instance is a (possibly partial) substitution of pattern parameters,
75 * usable to represent a match of the pattern in the result of a query,
76 * or to specify the bound (fixed) input parameters when issuing a query.
77 *
78 * @see Matcher
79 *
80 */
81 public static abstract class Match extends BasePatternMatch {
82 private Spacecraft fSpacecraft;
83
84 private static List<String> parameterNames = makeImmutableList("Spacecraft");
85
86 private Match(final Spacecraft pSpacecraft) {
87 this.fSpacecraft = pSpacecraft;
88 }
89
90 @Override
91 public Object get(final String parameterName) {
92 if ("Spacecraft".equals(parameterName)) return this.fSpacecraft;
93 return null;
94 }
95
96 public Spacecraft getSpacecraft() {
97 return this.fSpacecraft;
98 }
99
100 @Override
101 public boolean set(final String parameterName, final Object newValue) {
102 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
103 if ("Spacecraft".equals(parameterName) ) {
104 this.fSpacecraft = (Spacecraft) newValue;
105 return true;
106 }
107 return false;
108 }
109
110 public void setSpacecraft(final Spacecraft pSpacecraft) {
111 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
112 this.fSpacecraft = pSpacecraft;
113 }
114
115 @Override
116 public String patternName() {
117 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna";
118 }
119
120 @Override
121 public List<String> parameterNames() {
122 return CubeSatWithKaAntenna.Match.parameterNames;
123 }
124
125 @Override
126 public Object[] toArray() {
127 return new Object[]{fSpacecraft};
128 }
129
130 @Override
131 public CubeSatWithKaAntenna.Match toImmutable() {
132 return isMutable() ? newMatch(fSpacecraft) : this;
133 }
134
135 @Override
136 public String prettyPrint() {
137 StringBuilder result = new StringBuilder();
138 result.append("\"Spacecraft\"=" + prettyPrintValue(fSpacecraft));
139 return result.toString();
140 }
141
142 @Override
143 public int hashCode() {
144 return Objects.hash(fSpacecraft);
145 }
146
147 @Override
148 public boolean equals(final Object obj) {
149 if (this == obj)
150 return true;
151 if (obj == null) {
152 return false;
153 }
154 if ((obj instanceof CubeSatWithKaAntenna.Match)) {
155 CubeSatWithKaAntenna.Match other = (CubeSatWithKaAntenna.Match) obj;
156 return Objects.equals(fSpacecraft, other.fSpacecraft);
157 } else {
158 // this should be infrequent
159 if (!(obj instanceof IPatternMatch)) {
160 return false;
161 }
162 IPatternMatch otherSig = (IPatternMatch) obj;
163 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
164 }
165 }
166
167 @Override
168 public CubeSatWithKaAntenna specification() {
169 return CubeSatWithKaAntenna.instance();
170 }
171
172 /**
173 * Returns an empty, mutable match.
174 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
175 *
176 * @return the empty match.
177 *
178 */
179 public static CubeSatWithKaAntenna.Match newEmptyMatch() {
180 return new Mutable(null);
181 }
182
183 /**
184 * Returns a mutable (partial) match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
188 * @return the new, mutable (partial) match object.
189 *
190 */
191 public static CubeSatWithKaAntenna.Match newMutableMatch(final Spacecraft pSpacecraft) {
192 return new Mutable(pSpacecraft);
193 }
194
195 /**
196 * Returns a new (partial) match.
197 * This can be used e.g. to call the matcher with a partial match.
198 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
199 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
200 * @return the (partial) match object.
201 *
202 */
203 public static CubeSatWithKaAntenna.Match newMatch(final Spacecraft pSpacecraft) {
204 return new Immutable(pSpacecraft);
205 }
206
207 private static final class Mutable extends CubeSatWithKaAntenna.Match {
208 Mutable(final Spacecraft pSpacecraft) {
209 super(pSpacecraft);
210 }
211
212 @Override
213 public boolean isMutable() {
214 return true;
215 }
216 }
217
218 private static final class Immutable extends CubeSatWithKaAntenna.Match {
219 Immutable(final Spacecraft pSpacecraft) {
220 super(pSpacecraft);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return false;
226 }
227 }
228 }
229
230 /**
231 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna pattern,
232 * providing pattern-specific query methods.
233 *
234 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
235 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
236 *
237 * <p>Matches of the pattern will be represented as {@link Match}.
238 *
239 * <p>Original source:
240 * <code><pre>
241 * // Only a Small Satellite can be configured with a Ka-band communication system
242 *
243 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
244 * message = "Only a Small Satellite can be configured with a Ka-band communication system.")
245 * pattern cubeSatWithKaAntenna(Spacecraft : Spacecraft) {
246 * CommunicatingElement.commSubsystem.band(Spacecraft, TransceiverBand::Ka);
247 * neg find smallSat(Spacecraft);
248 * }
249 * </pre></code>
250 *
251 * @see Match
252 * @see CubeSatWithKaAntenna
253 *
254 */
255 public static class Matcher extends BaseMatcher<CubeSatWithKaAntenna.Match> {
256 /**
257 * Initializes the pattern matcher within an existing VIATRA Query engine.
258 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
259 *
260 * @param engine the existing VIATRA Query engine in which this matcher will be created.
261 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
262 *
263 */
264 public static CubeSatWithKaAntenna.Matcher on(final ViatraQueryEngine engine) {
265 // check if matcher already exists
266 Matcher matcher = engine.getExistingMatcher(querySpecification());
267 if (matcher == null) {
268 matcher = (Matcher)engine.getMatcher(querySpecification());
269 }
270 return matcher;
271 }
272
273 /**
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 * @return an initialized matcher
276 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
277 *
278 */
279 public static CubeSatWithKaAntenna.Matcher create() {
280 return new Matcher();
281 }
282
283 private static final int POSITION_SPACECRAFT = 0;
284
285 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(CubeSatWithKaAntenna.Matcher.class);
286
287 /**
288 * Initializes the pattern matcher within an existing VIATRA Query engine.
289 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
290 *
291 * @param engine the existing VIATRA Query engine in which this matcher will be created.
292 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
293 *
294 */
295 private Matcher() {
296 super(querySpecification());
297 }
298
299 /**
300 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
301 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
302 * @return matches represented as a Match object.
303 *
304 */
305 public Collection<CubeSatWithKaAntenna.Match> getAllMatches(final Spacecraft pSpacecraft) {
306 return rawStreamAllMatches(new Object[]{pSpacecraft}).collect(Collectors.toSet());
307 }
308
309 /**
310 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
311 * </p>
312 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
313 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
314 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
315 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
316 * @return a stream of matches represented as a Match object.
317 *
318 */
319 public Stream<CubeSatWithKaAntenna.Match> streamAllMatches(final Spacecraft pSpacecraft) {
320 return rawStreamAllMatches(new Object[]{pSpacecraft});
321 }
322
323 /**
324 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
325 * Neither determinism nor randomness of selection is guaranteed.
326 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
327 * @return a match represented as a Match object, or null if no match is found.
328 *
329 */
330 public Optional<CubeSatWithKaAntenna.Match> getOneArbitraryMatch(final Spacecraft pSpacecraft) {
331 return rawGetOneArbitraryMatch(new Object[]{pSpacecraft});
332 }
333
334 /**
335 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
336 * under any possible substitution of the unspecified parameters (if any).
337 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
338 * @return true if the input is a valid (partial) match of the pattern.
339 *
340 */
341 public boolean hasMatch(final Spacecraft pSpacecraft) {
342 return rawHasMatch(new Object[]{pSpacecraft});
343 }
344
345 /**
346 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
347 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
348 * @return the number of pattern matches found.
349 *
350 */
351 public int countMatches(final Spacecraft pSpacecraft) {
352 return rawCountMatches(new Object[]{pSpacecraft});
353 }
354
355 /**
356 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
357 * Neither determinism nor randomness of selection is guaranteed.
358 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
359 * @param processor the action that will process the selected match.
360 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
361 *
362 */
363 public boolean forOneArbitraryMatch(final Spacecraft pSpacecraft, final Consumer<? super CubeSatWithKaAntenna.Match> processor) {
364 return rawForOneArbitraryMatch(new Object[]{pSpacecraft}, processor);
365 }
366
367 /**
368 * Returns a new (partial) match.
369 * This can be used e.g. to call the matcher with a partial match.
370 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
371 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
372 * @return the (partial) match object.
373 *
374 */
375 public CubeSatWithKaAntenna.Match newMatch(final Spacecraft pSpacecraft) {
376 return CubeSatWithKaAntenna.Match.newMatch(pSpacecraft);
377 }
378
379 /**
380 * Retrieve the set of values that occur in matches for Spacecraft.
381 * @return the Set of all values or empty set if there are no matches
382 *
383 */
384 protected Stream<Spacecraft> rawStreamAllValuesOfSpacecraft(final Object[] parameters) {
385 return rawStreamAllValues(POSITION_SPACECRAFT, parameters).map(Spacecraft.class::cast);
386 }
387
388 /**
389 * Retrieve the set of values that occur in matches for Spacecraft.
390 * @return the Set of all values or empty set if there are no matches
391 *
392 */
393 public Set<Spacecraft> getAllValuesOfSpacecraft() {
394 return rawStreamAllValuesOfSpacecraft(emptyArray()).collect(Collectors.toSet());
395 }
396
397 /**
398 * Retrieve the set of values that occur in matches for Spacecraft.
399 * @return the Set of all values or empty set if there are no matches
400 *
401 */
402 public Stream<Spacecraft> streamAllValuesOfSpacecraft() {
403 return rawStreamAllValuesOfSpacecraft(emptyArray());
404 }
405
406 @Override
407 protected CubeSatWithKaAntenna.Match tupleToMatch(final Tuple t) {
408 try {
409 return CubeSatWithKaAntenna.Match.newMatch((Spacecraft) t.get(POSITION_SPACECRAFT));
410 } catch(ClassCastException e) {
411 LOGGER.error("Element(s) in tuple not properly typed!",e);
412 return null;
413 }
414 }
415
416 @Override
417 protected CubeSatWithKaAntenna.Match arrayToMatch(final Object[] match) {
418 try {
419 return CubeSatWithKaAntenna.Match.newMatch((Spacecraft) match[POSITION_SPACECRAFT]);
420 } catch(ClassCastException e) {
421 LOGGER.error("Element(s) in array not properly typed!",e);
422 return null;
423 }
424 }
425
426 @Override
427 protected CubeSatWithKaAntenna.Match arrayToMatchMutable(final Object[] match) {
428 try {
429 return CubeSatWithKaAntenna.Match.newMutableMatch((Spacecraft) match[POSITION_SPACECRAFT]);
430 } catch(ClassCastException e) {
431 LOGGER.error("Element(s) in array not properly typed!",e);
432 return null;
433 }
434 }
435
436 /**
437 * @return the singleton instance of the query specification of this pattern
438 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
439 *
440 */
441 public static IQuerySpecification<CubeSatWithKaAntenna.Matcher> querySpecification() {
442 return CubeSatWithKaAntenna.instance();
443 }
444 }
445
446 private CubeSatWithKaAntenna() {
447 super(GeneratedPQuery.INSTANCE);
448 }
449
450 /**
451 * @return the singleton instance of the query specification
452 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
453 *
454 */
455 public static CubeSatWithKaAntenna instance() {
456 try{
457 return LazyHolder.INSTANCE;
458 } catch (ExceptionInInitializerError err) {
459 throw processInitializerError(err);
460 }
461 }
462
463 @Override
464 protected CubeSatWithKaAntenna.Matcher instantiate(final ViatraQueryEngine engine) {
465 return CubeSatWithKaAntenna.Matcher.on(engine);
466 }
467
468 @Override
469 public CubeSatWithKaAntenna.Matcher instantiate() {
470 return CubeSatWithKaAntenna.Matcher.create();
471 }
472
473 @Override
474 public CubeSatWithKaAntenna.Match newEmptyMatch() {
475 return CubeSatWithKaAntenna.Match.newEmptyMatch();
476 }
477
478 @Override
479 public CubeSatWithKaAntenna.Match newMatch(final Object... parameters) {
480 return CubeSatWithKaAntenna.Match.newMatch((satellite.Spacecraft) parameters[0]);
481 }
482
483 /**
484 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna (visibility: PUBLIC, simpleName: CubeSatWithKaAntenna, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
485 * <b>not</b> at the class load time of the outer class,
486 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna (visibility: PUBLIC, simpleName: CubeSatWithKaAntenna, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
487 *
488 * <p> This workaround is required e.g. to support recursion.
489 *
490 */
491 private static class LazyHolder {
492 private static final CubeSatWithKaAntenna INSTANCE = new CubeSatWithKaAntenna();
493
494 /**
495 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
496 * This initialization order is required to support indirect recursion.
497 *
498 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
499 *
500 */
501 private static final Object STATIC_INITIALIZER = ensureInitialized();
502
503 public static Object ensureInitialized() {
504 INSTANCE.ensureInitializedInternal();
505 return null;
506 }
507 }
508
509 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
510 private static final CubeSatWithKaAntenna.GeneratedPQuery INSTANCE = new GeneratedPQuery();
511
512 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
513
514 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft);
515
516 private GeneratedPQuery() {
517 super(PVisibility.PUBLIC);
518 }
519
520 @Override
521 public String getFullyQualifiedName() {
522 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna";
523 }
524
525 @Override
526 public List<String> getParameterNames() {
527 return Arrays.asList("Spacecraft");
528 }
529
530 @Override
531 public List<PParameter> getParameters() {
532 return parameters;
533 }
534
535 @Override
536 public Set<PBody> doGetContainedBodies() {
537 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
538 Set<PBody> bodies = new LinkedHashSet<>();
539 {
540 PBody body = new PBody(this);
541 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
542 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
543 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
544 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft)
545 ));
546 // CommunicatingElement.commSubsystem.band(Spacecraft, TransceiverBand::Ka)
547 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
548 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "Ka").getInstance());
549 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
550 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
551 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
552 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
553 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
554 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
555 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
556 new Equality(body, var__virtual_2_, var__virtual_0_);
557 // neg find smallSat(Spacecraft)
558 new NegativePatternCall(body, Tuples.flatTupleOf(var_Spacecraft), SmallSat.instance().getInternalQueryRepresentation());
559 bodies.add(body);
560 }
561 {
562 PAnnotation annotation = new PAnnotation("Constraint");
563 annotation.addAttribute("severity", "error");
564 annotation.addAttribute("key", Arrays.asList(new Object[] {
565 new ParameterReference("Spacecraft")
566 }));
567 annotation.addAttribute("message", "Only a Small Satellite can be configured with a Ka-band communication system.");
568 addAnnotation(annotation);
569 }
570 return bodies;
571 }
572 }
573}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetBand.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetBand.java
new file mode 100644
index 00000000..f2713f45
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetBand.java
@@ -0,0 +1,586 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45import satellite.DirectedCommunicationLink;
46
47/**
48 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
49 *
50 * <p>Original source:
51 * <code><pre>
52 * // Source and target communication systems must be compatible.
53 *
54 * {@literal @}Constraint(severity = "error", key = {Link},
55 * message = "Two ends of a communication link must use the same band.")
56 * pattern incompatibleSourceAndTargetBand(Link : DirectedCommunicationLink) {
57 * DirectedCommunicationLink.source(Link, SourceSubsystem);
58 * DirectedCommunicationLink.target(Link, TargetSubsystem);
59 * CommSubsystem.band(SourceSubsystem, Band);
60 * neg find commSubsystemBand(TargetSubsystem, Band);
61 * }
62 * </pre></code>
63 *
64 * @see Matcher
65 * @see Match
66 *
67 */
68@SuppressWarnings("all")
69public final class IncompatibleSourceAndTargetBand extends BaseGeneratedEMFQuerySpecification<IncompatibleSourceAndTargetBand.Matcher> {
70 /**
71 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand pattern,
72 * to be used in conjunction with {@link Matcher}.
73 *
74 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
75 * Each instance is a (possibly partial) substitution of pattern parameters,
76 * usable to represent a match of the pattern in the result of a query,
77 * or to specify the bound (fixed) input parameters when issuing a query.
78 *
79 * @see Matcher
80 *
81 */
82 public static abstract class Match extends BasePatternMatch {
83 private DirectedCommunicationLink fLink;
84
85 private static List<String> parameterNames = makeImmutableList("Link");
86
87 private Match(final DirectedCommunicationLink pLink) {
88 this.fLink = pLink;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 if ("Link".equals(parameterName)) return this.fLink;
94 return null;
95 }
96
97 public DirectedCommunicationLink getLink() {
98 return this.fLink;
99 }
100
101 @Override
102 public boolean set(final String parameterName, final Object newValue) {
103 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
104 if ("Link".equals(parameterName) ) {
105 this.fLink = (DirectedCommunicationLink) newValue;
106 return true;
107 }
108 return false;
109 }
110
111 public void setLink(final DirectedCommunicationLink pLink) {
112 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
113 this.fLink = pLink;
114 }
115
116 @Override
117 public String patternName() {
118 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand";
119 }
120
121 @Override
122 public List<String> parameterNames() {
123 return IncompatibleSourceAndTargetBand.Match.parameterNames;
124 }
125
126 @Override
127 public Object[] toArray() {
128 return new Object[]{fLink};
129 }
130
131 @Override
132 public IncompatibleSourceAndTargetBand.Match toImmutable() {
133 return isMutable() ? newMatch(fLink) : this;
134 }
135
136 @Override
137 public String prettyPrint() {
138 StringBuilder result = new StringBuilder();
139 result.append("\"Link\"=" + prettyPrintValue(fLink));
140 return result.toString();
141 }
142
143 @Override
144 public int hashCode() {
145 return Objects.hash(fLink);
146 }
147
148 @Override
149 public boolean equals(final Object obj) {
150 if (this == obj)
151 return true;
152 if (obj == null) {
153 return false;
154 }
155 if ((obj instanceof IncompatibleSourceAndTargetBand.Match)) {
156 IncompatibleSourceAndTargetBand.Match other = (IncompatibleSourceAndTargetBand.Match) obj;
157 return Objects.equals(fLink, other.fLink);
158 } else {
159 // this should be infrequent
160 if (!(obj instanceof IPatternMatch)) {
161 return false;
162 }
163 IPatternMatch otherSig = (IPatternMatch) obj;
164 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
165 }
166 }
167
168 @Override
169 public IncompatibleSourceAndTargetBand specification() {
170 return IncompatibleSourceAndTargetBand.instance();
171 }
172
173 /**
174 * Returns an empty, mutable match.
175 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
176 *
177 * @return the empty match.
178 *
179 */
180 public static IncompatibleSourceAndTargetBand.Match newEmptyMatch() {
181 return new Mutable(null);
182 }
183
184 /**
185 * Returns a mutable (partial) match.
186 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
187 *
188 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
189 * @return the new, mutable (partial) match object.
190 *
191 */
192 public static IncompatibleSourceAndTargetBand.Match newMutableMatch(final DirectedCommunicationLink pLink) {
193 return new Mutable(pLink);
194 }
195
196 /**
197 * Returns a new (partial) match.
198 * This can be used e.g. to call the matcher with a partial match.
199 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
200 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
201 * @return the (partial) match object.
202 *
203 */
204 public static IncompatibleSourceAndTargetBand.Match newMatch(final DirectedCommunicationLink pLink) {
205 return new Immutable(pLink);
206 }
207
208 private static final class Mutable extends IncompatibleSourceAndTargetBand.Match {
209 Mutable(final DirectedCommunicationLink pLink) {
210 super(pLink);
211 }
212
213 @Override
214 public boolean isMutable() {
215 return true;
216 }
217 }
218
219 private static final class Immutable extends IncompatibleSourceAndTargetBand.Match {
220 Immutable(final DirectedCommunicationLink pLink) {
221 super(pLink);
222 }
223
224 @Override
225 public boolean isMutable() {
226 return false;
227 }
228 }
229 }
230
231 /**
232 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand pattern,
233 * providing pattern-specific query methods.
234 *
235 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
236 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
237 *
238 * <p>Matches of the pattern will be represented as {@link Match}.
239 *
240 * <p>Original source:
241 * <code><pre>
242 * // Source and target communication systems must be compatible.
243 *
244 * {@literal @}Constraint(severity = "error", key = {Link},
245 * message = "Two ends of a communication link must use the same band.")
246 * pattern incompatibleSourceAndTargetBand(Link : DirectedCommunicationLink) {
247 * DirectedCommunicationLink.source(Link, SourceSubsystem);
248 * DirectedCommunicationLink.target(Link, TargetSubsystem);
249 * CommSubsystem.band(SourceSubsystem, Band);
250 * neg find commSubsystemBand(TargetSubsystem, Band);
251 * }
252 * </pre></code>
253 *
254 * @see Match
255 * @see IncompatibleSourceAndTargetBand
256 *
257 */
258 public static class Matcher extends BaseMatcher<IncompatibleSourceAndTargetBand.Match> {
259 /**
260 * Initializes the pattern matcher within an existing VIATRA Query engine.
261 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
262 *
263 * @param engine the existing VIATRA Query engine in which this matcher will be created.
264 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
265 *
266 */
267 public static IncompatibleSourceAndTargetBand.Matcher on(final ViatraQueryEngine engine) {
268 // check if matcher already exists
269 Matcher matcher = engine.getExistingMatcher(querySpecification());
270 if (matcher == null) {
271 matcher = (Matcher)engine.getMatcher(querySpecification());
272 }
273 return matcher;
274 }
275
276 /**
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 * @return an initialized matcher
279 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
280 *
281 */
282 public static IncompatibleSourceAndTargetBand.Matcher create() {
283 return new Matcher();
284 }
285
286 private static final int POSITION_LINK = 0;
287
288 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(IncompatibleSourceAndTargetBand.Matcher.class);
289
290 /**
291 * Initializes the pattern matcher within an existing VIATRA Query engine.
292 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
293 *
294 * @param engine the existing VIATRA Query engine in which this matcher will be created.
295 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
296 *
297 */
298 private Matcher() {
299 super(querySpecification());
300 }
301
302 /**
303 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
304 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
305 * @return matches represented as a Match object.
306 *
307 */
308 public Collection<IncompatibleSourceAndTargetBand.Match> getAllMatches(final DirectedCommunicationLink pLink) {
309 return rawStreamAllMatches(new Object[]{pLink}).collect(Collectors.toSet());
310 }
311
312 /**
313 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
314 * </p>
315 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
316 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
317 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
318 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
319 * @return a stream of matches represented as a Match object.
320 *
321 */
322 public Stream<IncompatibleSourceAndTargetBand.Match> streamAllMatches(final DirectedCommunicationLink pLink) {
323 return rawStreamAllMatches(new Object[]{pLink});
324 }
325
326 /**
327 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
328 * Neither determinism nor randomness of selection is guaranteed.
329 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
330 * @return a match represented as a Match object, or null if no match is found.
331 *
332 */
333 public Optional<IncompatibleSourceAndTargetBand.Match> getOneArbitraryMatch(final DirectedCommunicationLink pLink) {
334 return rawGetOneArbitraryMatch(new Object[]{pLink});
335 }
336
337 /**
338 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
339 * under any possible substitution of the unspecified parameters (if any).
340 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
341 * @return true if the input is a valid (partial) match of the pattern.
342 *
343 */
344 public boolean hasMatch(final DirectedCommunicationLink pLink) {
345 return rawHasMatch(new Object[]{pLink});
346 }
347
348 /**
349 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
350 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
351 * @return the number of pattern matches found.
352 *
353 */
354 public int countMatches(final DirectedCommunicationLink pLink) {
355 return rawCountMatches(new Object[]{pLink});
356 }
357
358 /**
359 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
360 * Neither determinism nor randomness of selection is guaranteed.
361 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
362 * @param processor the action that will process the selected match.
363 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
364 *
365 */
366 public boolean forOneArbitraryMatch(final DirectedCommunicationLink pLink, final Consumer<? super IncompatibleSourceAndTargetBand.Match> processor) {
367 return rawForOneArbitraryMatch(new Object[]{pLink}, processor);
368 }
369
370 /**
371 * Returns a new (partial) match.
372 * This can be used e.g. to call the matcher with a partial match.
373 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
374 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
375 * @return the (partial) match object.
376 *
377 */
378 public IncompatibleSourceAndTargetBand.Match newMatch(final DirectedCommunicationLink pLink) {
379 return IncompatibleSourceAndTargetBand.Match.newMatch(pLink);
380 }
381
382 /**
383 * Retrieve the set of values that occur in matches for Link.
384 * @return the Set of all values or empty set if there are no matches
385 *
386 */
387 protected Stream<DirectedCommunicationLink> rawStreamAllValuesOfLink(final Object[] parameters) {
388 return rawStreamAllValues(POSITION_LINK, parameters).map(DirectedCommunicationLink.class::cast);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for Link.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 public Set<DirectedCommunicationLink> getAllValuesOfLink() {
397 return rawStreamAllValuesOfLink(emptyArray()).collect(Collectors.toSet());
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for Link.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Stream<DirectedCommunicationLink> streamAllValuesOfLink() {
406 return rawStreamAllValuesOfLink(emptyArray());
407 }
408
409 @Override
410 protected IncompatibleSourceAndTargetBand.Match tupleToMatch(final Tuple t) {
411 try {
412 return IncompatibleSourceAndTargetBand.Match.newMatch((DirectedCommunicationLink) t.get(POSITION_LINK));
413 } catch(ClassCastException e) {
414 LOGGER.error("Element(s) in tuple not properly typed!",e);
415 return null;
416 }
417 }
418
419 @Override
420 protected IncompatibleSourceAndTargetBand.Match arrayToMatch(final Object[] match) {
421 try {
422 return IncompatibleSourceAndTargetBand.Match.newMatch((DirectedCommunicationLink) match[POSITION_LINK]);
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in array not properly typed!",e);
425 return null;
426 }
427 }
428
429 @Override
430 protected IncompatibleSourceAndTargetBand.Match arrayToMatchMutable(final Object[] match) {
431 try {
432 return IncompatibleSourceAndTargetBand.Match.newMutableMatch((DirectedCommunicationLink) match[POSITION_LINK]);
433 } catch(ClassCastException e) {
434 LOGGER.error("Element(s) in array not properly typed!",e);
435 return null;
436 }
437 }
438
439 /**
440 * @return the singleton instance of the query specification of this pattern
441 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
442 *
443 */
444 public static IQuerySpecification<IncompatibleSourceAndTargetBand.Matcher> querySpecification() {
445 return IncompatibleSourceAndTargetBand.instance();
446 }
447 }
448
449 private IncompatibleSourceAndTargetBand() {
450 super(GeneratedPQuery.INSTANCE);
451 }
452
453 /**
454 * @return the singleton instance of the query specification
455 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
456 *
457 */
458 public static IncompatibleSourceAndTargetBand instance() {
459 try{
460 return LazyHolder.INSTANCE;
461 } catch (ExceptionInInitializerError err) {
462 throw processInitializerError(err);
463 }
464 }
465
466 @Override
467 protected IncompatibleSourceAndTargetBand.Matcher instantiate(final ViatraQueryEngine engine) {
468 return IncompatibleSourceAndTargetBand.Matcher.on(engine);
469 }
470
471 @Override
472 public IncompatibleSourceAndTargetBand.Matcher instantiate() {
473 return IncompatibleSourceAndTargetBand.Matcher.create();
474 }
475
476 @Override
477 public IncompatibleSourceAndTargetBand.Match newEmptyMatch() {
478 return IncompatibleSourceAndTargetBand.Match.newEmptyMatch();
479 }
480
481 @Override
482 public IncompatibleSourceAndTargetBand.Match newMatch(final Object... parameters) {
483 return IncompatibleSourceAndTargetBand.Match.newMatch((satellite.DirectedCommunicationLink) parameters[0]);
484 }
485
486 /**
487 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand (visibility: PUBLIC, simpleName: IncompatibleSourceAndTargetBand, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
488 * <b>not</b> at the class load time of the outer class,
489 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand (visibility: PUBLIC, simpleName: IncompatibleSourceAndTargetBand, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
490 *
491 * <p> This workaround is required e.g. to support recursion.
492 *
493 */
494 private static class LazyHolder {
495 private static final IncompatibleSourceAndTargetBand INSTANCE = new IncompatibleSourceAndTargetBand();
496
497 /**
498 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
499 * This initialization order is required to support indirect recursion.
500 *
501 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
502 *
503 */
504 private static final Object STATIC_INITIALIZER = ensureInitialized();
505
506 public static Object ensureInitialized() {
507 INSTANCE.ensureInitializedInternal();
508 return null;
509 }
510 }
511
512 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
513 private static final IncompatibleSourceAndTargetBand.GeneratedPQuery INSTANCE = new GeneratedPQuery();
514
515 private final PParameter parameter_Link = new PParameter("Link", "satellite.DirectedCommunicationLink", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "DirectedCommunicationLink")), PParameterDirection.INOUT);
516
517 private final List<PParameter> parameters = Arrays.asList(parameter_Link);
518
519 private GeneratedPQuery() {
520 super(PVisibility.PUBLIC);
521 }
522
523 @Override
524 public String getFullyQualifiedName() {
525 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand";
526 }
527
528 @Override
529 public List<String> getParameterNames() {
530 return Arrays.asList("Link");
531 }
532
533 @Override
534 public List<PParameter> getParameters() {
535 return parameters;
536 }
537
538 @Override
539 public Set<PBody> doGetContainedBodies() {
540 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
541 Set<PBody> bodies = new LinkedHashSet<>();
542 {
543 PBody body = new PBody(this);
544 PVariable var_Link = body.getOrCreateVariableByName("Link");
545 PVariable var_SourceSubsystem = body.getOrCreateVariableByName("SourceSubsystem");
546 PVariable var_TargetSubsystem = body.getOrCreateVariableByName("TargetSubsystem");
547 PVariable var_Band = body.getOrCreateVariableByName("Band");
548 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
549 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
550 new ExportedParameter(body, var_Link, parameter_Link)
551 ));
552 // DirectedCommunicationLink.source(Link, SourceSubsystem)
553 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
554 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
556 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
557 new Equality(body, var__virtual_0_, var_SourceSubsystem);
558 // DirectedCommunicationLink.target(Link, TargetSubsystem)
559 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
560 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
561 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
562 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
563 new Equality(body, var__virtual_1_, var_TargetSubsystem);
564 // CommSubsystem.band(SourceSubsystem, Band)
565 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceSubsystem), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
566 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
567 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceSubsystem, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
568 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
569 new Equality(body, var__virtual_2_, var_Band);
570 // neg find commSubsystemBand(TargetSubsystem, Band)
571 new NegativePatternCall(body, Tuples.flatTupleOf(var_TargetSubsystem, var_Band), CommSubsystemBand.instance().getInternalQueryRepresentation());
572 bodies.add(body);
573 }
574 {
575 PAnnotation annotation = new PAnnotation("Constraint");
576 annotation.addAttribute("severity", "error");
577 annotation.addAttribute("key", Arrays.asList(new Object[] {
578 new ParameterReference("Link")
579 }));
580 annotation.addAttribute("message", "Two ends of a communication link must use the same band.");
581 addAnnotation(annotation);
582 }
583 return bodies;
584 }
585 }
586}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetGain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetGain.java
new file mode 100644
index 00000000..33a4b067
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/IncompatibleSourceAndTargetGain.java
@@ -0,0 +1,582 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45import satellite.DirectedCommunicationLink;
46
47/**
48 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
49 *
50 * <p>Original source:
51 * <code><pre>
52 * {@literal @}Constraint(severity = "error", key = {Link},
53 * message = "Two ends of a communication link must use the same antenna gain.")
54 * pattern incompatibleSourceAndTargetGain(Link : DirectedCommunicationLink) {
55 * DirectedCommunicationLink.source(Link, SourceSubsystem);
56 * DirectedCommunicationLink.target(Link, TargetSubsystem);
57 * CommSubsystem.gain(SourceSubsystem, Gain);
58 * neg find commSubsystemGain(TargetSubsystem, Gain);
59 * }
60 * </pre></code>
61 *
62 * @see Matcher
63 * @see Match
64 *
65 */
66@SuppressWarnings("all")
67public final class IncompatibleSourceAndTargetGain extends BaseGeneratedEMFQuerySpecification<IncompatibleSourceAndTargetGain.Matcher> {
68 /**
69 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain pattern,
70 * to be used in conjunction with {@link Matcher}.
71 *
72 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
73 * Each instance is a (possibly partial) substitution of pattern parameters,
74 * usable to represent a match of the pattern in the result of a query,
75 * or to specify the bound (fixed) input parameters when issuing a query.
76 *
77 * @see Matcher
78 *
79 */
80 public static abstract class Match extends BasePatternMatch {
81 private DirectedCommunicationLink fLink;
82
83 private static List<String> parameterNames = makeImmutableList("Link");
84
85 private Match(final DirectedCommunicationLink pLink) {
86 this.fLink = pLink;
87 }
88
89 @Override
90 public Object get(final String parameterName) {
91 if ("Link".equals(parameterName)) return this.fLink;
92 return null;
93 }
94
95 public DirectedCommunicationLink getLink() {
96 return this.fLink;
97 }
98
99 @Override
100 public boolean set(final String parameterName, final Object newValue) {
101 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
102 if ("Link".equals(parameterName) ) {
103 this.fLink = (DirectedCommunicationLink) newValue;
104 return true;
105 }
106 return false;
107 }
108
109 public void setLink(final DirectedCommunicationLink pLink) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 this.fLink = pLink;
112 }
113
114 @Override
115 public String patternName() {
116 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain";
117 }
118
119 @Override
120 public List<String> parameterNames() {
121 return IncompatibleSourceAndTargetGain.Match.parameterNames;
122 }
123
124 @Override
125 public Object[] toArray() {
126 return new Object[]{fLink};
127 }
128
129 @Override
130 public IncompatibleSourceAndTargetGain.Match toImmutable() {
131 return isMutable() ? newMatch(fLink) : this;
132 }
133
134 @Override
135 public String prettyPrint() {
136 StringBuilder result = new StringBuilder();
137 result.append("\"Link\"=" + prettyPrintValue(fLink));
138 return result.toString();
139 }
140
141 @Override
142 public int hashCode() {
143 return Objects.hash(fLink);
144 }
145
146 @Override
147 public boolean equals(final Object obj) {
148 if (this == obj)
149 return true;
150 if (obj == null) {
151 return false;
152 }
153 if ((obj instanceof IncompatibleSourceAndTargetGain.Match)) {
154 IncompatibleSourceAndTargetGain.Match other = (IncompatibleSourceAndTargetGain.Match) obj;
155 return Objects.equals(fLink, other.fLink);
156 } else {
157 // this should be infrequent
158 if (!(obj instanceof IPatternMatch)) {
159 return false;
160 }
161 IPatternMatch otherSig = (IPatternMatch) obj;
162 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
163 }
164 }
165
166 @Override
167 public IncompatibleSourceAndTargetGain specification() {
168 return IncompatibleSourceAndTargetGain.instance();
169 }
170
171 /**
172 * Returns an empty, mutable match.
173 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
174 *
175 * @return the empty match.
176 *
177 */
178 public static IncompatibleSourceAndTargetGain.Match newEmptyMatch() {
179 return new Mutable(null);
180 }
181
182 /**
183 * Returns a mutable (partial) match.
184 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
185 *
186 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
187 * @return the new, mutable (partial) match object.
188 *
189 */
190 public static IncompatibleSourceAndTargetGain.Match newMutableMatch(final DirectedCommunicationLink pLink) {
191 return new Mutable(pLink);
192 }
193
194 /**
195 * Returns a new (partial) match.
196 * This can be used e.g. to call the matcher with a partial match.
197 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
198 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
199 * @return the (partial) match object.
200 *
201 */
202 public static IncompatibleSourceAndTargetGain.Match newMatch(final DirectedCommunicationLink pLink) {
203 return new Immutable(pLink);
204 }
205
206 private static final class Mutable extends IncompatibleSourceAndTargetGain.Match {
207 Mutable(final DirectedCommunicationLink pLink) {
208 super(pLink);
209 }
210
211 @Override
212 public boolean isMutable() {
213 return true;
214 }
215 }
216
217 private static final class Immutable extends IncompatibleSourceAndTargetGain.Match {
218 Immutable(final DirectedCommunicationLink pLink) {
219 super(pLink);
220 }
221
222 @Override
223 public boolean isMutable() {
224 return false;
225 }
226 }
227 }
228
229 /**
230 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain pattern,
231 * providing pattern-specific query methods.
232 *
233 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
234 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
235 *
236 * <p>Matches of the pattern will be represented as {@link Match}.
237 *
238 * <p>Original source:
239 * <code><pre>
240 * {@literal @}Constraint(severity = "error", key = {Link},
241 * message = "Two ends of a communication link must use the same antenna gain.")
242 * pattern incompatibleSourceAndTargetGain(Link : DirectedCommunicationLink) {
243 * DirectedCommunicationLink.source(Link, SourceSubsystem);
244 * DirectedCommunicationLink.target(Link, TargetSubsystem);
245 * CommSubsystem.gain(SourceSubsystem, Gain);
246 * neg find commSubsystemGain(TargetSubsystem, Gain);
247 * }
248 * </pre></code>
249 *
250 * @see Match
251 * @see IncompatibleSourceAndTargetGain
252 *
253 */
254 public static class Matcher extends BaseMatcher<IncompatibleSourceAndTargetGain.Match> {
255 /**
256 * Initializes the pattern matcher within an existing VIATRA Query engine.
257 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
258 *
259 * @param engine the existing VIATRA Query engine in which this matcher will be created.
260 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
261 *
262 */
263 public static IncompatibleSourceAndTargetGain.Matcher on(final ViatraQueryEngine engine) {
264 // check if matcher already exists
265 Matcher matcher = engine.getExistingMatcher(querySpecification());
266 if (matcher == null) {
267 matcher = (Matcher)engine.getMatcher(querySpecification());
268 }
269 return matcher;
270 }
271
272 /**
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 * @return an initialized matcher
275 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
276 *
277 */
278 public static IncompatibleSourceAndTargetGain.Matcher create() {
279 return new Matcher();
280 }
281
282 private static final int POSITION_LINK = 0;
283
284 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(IncompatibleSourceAndTargetGain.Matcher.class);
285
286 /**
287 * Initializes the pattern matcher within an existing VIATRA Query engine.
288 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
289 *
290 * @param engine the existing VIATRA Query engine in which this matcher will be created.
291 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
292 *
293 */
294 private Matcher() {
295 super(querySpecification());
296 }
297
298 /**
299 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
300 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
301 * @return matches represented as a Match object.
302 *
303 */
304 public Collection<IncompatibleSourceAndTargetGain.Match> getAllMatches(final DirectedCommunicationLink pLink) {
305 return rawStreamAllMatches(new Object[]{pLink}).collect(Collectors.toSet());
306 }
307
308 /**
309 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
310 * </p>
311 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
312 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
313 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
314 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
315 * @return a stream of matches represented as a Match object.
316 *
317 */
318 public Stream<IncompatibleSourceAndTargetGain.Match> streamAllMatches(final DirectedCommunicationLink pLink) {
319 return rawStreamAllMatches(new Object[]{pLink});
320 }
321
322 /**
323 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
324 * Neither determinism nor randomness of selection is guaranteed.
325 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
326 * @return a match represented as a Match object, or null if no match is found.
327 *
328 */
329 public Optional<IncompatibleSourceAndTargetGain.Match> getOneArbitraryMatch(final DirectedCommunicationLink pLink) {
330 return rawGetOneArbitraryMatch(new Object[]{pLink});
331 }
332
333 /**
334 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
335 * under any possible substitution of the unspecified parameters (if any).
336 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
337 * @return true if the input is a valid (partial) match of the pattern.
338 *
339 */
340 public boolean hasMatch(final DirectedCommunicationLink pLink) {
341 return rawHasMatch(new Object[]{pLink});
342 }
343
344 /**
345 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
346 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
347 * @return the number of pattern matches found.
348 *
349 */
350 public int countMatches(final DirectedCommunicationLink pLink) {
351 return rawCountMatches(new Object[]{pLink});
352 }
353
354 /**
355 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
356 * Neither determinism nor randomness of selection is guaranteed.
357 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
358 * @param processor the action that will process the selected match.
359 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
360 *
361 */
362 public boolean forOneArbitraryMatch(final DirectedCommunicationLink pLink, final Consumer<? super IncompatibleSourceAndTargetGain.Match> processor) {
363 return rawForOneArbitraryMatch(new Object[]{pLink}, processor);
364 }
365
366 /**
367 * Returns a new (partial) match.
368 * This can be used e.g. to call the matcher with a partial match.
369 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
370 * @param pLink the fixed value of pattern parameter Link, or null if not bound.
371 * @return the (partial) match object.
372 *
373 */
374 public IncompatibleSourceAndTargetGain.Match newMatch(final DirectedCommunicationLink pLink) {
375 return IncompatibleSourceAndTargetGain.Match.newMatch(pLink);
376 }
377
378 /**
379 * Retrieve the set of values that occur in matches for Link.
380 * @return the Set of all values or empty set if there are no matches
381 *
382 */
383 protected Stream<DirectedCommunicationLink> rawStreamAllValuesOfLink(final Object[] parameters) {
384 return rawStreamAllValues(POSITION_LINK, parameters).map(DirectedCommunicationLink.class::cast);
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for Link.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 public Set<DirectedCommunicationLink> getAllValuesOfLink() {
393 return rawStreamAllValuesOfLink(emptyArray()).collect(Collectors.toSet());
394 }
395
396 /**
397 * Retrieve the set of values that occur in matches for Link.
398 * @return the Set of all values or empty set if there are no matches
399 *
400 */
401 public Stream<DirectedCommunicationLink> streamAllValuesOfLink() {
402 return rawStreamAllValuesOfLink(emptyArray());
403 }
404
405 @Override
406 protected IncompatibleSourceAndTargetGain.Match tupleToMatch(final Tuple t) {
407 try {
408 return IncompatibleSourceAndTargetGain.Match.newMatch((DirectedCommunicationLink) t.get(POSITION_LINK));
409 } catch(ClassCastException e) {
410 LOGGER.error("Element(s) in tuple not properly typed!",e);
411 return null;
412 }
413 }
414
415 @Override
416 protected IncompatibleSourceAndTargetGain.Match arrayToMatch(final Object[] match) {
417 try {
418 return IncompatibleSourceAndTargetGain.Match.newMatch((DirectedCommunicationLink) match[POSITION_LINK]);
419 } catch(ClassCastException e) {
420 LOGGER.error("Element(s) in array not properly typed!",e);
421 return null;
422 }
423 }
424
425 @Override
426 protected IncompatibleSourceAndTargetGain.Match arrayToMatchMutable(final Object[] match) {
427 try {
428 return IncompatibleSourceAndTargetGain.Match.newMutableMatch((DirectedCommunicationLink) match[POSITION_LINK]);
429 } catch(ClassCastException e) {
430 LOGGER.error("Element(s) in array not properly typed!",e);
431 return null;
432 }
433 }
434
435 /**
436 * @return the singleton instance of the query specification of this pattern
437 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
438 *
439 */
440 public static IQuerySpecification<IncompatibleSourceAndTargetGain.Matcher> querySpecification() {
441 return IncompatibleSourceAndTargetGain.instance();
442 }
443 }
444
445 private IncompatibleSourceAndTargetGain() {
446 super(GeneratedPQuery.INSTANCE);
447 }
448
449 /**
450 * @return the singleton instance of the query specification
451 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
452 *
453 */
454 public static IncompatibleSourceAndTargetGain instance() {
455 try{
456 return LazyHolder.INSTANCE;
457 } catch (ExceptionInInitializerError err) {
458 throw processInitializerError(err);
459 }
460 }
461
462 @Override
463 protected IncompatibleSourceAndTargetGain.Matcher instantiate(final ViatraQueryEngine engine) {
464 return IncompatibleSourceAndTargetGain.Matcher.on(engine);
465 }
466
467 @Override
468 public IncompatibleSourceAndTargetGain.Matcher instantiate() {
469 return IncompatibleSourceAndTargetGain.Matcher.create();
470 }
471
472 @Override
473 public IncompatibleSourceAndTargetGain.Match newEmptyMatch() {
474 return IncompatibleSourceAndTargetGain.Match.newEmptyMatch();
475 }
476
477 @Override
478 public IncompatibleSourceAndTargetGain.Match newMatch(final Object... parameters) {
479 return IncompatibleSourceAndTargetGain.Match.newMatch((satellite.DirectedCommunicationLink) parameters[0]);
480 }
481
482 /**
483 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain (visibility: PUBLIC, simpleName: IncompatibleSourceAndTargetGain, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
484 * <b>not</b> at the class load time of the outer class,
485 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain (visibility: PUBLIC, simpleName: IncompatibleSourceAndTargetGain, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
486 *
487 * <p> This workaround is required e.g. to support recursion.
488 *
489 */
490 private static class LazyHolder {
491 private static final IncompatibleSourceAndTargetGain INSTANCE = new IncompatibleSourceAndTargetGain();
492
493 /**
494 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
495 * This initialization order is required to support indirect recursion.
496 *
497 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
498 *
499 */
500 private static final Object STATIC_INITIALIZER = ensureInitialized();
501
502 public static Object ensureInitialized() {
503 INSTANCE.ensureInitializedInternal();
504 return null;
505 }
506 }
507
508 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
509 private static final IncompatibleSourceAndTargetGain.GeneratedPQuery INSTANCE = new GeneratedPQuery();
510
511 private final PParameter parameter_Link = new PParameter("Link", "satellite.DirectedCommunicationLink", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "DirectedCommunicationLink")), PParameterDirection.INOUT);
512
513 private final List<PParameter> parameters = Arrays.asList(parameter_Link);
514
515 private GeneratedPQuery() {
516 super(PVisibility.PUBLIC);
517 }
518
519 @Override
520 public String getFullyQualifiedName() {
521 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain";
522 }
523
524 @Override
525 public List<String> getParameterNames() {
526 return Arrays.asList("Link");
527 }
528
529 @Override
530 public List<PParameter> getParameters() {
531 return parameters;
532 }
533
534 @Override
535 public Set<PBody> doGetContainedBodies() {
536 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
537 Set<PBody> bodies = new LinkedHashSet<>();
538 {
539 PBody body = new PBody(this);
540 PVariable var_Link = body.getOrCreateVariableByName("Link");
541 PVariable var_SourceSubsystem = body.getOrCreateVariableByName("SourceSubsystem");
542 PVariable var_TargetSubsystem = body.getOrCreateVariableByName("TargetSubsystem");
543 PVariable var_Gain = body.getOrCreateVariableByName("Gain");
544 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
545 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
546 new ExportedParameter(body, var_Link, parameter_Link)
547 ));
548 // DirectedCommunicationLink.source(Link, SourceSubsystem)
549 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
550 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
551 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
552 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
553 new Equality(body, var__virtual_0_, var_SourceSubsystem);
554 // DirectedCommunicationLink.target(Link, TargetSubsystem)
555 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
556 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
559 new Equality(body, var__virtual_1_, var_TargetSubsystem);
560 // CommSubsystem.gain(SourceSubsystem, Gain)
561 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceSubsystem), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
562 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
563 new TypeConstraint(body, Tuples.flatTupleOf(var_SourceSubsystem, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
564 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
565 new Equality(body, var__virtual_2_, var_Gain);
566 // neg find commSubsystemGain(TargetSubsystem, Gain)
567 new NegativePatternCall(body, Tuples.flatTupleOf(var_TargetSubsystem, var_Gain), CommSubsystemGain.instance().getInternalQueryRepresentation());
568 bodies.add(body);
569 }
570 {
571 PAnnotation annotation = new PAnnotation("Constraint");
572 annotation.addAttribute("severity", "error");
573 annotation.addAttribute("key", Arrays.asList(new Object[] {
574 new ParameterReference("Link")
575 }));
576 annotation.addAttribute("message", "Two ends of a communication link must use the same antenna gain.");
577 addAnnotation(annotation);
578 }
579 return bodies;
580 }
581 }
582}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/KaAntennaGainLow.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/KaAntennaGainLow.java
new file mode 100644
index 00000000..37c35bfe
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/KaAntennaGainLow.java
@@ -0,0 +1,574 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.EDataType;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
28import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
29import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
43import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
44import satellite.CommSubsystem;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * // Ka-band transmitters may only be combined with a medium or high gain antenna
52 *
53 * {@literal @}Constraint(severity = "error", key = {Comm},
54 * message = "Ka-band transceiver must be combined with a medium or high gain antenna.")
55 * pattern kaAntennaGainLow(Comm : CommSubsystem) {
56 * CommSubsystem.band(Comm, TransceiverBand::Ka);
57 * CommSubsystem.gain(Comm, AntennaGain::LOW);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class KaAntennaGainLow extends BaseGeneratedEMFQuerySpecification<KaAntennaGainLow.Matcher> {
67 /**
68 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private CommSubsystem fComm;
81
82 private static List<String> parameterNames = makeImmutableList("Comm");
83
84 private Match(final CommSubsystem pComm) {
85 this.fComm = pComm;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 if ("Comm".equals(parameterName)) return this.fComm;
91 return null;
92 }
93
94 public CommSubsystem getComm() {
95 return this.fComm;
96 }
97
98 @Override
99 public boolean set(final String parameterName, final Object newValue) {
100 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
101 if ("Comm".equals(parameterName) ) {
102 this.fComm = (CommSubsystem) newValue;
103 return true;
104 }
105 return false;
106 }
107
108 public void setComm(final CommSubsystem pComm) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 this.fComm = pComm;
111 }
112
113 @Override
114 public String patternName() {
115 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow";
116 }
117
118 @Override
119 public List<String> parameterNames() {
120 return KaAntennaGainLow.Match.parameterNames;
121 }
122
123 @Override
124 public Object[] toArray() {
125 return new Object[]{fComm};
126 }
127
128 @Override
129 public KaAntennaGainLow.Match toImmutable() {
130 return isMutable() ? newMatch(fComm) : this;
131 }
132
133 @Override
134 public String prettyPrint() {
135 StringBuilder result = new StringBuilder();
136 result.append("\"Comm\"=" + prettyPrintValue(fComm));
137 return result.toString();
138 }
139
140 @Override
141 public int hashCode() {
142 return Objects.hash(fComm);
143 }
144
145 @Override
146 public boolean equals(final Object obj) {
147 if (this == obj)
148 return true;
149 if (obj == null) {
150 return false;
151 }
152 if ((obj instanceof KaAntennaGainLow.Match)) {
153 KaAntennaGainLow.Match other = (KaAntennaGainLow.Match) obj;
154 return Objects.equals(fComm, other.fComm);
155 } else {
156 // this should be infrequent
157 if (!(obj instanceof IPatternMatch)) {
158 return false;
159 }
160 IPatternMatch otherSig = (IPatternMatch) obj;
161 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
162 }
163 }
164
165 @Override
166 public KaAntennaGainLow specification() {
167 return KaAntennaGainLow.instance();
168 }
169
170 /**
171 * Returns an empty, mutable match.
172 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
173 *
174 * @return the empty match.
175 *
176 */
177 public static KaAntennaGainLow.Match newEmptyMatch() {
178 return new Mutable(null);
179 }
180
181 /**
182 * Returns a mutable (partial) match.
183 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
184 *
185 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
186 * @return the new, mutable (partial) match object.
187 *
188 */
189 public static KaAntennaGainLow.Match newMutableMatch(final CommSubsystem pComm) {
190 return new Mutable(pComm);
191 }
192
193 /**
194 * Returns a new (partial) match.
195 * This can be used e.g. to call the matcher with a partial match.
196 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
197 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
198 * @return the (partial) match object.
199 *
200 */
201 public static KaAntennaGainLow.Match newMatch(final CommSubsystem pComm) {
202 return new Immutable(pComm);
203 }
204
205 private static final class Mutable extends KaAntennaGainLow.Match {
206 Mutable(final CommSubsystem pComm) {
207 super(pComm);
208 }
209
210 @Override
211 public boolean isMutable() {
212 return true;
213 }
214 }
215
216 private static final class Immutable extends KaAntennaGainLow.Match {
217 Immutable(final CommSubsystem pComm) {
218 super(pComm);
219 }
220
221 @Override
222 public boolean isMutable() {
223 return false;
224 }
225 }
226 }
227
228 /**
229 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow pattern,
230 * providing pattern-specific query methods.
231 *
232 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
233 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
234 *
235 * <p>Matches of the pattern will be represented as {@link Match}.
236 *
237 * <p>Original source:
238 * <code><pre>
239 * // Ka-band transmitters may only be combined with a medium or high gain antenna
240 *
241 * {@literal @}Constraint(severity = "error", key = {Comm},
242 * message = "Ka-band transceiver must be combined with a medium or high gain antenna.")
243 * pattern kaAntennaGainLow(Comm : CommSubsystem) {
244 * CommSubsystem.band(Comm, TransceiverBand::Ka);
245 * CommSubsystem.gain(Comm, AntennaGain::LOW);
246 * }
247 * </pre></code>
248 *
249 * @see Match
250 * @see KaAntennaGainLow
251 *
252 */
253 public static class Matcher extends BaseMatcher<KaAntennaGainLow.Match> {
254 /**
255 * Initializes the pattern matcher within an existing VIATRA Query engine.
256 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
257 *
258 * @param engine the existing VIATRA Query engine in which this matcher will be created.
259 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
260 *
261 */
262 public static KaAntennaGainLow.Matcher on(final ViatraQueryEngine engine) {
263 // check if matcher already exists
264 Matcher matcher = engine.getExistingMatcher(querySpecification());
265 if (matcher == null) {
266 matcher = (Matcher)engine.getMatcher(querySpecification());
267 }
268 return matcher;
269 }
270
271 /**
272 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
273 * @return an initialized matcher
274 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
275 *
276 */
277 public static KaAntennaGainLow.Matcher create() {
278 return new Matcher();
279 }
280
281 private static final int POSITION_COMM = 0;
282
283 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(KaAntennaGainLow.Matcher.class);
284
285 /**
286 * Initializes the pattern matcher within an existing VIATRA Query engine.
287 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
288 *
289 * @param engine the existing VIATRA Query engine in which this matcher will be created.
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 *
292 */
293 private Matcher() {
294 super(querySpecification());
295 }
296
297 /**
298 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
299 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
300 * @return matches represented as a Match object.
301 *
302 */
303 public Collection<KaAntennaGainLow.Match> getAllMatches(final CommSubsystem pComm) {
304 return rawStreamAllMatches(new Object[]{pComm}).collect(Collectors.toSet());
305 }
306
307 /**
308 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
309 * </p>
310 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
311 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
312 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
313 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
314 * @return a stream of matches represented as a Match object.
315 *
316 */
317 public Stream<KaAntennaGainLow.Match> streamAllMatches(final CommSubsystem pComm) {
318 return rawStreamAllMatches(new Object[]{pComm});
319 }
320
321 /**
322 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
323 * Neither determinism nor randomness of selection is guaranteed.
324 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
325 * @return a match represented as a Match object, or null if no match is found.
326 *
327 */
328 public Optional<KaAntennaGainLow.Match> getOneArbitraryMatch(final CommSubsystem pComm) {
329 return rawGetOneArbitraryMatch(new Object[]{pComm});
330 }
331
332 /**
333 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
334 * under any possible substitution of the unspecified parameters (if any).
335 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
336 * @return true if the input is a valid (partial) match of the pattern.
337 *
338 */
339 public boolean hasMatch(final CommSubsystem pComm) {
340 return rawHasMatch(new Object[]{pComm});
341 }
342
343 /**
344 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
345 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
346 * @return the number of pattern matches found.
347 *
348 */
349 public int countMatches(final CommSubsystem pComm) {
350 return rawCountMatches(new Object[]{pComm});
351 }
352
353 /**
354 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
355 * Neither determinism nor randomness of selection is guaranteed.
356 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
357 * @param processor the action that will process the selected match.
358 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
359 *
360 */
361 public boolean forOneArbitraryMatch(final CommSubsystem pComm, final Consumer<? super KaAntennaGainLow.Match> processor) {
362 return rawForOneArbitraryMatch(new Object[]{pComm}, processor);
363 }
364
365 /**
366 * Returns a new (partial) match.
367 * This can be used e.g. to call the matcher with a partial match.
368 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
369 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
370 * @return the (partial) match object.
371 *
372 */
373 public KaAntennaGainLow.Match newMatch(final CommSubsystem pComm) {
374 return KaAntennaGainLow.Match.newMatch(pComm);
375 }
376
377 /**
378 * Retrieve the set of values that occur in matches for Comm.
379 * @return the Set of all values or empty set if there are no matches
380 *
381 */
382 protected Stream<CommSubsystem> rawStreamAllValuesOfComm(final Object[] parameters) {
383 return rawStreamAllValues(POSITION_COMM, parameters).map(CommSubsystem.class::cast);
384 }
385
386 /**
387 * Retrieve the set of values that occur in matches for Comm.
388 * @return the Set of all values or empty set if there are no matches
389 *
390 */
391 public Set<CommSubsystem> getAllValuesOfComm() {
392 return rawStreamAllValuesOfComm(emptyArray()).collect(Collectors.toSet());
393 }
394
395 /**
396 * Retrieve the set of values that occur in matches for Comm.
397 * @return the Set of all values or empty set if there are no matches
398 *
399 */
400 public Stream<CommSubsystem> streamAllValuesOfComm() {
401 return rawStreamAllValuesOfComm(emptyArray());
402 }
403
404 @Override
405 protected KaAntennaGainLow.Match tupleToMatch(final Tuple t) {
406 try {
407 return KaAntennaGainLow.Match.newMatch((CommSubsystem) t.get(POSITION_COMM));
408 } catch(ClassCastException e) {
409 LOGGER.error("Element(s) in tuple not properly typed!",e);
410 return null;
411 }
412 }
413
414 @Override
415 protected KaAntennaGainLow.Match arrayToMatch(final Object[] match) {
416 try {
417 return KaAntennaGainLow.Match.newMatch((CommSubsystem) match[POSITION_COMM]);
418 } catch(ClassCastException e) {
419 LOGGER.error("Element(s) in array not properly typed!",e);
420 return null;
421 }
422 }
423
424 @Override
425 protected KaAntennaGainLow.Match arrayToMatchMutable(final Object[] match) {
426 try {
427 return KaAntennaGainLow.Match.newMutableMatch((CommSubsystem) match[POSITION_COMM]);
428 } catch(ClassCastException e) {
429 LOGGER.error("Element(s) in array not properly typed!",e);
430 return null;
431 }
432 }
433
434 /**
435 * @return the singleton instance of the query specification of this pattern
436 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
437 *
438 */
439 public static IQuerySpecification<KaAntennaGainLow.Matcher> querySpecification() {
440 return KaAntennaGainLow.instance();
441 }
442 }
443
444 private KaAntennaGainLow() {
445 super(GeneratedPQuery.INSTANCE);
446 }
447
448 /**
449 * @return the singleton instance of the query specification
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static KaAntennaGainLow instance() {
454 try{
455 return LazyHolder.INSTANCE;
456 } catch (ExceptionInInitializerError err) {
457 throw processInitializerError(err);
458 }
459 }
460
461 @Override
462 protected KaAntennaGainLow.Matcher instantiate(final ViatraQueryEngine engine) {
463 return KaAntennaGainLow.Matcher.on(engine);
464 }
465
466 @Override
467 public KaAntennaGainLow.Matcher instantiate() {
468 return KaAntennaGainLow.Matcher.create();
469 }
470
471 @Override
472 public KaAntennaGainLow.Match newEmptyMatch() {
473 return KaAntennaGainLow.Match.newEmptyMatch();
474 }
475
476 @Override
477 public KaAntennaGainLow.Match newMatch(final Object... parameters) {
478 return KaAntennaGainLow.Match.newMatch((satellite.CommSubsystem) parameters[0]);
479 }
480
481 /**
482 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow (visibility: PUBLIC, simpleName: KaAntennaGainLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
483 * <b>not</b> at the class load time of the outer class,
484 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow (visibility: PUBLIC, simpleName: KaAntennaGainLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
485 *
486 * <p> This workaround is required e.g. to support recursion.
487 *
488 */
489 private static class LazyHolder {
490 private static final KaAntennaGainLow INSTANCE = new KaAntennaGainLow();
491
492 /**
493 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
494 * This initialization order is required to support indirect recursion.
495 *
496 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
497 *
498 */
499 private static final Object STATIC_INITIALIZER = ensureInitialized();
500
501 public static Object ensureInitialized() {
502 INSTANCE.ensureInitializedInternal();
503 return null;
504 }
505 }
506
507 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
508 private static final KaAntennaGainLow.GeneratedPQuery INSTANCE = new GeneratedPQuery();
509
510 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
511
512 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
513
514 private GeneratedPQuery() {
515 super(PVisibility.PUBLIC);
516 }
517
518 @Override
519 public String getFullyQualifiedName() {
520 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow";
521 }
522
523 @Override
524 public List<String> getParameterNames() {
525 return Arrays.asList("Comm");
526 }
527
528 @Override
529 public List<PParameter> getParameters() {
530 return parameters;
531 }
532
533 @Override
534 public Set<PBody> doGetContainedBodies() {
535 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
536 Set<PBody> bodies = new LinkedHashSet<>();
537 {
538 PBody body = new PBody(this);
539 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
540 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
541 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
542 new ExportedParameter(body, var_Comm, parameter_Comm)
543 ));
544 // CommSubsystem.band(Comm, TransceiverBand::Ka)
545 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
546 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "Ka").getInstance());
547 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
548 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
550 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
551 new Equality(body, var__virtual_1_, var__virtual_0_);
552 // CommSubsystem.gain(Comm, AntennaGain::LOW)
553 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
554 new ConstantValue(body, var__virtual_2_, getEnumLiteral("http://www.example.org/satellite", "AntennaGain", "LOW").getInstance());
555 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
556 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
559 new Equality(body, var__virtual_3_, var__virtual_2_);
560 bodies.add(body);
561 }
562 {
563 PAnnotation annotation = new PAnnotation("Constraint");
564 annotation.addAttribute("severity", "error");
565 annotation.addAttribute("key", Arrays.asList(new Object[] {
566 new ParameterReference("Comm")
567 }));
568 annotation.addAttribute("message", "Ka-band transceiver must be combined with a medium or high gain antenna.");
569 addAnnotation(annotation);
570 }
571 return bodies;
572 }
573 }
574}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoLinkToGroundStation.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoLinkToGroundStation.java
new file mode 100644
index 00000000..45952f33
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoLinkToGroundStation.java
@@ -0,0 +1,575 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43import satellite.Spacecraft;
44
45/**
46 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
47 *
48 * <p>Original source:
49 * <code><pre>
50 * // All spacecraft must have some communication path to the ground station
51 *
52 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
53 * message = "Spacecraft has no communication path to the ground station.")
54 * pattern noLinkToGroundStation(Spacecraft : Spacecraft) {
55 * ConstellationMission.groundStationNetwork(Mission, GroundStation);
56 * ConstellationMission.spacecraft(Mission, Spacecraft);
57 * neg find indirectCommunicationLink(Spacecraft, GroundStation);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class NoLinkToGroundStation extends BaseGeneratedEMFQuerySpecification<NoLinkToGroundStation.Matcher> {
67 /**
68 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private Spacecraft fSpacecraft;
81
82 private static List<String> parameterNames = makeImmutableList("Spacecraft");
83
84 private Match(final Spacecraft pSpacecraft) {
85 this.fSpacecraft = pSpacecraft;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 if ("Spacecraft".equals(parameterName)) return this.fSpacecraft;
91 return null;
92 }
93
94 public Spacecraft getSpacecraft() {
95 return this.fSpacecraft;
96 }
97
98 @Override
99 public boolean set(final String parameterName, final Object newValue) {
100 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
101 if ("Spacecraft".equals(parameterName) ) {
102 this.fSpacecraft = (Spacecraft) newValue;
103 return true;
104 }
105 return false;
106 }
107
108 public void setSpacecraft(final Spacecraft pSpacecraft) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 this.fSpacecraft = pSpacecraft;
111 }
112
113 @Override
114 public String patternName() {
115 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation";
116 }
117
118 @Override
119 public List<String> parameterNames() {
120 return NoLinkToGroundStation.Match.parameterNames;
121 }
122
123 @Override
124 public Object[] toArray() {
125 return new Object[]{fSpacecraft};
126 }
127
128 @Override
129 public NoLinkToGroundStation.Match toImmutable() {
130 return isMutable() ? newMatch(fSpacecraft) : this;
131 }
132
133 @Override
134 public String prettyPrint() {
135 StringBuilder result = new StringBuilder();
136 result.append("\"Spacecraft\"=" + prettyPrintValue(fSpacecraft));
137 return result.toString();
138 }
139
140 @Override
141 public int hashCode() {
142 return Objects.hash(fSpacecraft);
143 }
144
145 @Override
146 public boolean equals(final Object obj) {
147 if (this == obj)
148 return true;
149 if (obj == null) {
150 return false;
151 }
152 if ((obj instanceof NoLinkToGroundStation.Match)) {
153 NoLinkToGroundStation.Match other = (NoLinkToGroundStation.Match) obj;
154 return Objects.equals(fSpacecraft, other.fSpacecraft);
155 } else {
156 // this should be infrequent
157 if (!(obj instanceof IPatternMatch)) {
158 return false;
159 }
160 IPatternMatch otherSig = (IPatternMatch) obj;
161 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
162 }
163 }
164
165 @Override
166 public NoLinkToGroundStation specification() {
167 return NoLinkToGroundStation.instance();
168 }
169
170 /**
171 * Returns an empty, mutable match.
172 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
173 *
174 * @return the empty match.
175 *
176 */
177 public static NoLinkToGroundStation.Match newEmptyMatch() {
178 return new Mutable(null);
179 }
180
181 /**
182 * Returns a mutable (partial) match.
183 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
184 *
185 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
186 * @return the new, mutable (partial) match object.
187 *
188 */
189 public static NoLinkToGroundStation.Match newMutableMatch(final Spacecraft pSpacecraft) {
190 return new Mutable(pSpacecraft);
191 }
192
193 /**
194 * Returns a new (partial) match.
195 * This can be used e.g. to call the matcher with a partial match.
196 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
197 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
198 * @return the (partial) match object.
199 *
200 */
201 public static NoLinkToGroundStation.Match newMatch(final Spacecraft pSpacecraft) {
202 return new Immutable(pSpacecraft);
203 }
204
205 private static final class Mutable extends NoLinkToGroundStation.Match {
206 Mutable(final Spacecraft pSpacecraft) {
207 super(pSpacecraft);
208 }
209
210 @Override
211 public boolean isMutable() {
212 return true;
213 }
214 }
215
216 private static final class Immutable extends NoLinkToGroundStation.Match {
217 Immutable(final Spacecraft pSpacecraft) {
218 super(pSpacecraft);
219 }
220
221 @Override
222 public boolean isMutable() {
223 return false;
224 }
225 }
226 }
227
228 /**
229 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation pattern,
230 * providing pattern-specific query methods.
231 *
232 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
233 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
234 *
235 * <p>Matches of the pattern will be represented as {@link Match}.
236 *
237 * <p>Original source:
238 * <code><pre>
239 * // All spacecraft must have some communication path to the ground station
240 *
241 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
242 * message = "Spacecraft has no communication path to the ground station.")
243 * pattern noLinkToGroundStation(Spacecraft : Spacecraft) {
244 * ConstellationMission.groundStationNetwork(Mission, GroundStation);
245 * ConstellationMission.spacecraft(Mission, Spacecraft);
246 * neg find indirectCommunicationLink(Spacecraft, GroundStation);
247 * }
248 * </pre></code>
249 *
250 * @see Match
251 * @see NoLinkToGroundStation
252 *
253 */
254 public static class Matcher extends BaseMatcher<NoLinkToGroundStation.Match> {
255 /**
256 * Initializes the pattern matcher within an existing VIATRA Query engine.
257 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
258 *
259 * @param engine the existing VIATRA Query engine in which this matcher will be created.
260 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
261 *
262 */
263 public static NoLinkToGroundStation.Matcher on(final ViatraQueryEngine engine) {
264 // check if matcher already exists
265 Matcher matcher = engine.getExistingMatcher(querySpecification());
266 if (matcher == null) {
267 matcher = (Matcher)engine.getMatcher(querySpecification());
268 }
269 return matcher;
270 }
271
272 /**
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 * @return an initialized matcher
275 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
276 *
277 */
278 public static NoLinkToGroundStation.Matcher create() {
279 return new Matcher();
280 }
281
282 private static final int POSITION_SPACECRAFT = 0;
283
284 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NoLinkToGroundStation.Matcher.class);
285
286 /**
287 * Initializes the pattern matcher within an existing VIATRA Query engine.
288 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
289 *
290 * @param engine the existing VIATRA Query engine in which this matcher will be created.
291 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
292 *
293 */
294 private Matcher() {
295 super(querySpecification());
296 }
297
298 /**
299 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
300 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
301 * @return matches represented as a Match object.
302 *
303 */
304 public Collection<NoLinkToGroundStation.Match> getAllMatches(final Spacecraft pSpacecraft) {
305 return rawStreamAllMatches(new Object[]{pSpacecraft}).collect(Collectors.toSet());
306 }
307
308 /**
309 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
310 * </p>
311 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
312 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
313 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
314 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
315 * @return a stream of matches represented as a Match object.
316 *
317 */
318 public Stream<NoLinkToGroundStation.Match> streamAllMatches(final Spacecraft pSpacecraft) {
319 return rawStreamAllMatches(new Object[]{pSpacecraft});
320 }
321
322 /**
323 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
324 * Neither determinism nor randomness of selection is guaranteed.
325 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
326 * @return a match represented as a Match object, or null if no match is found.
327 *
328 */
329 public Optional<NoLinkToGroundStation.Match> getOneArbitraryMatch(final Spacecraft pSpacecraft) {
330 return rawGetOneArbitraryMatch(new Object[]{pSpacecraft});
331 }
332
333 /**
334 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
335 * under any possible substitution of the unspecified parameters (if any).
336 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
337 * @return true if the input is a valid (partial) match of the pattern.
338 *
339 */
340 public boolean hasMatch(final Spacecraft pSpacecraft) {
341 return rawHasMatch(new Object[]{pSpacecraft});
342 }
343
344 /**
345 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
346 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
347 * @return the number of pattern matches found.
348 *
349 */
350 public int countMatches(final Spacecraft pSpacecraft) {
351 return rawCountMatches(new Object[]{pSpacecraft});
352 }
353
354 /**
355 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
356 * Neither determinism nor randomness of selection is guaranteed.
357 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
358 * @param processor the action that will process the selected match.
359 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
360 *
361 */
362 public boolean forOneArbitraryMatch(final Spacecraft pSpacecraft, final Consumer<? super NoLinkToGroundStation.Match> processor) {
363 return rawForOneArbitraryMatch(new Object[]{pSpacecraft}, processor);
364 }
365
366 /**
367 * Returns a new (partial) match.
368 * This can be used e.g. to call the matcher with a partial match.
369 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
370 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
371 * @return the (partial) match object.
372 *
373 */
374 public NoLinkToGroundStation.Match newMatch(final Spacecraft pSpacecraft) {
375 return NoLinkToGroundStation.Match.newMatch(pSpacecraft);
376 }
377
378 /**
379 * Retrieve the set of values that occur in matches for Spacecraft.
380 * @return the Set of all values or empty set if there are no matches
381 *
382 */
383 protected Stream<Spacecraft> rawStreamAllValuesOfSpacecraft(final Object[] parameters) {
384 return rawStreamAllValues(POSITION_SPACECRAFT, parameters).map(Spacecraft.class::cast);
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for Spacecraft.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 public Set<Spacecraft> getAllValuesOfSpacecraft() {
393 return rawStreamAllValuesOfSpacecraft(emptyArray()).collect(Collectors.toSet());
394 }
395
396 /**
397 * Retrieve the set of values that occur in matches for Spacecraft.
398 * @return the Set of all values or empty set if there are no matches
399 *
400 */
401 public Stream<Spacecraft> streamAllValuesOfSpacecraft() {
402 return rawStreamAllValuesOfSpacecraft(emptyArray());
403 }
404
405 @Override
406 protected NoLinkToGroundStation.Match tupleToMatch(final Tuple t) {
407 try {
408 return NoLinkToGroundStation.Match.newMatch((Spacecraft) t.get(POSITION_SPACECRAFT));
409 } catch(ClassCastException e) {
410 LOGGER.error("Element(s) in tuple not properly typed!",e);
411 return null;
412 }
413 }
414
415 @Override
416 protected NoLinkToGroundStation.Match arrayToMatch(final Object[] match) {
417 try {
418 return NoLinkToGroundStation.Match.newMatch((Spacecraft) match[POSITION_SPACECRAFT]);
419 } catch(ClassCastException e) {
420 LOGGER.error("Element(s) in array not properly typed!",e);
421 return null;
422 }
423 }
424
425 @Override
426 protected NoLinkToGroundStation.Match arrayToMatchMutable(final Object[] match) {
427 try {
428 return NoLinkToGroundStation.Match.newMutableMatch((Spacecraft) match[POSITION_SPACECRAFT]);
429 } catch(ClassCastException e) {
430 LOGGER.error("Element(s) in array not properly typed!",e);
431 return null;
432 }
433 }
434
435 /**
436 * @return the singleton instance of the query specification of this pattern
437 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
438 *
439 */
440 public static IQuerySpecification<NoLinkToGroundStation.Matcher> querySpecification() {
441 return NoLinkToGroundStation.instance();
442 }
443 }
444
445 private NoLinkToGroundStation() {
446 super(GeneratedPQuery.INSTANCE);
447 }
448
449 /**
450 * @return the singleton instance of the query specification
451 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
452 *
453 */
454 public static NoLinkToGroundStation instance() {
455 try{
456 return LazyHolder.INSTANCE;
457 } catch (ExceptionInInitializerError err) {
458 throw processInitializerError(err);
459 }
460 }
461
462 @Override
463 protected NoLinkToGroundStation.Matcher instantiate(final ViatraQueryEngine engine) {
464 return NoLinkToGroundStation.Matcher.on(engine);
465 }
466
467 @Override
468 public NoLinkToGroundStation.Matcher instantiate() {
469 return NoLinkToGroundStation.Matcher.create();
470 }
471
472 @Override
473 public NoLinkToGroundStation.Match newEmptyMatch() {
474 return NoLinkToGroundStation.Match.newEmptyMatch();
475 }
476
477 @Override
478 public NoLinkToGroundStation.Match newMatch(final Object... parameters) {
479 return NoLinkToGroundStation.Match.newMatch((satellite.Spacecraft) parameters[0]);
480 }
481
482 /**
483 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation (visibility: PUBLIC, simpleName: NoLinkToGroundStation, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
484 * <b>not</b> at the class load time of the outer class,
485 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation (visibility: PUBLIC, simpleName: NoLinkToGroundStation, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
486 *
487 * <p> This workaround is required e.g. to support recursion.
488 *
489 */
490 private static class LazyHolder {
491 private static final NoLinkToGroundStation INSTANCE = new NoLinkToGroundStation();
492
493 /**
494 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
495 * This initialization order is required to support indirect recursion.
496 *
497 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
498 *
499 */
500 private static final Object STATIC_INITIALIZER = ensureInitialized();
501
502 public static Object ensureInitialized() {
503 INSTANCE.ensureInitializedInternal();
504 return null;
505 }
506 }
507
508 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
509 private static final NoLinkToGroundStation.GeneratedPQuery INSTANCE = new GeneratedPQuery();
510
511 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
512
513 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft);
514
515 private GeneratedPQuery() {
516 super(PVisibility.PUBLIC);
517 }
518
519 @Override
520 public String getFullyQualifiedName() {
521 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation";
522 }
523
524 @Override
525 public List<String> getParameterNames() {
526 return Arrays.asList("Spacecraft");
527 }
528
529 @Override
530 public List<PParameter> getParameters() {
531 return parameters;
532 }
533
534 @Override
535 public Set<PBody> doGetContainedBodies() {
536 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
537 Set<PBody> bodies = new LinkedHashSet<>();
538 {
539 PBody body = new PBody(this);
540 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
541 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
542 PVariable var_GroundStation = body.getOrCreateVariableByName("GroundStation");
543 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
544 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
545 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft)
546 ));
547 // ConstellationMission.groundStationNetwork(Mission, GroundStation)
548 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
549 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
550 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "groundStationNetwork")));
551 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
552 new Equality(body, var__virtual_0_, var_GroundStation);
553 // ConstellationMission.spacecraft(Mission, Spacecraft)
554 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
555 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
556 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
557 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
558 new Equality(body, var__virtual_1_, var_Spacecraft);
559 // neg find indirectCommunicationLink(Spacecraft, GroundStation)
560 new NegativePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_GroundStation), IndirectCommunicationLink.instance().getInternalQueryRepresentation());
561 bodies.add(body);
562 }
563 {
564 PAnnotation annotation = new PAnnotation("Constraint");
565 annotation.addAttribute("severity", "error");
566 annotation.addAttribute("key", Arrays.asList(new Object[] {
567 new ParameterReference("Spacecraft")
568 }));
569 annotation.addAttribute("message", "Spacecraft has no communication path to the ground station.");
570 addAnnotation(annotation);
571 }
572 return bodies;
573 }
574 }
575}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoPotentialLinkToGroundStation.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoPotentialLinkToGroundStation.java
new file mode 100644
index 00000000..3366de46
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NoPotentialLinkToGroundStation.java
@@ -0,0 +1,571 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43import satellite.Spacecraft;
44
45/**
46 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
47 *
48 * <p>Original source:
49 * <code><pre>
50 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
51 * message = "Spacecraft has no potential communication path to the ground station.")
52 * pattern noPotentialLinkToGroundStation(Spacecraft : Spacecraft) {
53 * ConstellationMission.groundStationNetwork(Mission, GroundStation);
54 * ConstellationMission.spacecraft(Mission, Spacecraft);
55 * neg find indirectLinkAllowed(Spacecraft, GroundStation);
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class NoPotentialLinkToGroundStation extends BaseGeneratedEMFQuerySpecification<NoPotentialLinkToGroundStation.Matcher> {
65 /**
66 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private Spacecraft fSpacecraft;
79
80 private static List<String> parameterNames = makeImmutableList("Spacecraft");
81
82 private Match(final Spacecraft pSpacecraft) {
83 this.fSpacecraft = pSpacecraft;
84 }
85
86 @Override
87 public Object get(final String parameterName) {
88 if ("Spacecraft".equals(parameterName)) return this.fSpacecraft;
89 return null;
90 }
91
92 public Spacecraft getSpacecraft() {
93 return this.fSpacecraft;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("Spacecraft".equals(parameterName) ) {
100 this.fSpacecraft = (Spacecraft) newValue;
101 return true;
102 }
103 return false;
104 }
105
106 public void setSpacecraft(final Spacecraft pSpacecraft) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 this.fSpacecraft = pSpacecraft;
109 }
110
111 @Override
112 public String patternName() {
113 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation";
114 }
115
116 @Override
117 public List<String> parameterNames() {
118 return NoPotentialLinkToGroundStation.Match.parameterNames;
119 }
120
121 @Override
122 public Object[] toArray() {
123 return new Object[]{fSpacecraft};
124 }
125
126 @Override
127 public NoPotentialLinkToGroundStation.Match toImmutable() {
128 return isMutable() ? newMatch(fSpacecraft) : this;
129 }
130
131 @Override
132 public String prettyPrint() {
133 StringBuilder result = new StringBuilder();
134 result.append("\"Spacecraft\"=" + prettyPrintValue(fSpacecraft));
135 return result.toString();
136 }
137
138 @Override
139 public int hashCode() {
140 return Objects.hash(fSpacecraft);
141 }
142
143 @Override
144 public boolean equals(final Object obj) {
145 if (this == obj)
146 return true;
147 if (obj == null) {
148 return false;
149 }
150 if ((obj instanceof NoPotentialLinkToGroundStation.Match)) {
151 NoPotentialLinkToGroundStation.Match other = (NoPotentialLinkToGroundStation.Match) obj;
152 return Objects.equals(fSpacecraft, other.fSpacecraft);
153 } else {
154 // this should be infrequent
155 if (!(obj instanceof IPatternMatch)) {
156 return false;
157 }
158 IPatternMatch otherSig = (IPatternMatch) obj;
159 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
160 }
161 }
162
163 @Override
164 public NoPotentialLinkToGroundStation specification() {
165 return NoPotentialLinkToGroundStation.instance();
166 }
167
168 /**
169 * Returns an empty, mutable match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @return the empty match.
173 *
174 */
175 public static NoPotentialLinkToGroundStation.Match newEmptyMatch() {
176 return new Mutable(null);
177 }
178
179 /**
180 * Returns a mutable (partial) match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
184 * @return the new, mutable (partial) match object.
185 *
186 */
187 public static NoPotentialLinkToGroundStation.Match newMutableMatch(final Spacecraft pSpacecraft) {
188 return new Mutable(pSpacecraft);
189 }
190
191 /**
192 * Returns a new (partial) match.
193 * This can be used e.g. to call the matcher with a partial match.
194 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
195 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
196 * @return the (partial) match object.
197 *
198 */
199 public static NoPotentialLinkToGroundStation.Match newMatch(final Spacecraft pSpacecraft) {
200 return new Immutable(pSpacecraft);
201 }
202
203 private static final class Mutable extends NoPotentialLinkToGroundStation.Match {
204 Mutable(final Spacecraft pSpacecraft) {
205 super(pSpacecraft);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return true;
211 }
212 }
213
214 private static final class Immutable extends NoPotentialLinkToGroundStation.Match {
215 Immutable(final Spacecraft pSpacecraft) {
216 super(pSpacecraft);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return false;
222 }
223 }
224 }
225
226 /**
227 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation pattern,
228 * providing pattern-specific query methods.
229 *
230 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
231 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
232 *
233 * <p>Matches of the pattern will be represented as {@link Match}.
234 *
235 * <p>Original source:
236 * <code><pre>
237 * {@literal @}Constraint(severity = "error", key = {Spacecraft},
238 * message = "Spacecraft has no potential communication path to the ground station.")
239 * pattern noPotentialLinkToGroundStation(Spacecraft : Spacecraft) {
240 * ConstellationMission.groundStationNetwork(Mission, GroundStation);
241 * ConstellationMission.spacecraft(Mission, Spacecraft);
242 * neg find indirectLinkAllowed(Spacecraft, GroundStation);
243 * }
244 * </pre></code>
245 *
246 * @see Match
247 * @see NoPotentialLinkToGroundStation
248 *
249 */
250 public static class Matcher extends BaseMatcher<NoPotentialLinkToGroundStation.Match> {
251 /**
252 * Initializes the pattern matcher within an existing VIATRA Query engine.
253 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
254 *
255 * @param engine the existing VIATRA Query engine in which this matcher will be created.
256 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
257 *
258 */
259 public static NoPotentialLinkToGroundStation.Matcher on(final ViatraQueryEngine engine) {
260 // check if matcher already exists
261 Matcher matcher = engine.getExistingMatcher(querySpecification());
262 if (matcher == null) {
263 matcher = (Matcher)engine.getMatcher(querySpecification());
264 }
265 return matcher;
266 }
267
268 /**
269 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
270 * @return an initialized matcher
271 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
272 *
273 */
274 public static NoPotentialLinkToGroundStation.Matcher create() {
275 return new Matcher();
276 }
277
278 private static final int POSITION_SPACECRAFT = 0;
279
280 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NoPotentialLinkToGroundStation.Matcher.class);
281
282 /**
283 * Initializes the pattern matcher within an existing VIATRA Query engine.
284 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
285 *
286 * @param engine the existing VIATRA Query engine in which this matcher will be created.
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 *
289 */
290 private Matcher() {
291 super(querySpecification());
292 }
293
294 /**
295 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
296 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
297 * @return matches represented as a Match object.
298 *
299 */
300 public Collection<NoPotentialLinkToGroundStation.Match> getAllMatches(final Spacecraft pSpacecraft) {
301 return rawStreamAllMatches(new Object[]{pSpacecraft}).collect(Collectors.toSet());
302 }
303
304 /**
305 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
306 * </p>
307 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
308 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
309 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
310 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
311 * @return a stream of matches represented as a Match object.
312 *
313 */
314 public Stream<NoPotentialLinkToGroundStation.Match> streamAllMatches(final Spacecraft pSpacecraft) {
315 return rawStreamAllMatches(new Object[]{pSpacecraft});
316 }
317
318 /**
319 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
320 * Neither determinism nor randomness of selection is guaranteed.
321 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
322 * @return a match represented as a Match object, or null if no match is found.
323 *
324 */
325 public Optional<NoPotentialLinkToGroundStation.Match> getOneArbitraryMatch(final Spacecraft pSpacecraft) {
326 return rawGetOneArbitraryMatch(new Object[]{pSpacecraft});
327 }
328
329 /**
330 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
331 * under any possible substitution of the unspecified parameters (if any).
332 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
333 * @return true if the input is a valid (partial) match of the pattern.
334 *
335 */
336 public boolean hasMatch(final Spacecraft pSpacecraft) {
337 return rawHasMatch(new Object[]{pSpacecraft});
338 }
339
340 /**
341 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
342 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
343 * @return the number of pattern matches found.
344 *
345 */
346 public int countMatches(final Spacecraft pSpacecraft) {
347 return rawCountMatches(new Object[]{pSpacecraft});
348 }
349
350 /**
351 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
352 * Neither determinism nor randomness of selection is guaranteed.
353 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
354 * @param processor the action that will process the selected match.
355 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
356 *
357 */
358 public boolean forOneArbitraryMatch(final Spacecraft pSpacecraft, final Consumer<? super NoPotentialLinkToGroundStation.Match> processor) {
359 return rawForOneArbitraryMatch(new Object[]{pSpacecraft}, processor);
360 }
361
362 /**
363 * Returns a new (partial) match.
364 * This can be used e.g. to call the matcher with a partial match.
365 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
366 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
367 * @return the (partial) match object.
368 *
369 */
370 public NoPotentialLinkToGroundStation.Match newMatch(final Spacecraft pSpacecraft) {
371 return NoPotentialLinkToGroundStation.Match.newMatch(pSpacecraft);
372 }
373
374 /**
375 * Retrieve the set of values that occur in matches for Spacecraft.
376 * @return the Set of all values or empty set if there are no matches
377 *
378 */
379 protected Stream<Spacecraft> rawStreamAllValuesOfSpacecraft(final Object[] parameters) {
380 return rawStreamAllValues(POSITION_SPACECRAFT, parameters).map(Spacecraft.class::cast);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for Spacecraft.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 public Set<Spacecraft> getAllValuesOfSpacecraft() {
389 return rawStreamAllValuesOfSpacecraft(emptyArray()).collect(Collectors.toSet());
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for Spacecraft.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Stream<Spacecraft> streamAllValuesOfSpacecraft() {
398 return rawStreamAllValuesOfSpacecraft(emptyArray());
399 }
400
401 @Override
402 protected NoPotentialLinkToGroundStation.Match tupleToMatch(final Tuple t) {
403 try {
404 return NoPotentialLinkToGroundStation.Match.newMatch((Spacecraft) t.get(POSITION_SPACECRAFT));
405 } catch(ClassCastException e) {
406 LOGGER.error("Element(s) in tuple not properly typed!",e);
407 return null;
408 }
409 }
410
411 @Override
412 protected NoPotentialLinkToGroundStation.Match arrayToMatch(final Object[] match) {
413 try {
414 return NoPotentialLinkToGroundStation.Match.newMatch((Spacecraft) match[POSITION_SPACECRAFT]);
415 } catch(ClassCastException e) {
416 LOGGER.error("Element(s) in array not properly typed!",e);
417 return null;
418 }
419 }
420
421 @Override
422 protected NoPotentialLinkToGroundStation.Match arrayToMatchMutable(final Object[] match) {
423 try {
424 return NoPotentialLinkToGroundStation.Match.newMutableMatch((Spacecraft) match[POSITION_SPACECRAFT]);
425 } catch(ClassCastException e) {
426 LOGGER.error("Element(s) in array not properly typed!",e);
427 return null;
428 }
429 }
430
431 /**
432 * @return the singleton instance of the query specification of this pattern
433 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
434 *
435 */
436 public static IQuerySpecification<NoPotentialLinkToGroundStation.Matcher> querySpecification() {
437 return NoPotentialLinkToGroundStation.instance();
438 }
439 }
440
441 private NoPotentialLinkToGroundStation() {
442 super(GeneratedPQuery.INSTANCE);
443 }
444
445 /**
446 * @return the singleton instance of the query specification
447 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
448 *
449 */
450 public static NoPotentialLinkToGroundStation instance() {
451 try{
452 return LazyHolder.INSTANCE;
453 } catch (ExceptionInInitializerError err) {
454 throw processInitializerError(err);
455 }
456 }
457
458 @Override
459 protected NoPotentialLinkToGroundStation.Matcher instantiate(final ViatraQueryEngine engine) {
460 return NoPotentialLinkToGroundStation.Matcher.on(engine);
461 }
462
463 @Override
464 public NoPotentialLinkToGroundStation.Matcher instantiate() {
465 return NoPotentialLinkToGroundStation.Matcher.create();
466 }
467
468 @Override
469 public NoPotentialLinkToGroundStation.Match newEmptyMatch() {
470 return NoPotentialLinkToGroundStation.Match.newEmptyMatch();
471 }
472
473 @Override
474 public NoPotentialLinkToGroundStation.Match newMatch(final Object... parameters) {
475 return NoPotentialLinkToGroundStation.Match.newMatch((satellite.Spacecraft) parameters[0]);
476 }
477
478 /**
479 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation (visibility: PUBLIC, simpleName: NoPotentialLinkToGroundStation, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
480 * <b>not</b> at the class load time of the outer class,
481 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation (visibility: PUBLIC, simpleName: NoPotentialLinkToGroundStation, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
482 *
483 * <p> This workaround is required e.g. to support recursion.
484 *
485 */
486 private static class LazyHolder {
487 private static final NoPotentialLinkToGroundStation INSTANCE = new NoPotentialLinkToGroundStation();
488
489 /**
490 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
491 * This initialization order is required to support indirect recursion.
492 *
493 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
494 *
495 */
496 private static final Object STATIC_INITIALIZER = ensureInitialized();
497
498 public static Object ensureInitialized() {
499 INSTANCE.ensureInitializedInternal();
500 return null;
501 }
502 }
503
504 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
505 private static final NoPotentialLinkToGroundStation.GeneratedPQuery INSTANCE = new GeneratedPQuery();
506
507 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
508
509 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft);
510
511 private GeneratedPQuery() {
512 super(PVisibility.PUBLIC);
513 }
514
515 @Override
516 public String getFullyQualifiedName() {
517 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noPotentialLinkToGroundStation";
518 }
519
520 @Override
521 public List<String> getParameterNames() {
522 return Arrays.asList("Spacecraft");
523 }
524
525 @Override
526 public List<PParameter> getParameters() {
527 return parameters;
528 }
529
530 @Override
531 public Set<PBody> doGetContainedBodies() {
532 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
533 Set<PBody> bodies = new LinkedHashSet<>();
534 {
535 PBody body = new PBody(this);
536 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
537 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
538 PVariable var_GroundStation = body.getOrCreateVariableByName("GroundStation");
539 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
540 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
541 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft)
542 ));
543 // ConstellationMission.groundStationNetwork(Mission, GroundStation)
544 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
545 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
546 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "groundStationNetwork")));
547 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
548 new Equality(body, var__virtual_0_, var_GroundStation);
549 // ConstellationMission.spacecraft(Mission, Spacecraft)
550 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
551 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
552 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
553 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
554 new Equality(body, var__virtual_1_, var_Spacecraft);
555 // neg find indirectLinkAllowed(Spacecraft, GroundStation)
556 new NegativePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_GroundStation), IndirectLinkAllowed.instance().getInternalQueryRepresentation());
557 bodies.add(body);
558 }
559 {
560 PAnnotation annotation = new PAnnotation("Constraint");
561 annotation.addAttribute("severity", "error");
562 annotation.addAttribute("key", Arrays.asList(new Object[] {
563 new ParameterReference("Spacecraft")
564 }));
565 annotation.addAttribute("message", "Spacecraft has no potential communication path to the ground station.");
566 addAnnotation(annotation);
567 }
568 return bodies;
569 }
570 }
571}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NotEnoughInterferometryPayloads.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NotEnoughInterferometryPayloads.java
new file mode 100644
index 00000000..bdd97100
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/NotEnoughInterferometryPayloads.java
@@ -0,0 +1,559 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import satellite.InterferometryMission;
42
43/**
44 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
45 *
46 * <p>Original source:
47 * <code><pre>
48 * // At least two spacecraft must have the interferometry payload configured
49 *
50 * {@literal @}Constraint(severity = "error", key = {Mission},
51 * message = "Interferometry mission needs at least two spacecraft configured with the interferometry payload.")
52 * pattern notEnoughInterferometryPayloads(Mission : InterferometryMission) {
53 * InterferometryMission(Mission);
54 * neg find atLeastTwoInterferometryPayloads(Mission);
55 * }
56 * </pre></code>
57 *
58 * @see Matcher
59 * @see Match
60 *
61 */
62@SuppressWarnings("all")
63public final class NotEnoughInterferometryPayloads extends BaseGeneratedEMFQuerySpecification<NotEnoughInterferometryPayloads.Matcher> {
64 /**
65 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads pattern,
66 * to be used in conjunction with {@link Matcher}.
67 *
68 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
69 * Each instance is a (possibly partial) substitution of pattern parameters,
70 * usable to represent a match of the pattern in the result of a query,
71 * or to specify the bound (fixed) input parameters when issuing a query.
72 *
73 * @see Matcher
74 *
75 */
76 public static abstract class Match extends BasePatternMatch {
77 private InterferometryMission fMission;
78
79 private static List<String> parameterNames = makeImmutableList("Mission");
80
81 private Match(final InterferometryMission pMission) {
82 this.fMission = pMission;
83 }
84
85 @Override
86 public Object get(final String parameterName) {
87 if ("Mission".equals(parameterName)) return this.fMission;
88 return null;
89 }
90
91 public InterferometryMission getMission() {
92 return this.fMission;
93 }
94
95 @Override
96 public boolean set(final String parameterName, final Object newValue) {
97 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
98 if ("Mission".equals(parameterName) ) {
99 this.fMission = (InterferometryMission) newValue;
100 return true;
101 }
102 return false;
103 }
104
105 public void setMission(final InterferometryMission pMission) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 this.fMission = pMission;
108 }
109
110 @Override
111 public String patternName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads";
113 }
114
115 @Override
116 public List<String> parameterNames() {
117 return NotEnoughInterferometryPayloads.Match.parameterNames;
118 }
119
120 @Override
121 public Object[] toArray() {
122 return new Object[]{fMission};
123 }
124
125 @Override
126 public NotEnoughInterferometryPayloads.Match toImmutable() {
127 return isMutable() ? newMatch(fMission) : this;
128 }
129
130 @Override
131 public String prettyPrint() {
132 StringBuilder result = new StringBuilder();
133 result.append("\"Mission\"=" + prettyPrintValue(fMission));
134 return result.toString();
135 }
136
137 @Override
138 public int hashCode() {
139 return Objects.hash(fMission);
140 }
141
142 @Override
143 public boolean equals(final Object obj) {
144 if (this == obj)
145 return true;
146 if (obj == null) {
147 return false;
148 }
149 if ((obj instanceof NotEnoughInterferometryPayloads.Match)) {
150 NotEnoughInterferometryPayloads.Match other = (NotEnoughInterferometryPayloads.Match) obj;
151 return Objects.equals(fMission, other.fMission);
152 } else {
153 // this should be infrequent
154 if (!(obj instanceof IPatternMatch)) {
155 return false;
156 }
157 IPatternMatch otherSig = (IPatternMatch) obj;
158 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
159 }
160 }
161
162 @Override
163 public NotEnoughInterferometryPayloads specification() {
164 return NotEnoughInterferometryPayloads.instance();
165 }
166
167 /**
168 * Returns an empty, mutable match.
169 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
170 *
171 * @return the empty match.
172 *
173 */
174 public static NotEnoughInterferometryPayloads.Match newEmptyMatch() {
175 return new Mutable(null);
176 }
177
178 /**
179 * Returns a mutable (partial) match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
183 * @return the new, mutable (partial) match object.
184 *
185 */
186 public static NotEnoughInterferometryPayloads.Match newMutableMatch(final InterferometryMission pMission) {
187 return new Mutable(pMission);
188 }
189
190 /**
191 * Returns a new (partial) match.
192 * This can be used e.g. to call the matcher with a partial match.
193 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
194 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
195 * @return the (partial) match object.
196 *
197 */
198 public static NotEnoughInterferometryPayloads.Match newMatch(final InterferometryMission pMission) {
199 return new Immutable(pMission);
200 }
201
202 private static final class Mutable extends NotEnoughInterferometryPayloads.Match {
203 Mutable(final InterferometryMission pMission) {
204 super(pMission);
205 }
206
207 @Override
208 public boolean isMutable() {
209 return true;
210 }
211 }
212
213 private static final class Immutable extends NotEnoughInterferometryPayloads.Match {
214 Immutable(final InterferometryMission pMission) {
215 super(pMission);
216 }
217
218 @Override
219 public boolean isMutable() {
220 return false;
221 }
222 }
223 }
224
225 /**
226 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads pattern,
227 * providing pattern-specific query methods.
228 *
229 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
230 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
231 *
232 * <p>Matches of the pattern will be represented as {@link Match}.
233 *
234 * <p>Original source:
235 * <code><pre>
236 * // At least two spacecraft must have the interferometry payload configured
237 *
238 * {@literal @}Constraint(severity = "error", key = {Mission},
239 * message = "Interferometry mission needs at least two spacecraft configured with the interferometry payload.")
240 * pattern notEnoughInterferometryPayloads(Mission : InterferometryMission) {
241 * InterferometryMission(Mission);
242 * neg find atLeastTwoInterferometryPayloads(Mission);
243 * }
244 * </pre></code>
245 *
246 * @see Match
247 * @see NotEnoughInterferometryPayloads
248 *
249 */
250 public static class Matcher extends BaseMatcher<NotEnoughInterferometryPayloads.Match> {
251 /**
252 * Initializes the pattern matcher within an existing VIATRA Query engine.
253 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
254 *
255 * @param engine the existing VIATRA Query engine in which this matcher will be created.
256 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
257 *
258 */
259 public static NotEnoughInterferometryPayloads.Matcher on(final ViatraQueryEngine engine) {
260 // check if matcher already exists
261 Matcher matcher = engine.getExistingMatcher(querySpecification());
262 if (matcher == null) {
263 matcher = (Matcher)engine.getMatcher(querySpecification());
264 }
265 return matcher;
266 }
267
268 /**
269 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
270 * @return an initialized matcher
271 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
272 *
273 */
274 public static NotEnoughInterferometryPayloads.Matcher create() {
275 return new Matcher();
276 }
277
278 private static final int POSITION_MISSION = 0;
279
280 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NotEnoughInterferometryPayloads.Matcher.class);
281
282 /**
283 * Initializes the pattern matcher within an existing VIATRA Query engine.
284 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
285 *
286 * @param engine the existing VIATRA Query engine in which this matcher will be created.
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 *
289 */
290 private Matcher() {
291 super(querySpecification());
292 }
293
294 /**
295 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
296 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
297 * @return matches represented as a Match object.
298 *
299 */
300 public Collection<NotEnoughInterferometryPayloads.Match> getAllMatches(final InterferometryMission pMission) {
301 return rawStreamAllMatches(new Object[]{pMission}).collect(Collectors.toSet());
302 }
303
304 /**
305 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
306 * </p>
307 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
308 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
309 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
310 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
311 * @return a stream of matches represented as a Match object.
312 *
313 */
314 public Stream<NotEnoughInterferometryPayloads.Match> streamAllMatches(final InterferometryMission pMission) {
315 return rawStreamAllMatches(new Object[]{pMission});
316 }
317
318 /**
319 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
320 * Neither determinism nor randomness of selection is guaranteed.
321 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
322 * @return a match represented as a Match object, or null if no match is found.
323 *
324 */
325 public Optional<NotEnoughInterferometryPayloads.Match> getOneArbitraryMatch(final InterferometryMission pMission) {
326 return rawGetOneArbitraryMatch(new Object[]{pMission});
327 }
328
329 /**
330 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
331 * under any possible substitution of the unspecified parameters (if any).
332 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
333 * @return true if the input is a valid (partial) match of the pattern.
334 *
335 */
336 public boolean hasMatch(final InterferometryMission pMission) {
337 return rawHasMatch(new Object[]{pMission});
338 }
339
340 /**
341 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
342 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
343 * @return the number of pattern matches found.
344 *
345 */
346 public int countMatches(final InterferometryMission pMission) {
347 return rawCountMatches(new Object[]{pMission});
348 }
349
350 /**
351 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
352 * Neither determinism nor randomness of selection is guaranteed.
353 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
354 * @param processor the action that will process the selected match.
355 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
356 *
357 */
358 public boolean forOneArbitraryMatch(final InterferometryMission pMission, final Consumer<? super NotEnoughInterferometryPayloads.Match> processor) {
359 return rawForOneArbitraryMatch(new Object[]{pMission}, processor);
360 }
361
362 /**
363 * Returns a new (partial) match.
364 * This can be used e.g. to call the matcher with a partial match.
365 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
366 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
367 * @return the (partial) match object.
368 *
369 */
370 public NotEnoughInterferometryPayloads.Match newMatch(final InterferometryMission pMission) {
371 return NotEnoughInterferometryPayloads.Match.newMatch(pMission);
372 }
373
374 /**
375 * Retrieve the set of values that occur in matches for Mission.
376 * @return the Set of all values or empty set if there are no matches
377 *
378 */
379 protected Stream<InterferometryMission> rawStreamAllValuesOfMission(final Object[] parameters) {
380 return rawStreamAllValues(POSITION_MISSION, parameters).map(InterferometryMission.class::cast);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for Mission.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 public Set<InterferometryMission> getAllValuesOfMission() {
389 return rawStreamAllValuesOfMission(emptyArray()).collect(Collectors.toSet());
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for Mission.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Stream<InterferometryMission> streamAllValuesOfMission() {
398 return rawStreamAllValuesOfMission(emptyArray());
399 }
400
401 @Override
402 protected NotEnoughInterferometryPayloads.Match tupleToMatch(final Tuple t) {
403 try {
404 return NotEnoughInterferometryPayloads.Match.newMatch((InterferometryMission) t.get(POSITION_MISSION));
405 } catch(ClassCastException e) {
406 LOGGER.error("Element(s) in tuple not properly typed!",e);
407 return null;
408 }
409 }
410
411 @Override
412 protected NotEnoughInterferometryPayloads.Match arrayToMatch(final Object[] match) {
413 try {
414 return NotEnoughInterferometryPayloads.Match.newMatch((InterferometryMission) match[POSITION_MISSION]);
415 } catch(ClassCastException e) {
416 LOGGER.error("Element(s) in array not properly typed!",e);
417 return null;
418 }
419 }
420
421 @Override
422 protected NotEnoughInterferometryPayloads.Match arrayToMatchMutable(final Object[] match) {
423 try {
424 return NotEnoughInterferometryPayloads.Match.newMutableMatch((InterferometryMission) match[POSITION_MISSION]);
425 } catch(ClassCastException e) {
426 LOGGER.error("Element(s) in array not properly typed!",e);
427 return null;
428 }
429 }
430
431 /**
432 * @return the singleton instance of the query specification of this pattern
433 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
434 *
435 */
436 public static IQuerySpecification<NotEnoughInterferometryPayloads.Matcher> querySpecification() {
437 return NotEnoughInterferometryPayloads.instance();
438 }
439 }
440
441 private NotEnoughInterferometryPayloads() {
442 super(GeneratedPQuery.INSTANCE);
443 }
444
445 /**
446 * @return the singleton instance of the query specification
447 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
448 *
449 */
450 public static NotEnoughInterferometryPayloads instance() {
451 try{
452 return LazyHolder.INSTANCE;
453 } catch (ExceptionInInitializerError err) {
454 throw processInitializerError(err);
455 }
456 }
457
458 @Override
459 protected NotEnoughInterferometryPayloads.Matcher instantiate(final ViatraQueryEngine engine) {
460 return NotEnoughInterferometryPayloads.Matcher.on(engine);
461 }
462
463 @Override
464 public NotEnoughInterferometryPayloads.Matcher instantiate() {
465 return NotEnoughInterferometryPayloads.Matcher.create();
466 }
467
468 @Override
469 public NotEnoughInterferometryPayloads.Match newEmptyMatch() {
470 return NotEnoughInterferometryPayloads.Match.newEmptyMatch();
471 }
472
473 @Override
474 public NotEnoughInterferometryPayloads.Match newMatch(final Object... parameters) {
475 return NotEnoughInterferometryPayloads.Match.newMatch((satellite.InterferometryMission) parameters[0]);
476 }
477
478 /**
479 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads (visibility: PUBLIC, simpleName: NotEnoughInterferometryPayloads, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
480 * <b>not</b> at the class load time of the outer class,
481 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads (visibility: PUBLIC, simpleName: NotEnoughInterferometryPayloads, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
482 *
483 * <p> This workaround is required e.g. to support recursion.
484 *
485 */
486 private static class LazyHolder {
487 private static final NotEnoughInterferometryPayloads INSTANCE = new NotEnoughInterferometryPayloads();
488
489 /**
490 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
491 * This initialization order is required to support indirect recursion.
492 *
493 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
494 *
495 */
496 private static final Object STATIC_INITIALIZER = ensureInitialized();
497
498 public static Object ensureInitialized() {
499 INSTANCE.ensureInitializedInternal();
500 return null;
501 }
502 }
503
504 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
505 private static final NotEnoughInterferometryPayloads.GeneratedPQuery INSTANCE = new GeneratedPQuery();
506
507 private final PParameter parameter_Mission = new PParameter("Mission", "satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
508
509 private final List<PParameter> parameters = Arrays.asList(parameter_Mission);
510
511 private GeneratedPQuery() {
512 super(PVisibility.PUBLIC);
513 }
514
515 @Override
516 public String getFullyQualifiedName() {
517 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads";
518 }
519
520 @Override
521 public List<String> getParameterNames() {
522 return Arrays.asList("Mission");
523 }
524
525 @Override
526 public List<PParameter> getParameters() {
527 return parameters;
528 }
529
530 @Override
531 public Set<PBody> doGetContainedBodies() {
532 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
533 Set<PBody> bodies = new LinkedHashSet<>();
534 {
535 PBody body = new PBody(this);
536 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
537 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
538 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
539 new ExportedParameter(body, var_Mission, parameter_Mission)
540 ));
541 // InterferometryMission(Mission)
542 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
543 // neg find atLeastTwoInterferometryPayloads(Mission)
544 new NegativePatternCall(body, Tuples.flatTupleOf(var_Mission), AtLeastTwoInterferometryPayloads.instance().getInternalQueryRepresentation());
545 bodies.add(body);
546 }
547 {
548 PAnnotation annotation = new PAnnotation("Constraint");
549 annotation.addAttribute("severity", "error");
550 annotation.addAttribute("key", Arrays.asList(new Object[] {
551 new ParameterReference("Mission")
552 }));
553 annotation.addAttribute("message", "Interferometry mission needs at least two spacecraft configured with the interferometry payload.");
554 addAnnotation(annotation);
555 }
556 return bodies;
557 }
558 }
559}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.java
new file mode 100644
index 00000000..c86761ce
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.java
@@ -0,0 +1,196 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink;
18import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow;
19import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
22
23/**
24 * A pattern group formed of all public patterns defined in SatelliteQueries.vql.
25 *
26 * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare
27 * a VIATRA Query engine for matching all patterns originally defined in file SatelliteQueries.vql,
28 * in order to achieve better performance than one-by-one on-demand matcher initialization.
29 *
30 * <p> From package hu.bme.mit.inf.dslreasoner.domains.satellite.queries, the group contains the definition of the following patterns: <ul>
31 * <li>communicationLinkDoesNotStartAtContainingElement</li>
32 * <li>notEnoughInterferometryPayloads</li>
33 * <li>noLinkToGroundStation</li>
34 * <li>noPotentialLinkToGroundStation</li>
35 * <li>communicationLoop</li>
36 * <li>incompatibleSourceAndTargetBand</li>
37 * <li>incompatibleSourceAndTargetGain</li>
38 * <li>uhfAntennaGainNotLow</li>
39 * <li>xAntennaGainNotMedium</li>
40 * <li>kaAntennaGainLow</li>
41 * <li>threeUCubeSatWithNonUhfCrossLink</li>
42 * <li>cubeSatWithKaAntenna</li>
43 * <li>smallSat</li>
44 * <li>spacecraftOfKind</li>
45 * </ul>
46 *
47 * @see IQueryGroup
48 *
49 */
50@SuppressWarnings("all")
51public final class SatelliteQueries extends BaseGeneratedPatternGroup {
52 /**
53 * Access the pattern group.
54 *
55 * @return the singleton instance of the group
56 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
57 *
58 */
59 public static SatelliteQueries instance() {
60 if (INSTANCE == null) {
61 INSTANCE = new SatelliteQueries();
62 }
63 return INSTANCE;
64 }
65
66 private static SatelliteQueries INSTANCE;
67
68 private SatelliteQueries() {
69 querySpecifications.add(CommunicationLinkDoesNotStartAtContainingElement.instance());
70 querySpecifications.add(NotEnoughInterferometryPayloads.instance());
71 querySpecifications.add(NoLinkToGroundStation.instance());
72 querySpecifications.add(NoPotentialLinkToGroundStation.instance());
73 querySpecifications.add(CommunicationLoop.instance());
74 querySpecifications.add(IncompatibleSourceAndTargetBand.instance());
75 querySpecifications.add(IncompatibleSourceAndTargetGain.instance());
76 querySpecifications.add(UhfAntennaGainNotLow.instance());
77 querySpecifications.add(XAntennaGainNotMedium.instance());
78 querySpecifications.add(KaAntennaGainLow.instance());
79 querySpecifications.add(ThreeUCubeSatWithNonUhfCrossLink.instance());
80 querySpecifications.add(CubeSatWithKaAntenna.instance());
81 querySpecifications.add(SmallSat.instance());
82 querySpecifications.add(SpacecraftOfKind.instance());
83 }
84
85 public CommunicationLinkDoesNotStartAtContainingElement getCommunicationLinkDoesNotStartAtContainingElement() {
86 return CommunicationLinkDoesNotStartAtContainingElement.instance();
87 }
88
89 public CommunicationLinkDoesNotStartAtContainingElement.Matcher getCommunicationLinkDoesNotStartAtContainingElement(final ViatraQueryEngine engine) {
90 return CommunicationLinkDoesNotStartAtContainingElement.Matcher.on(engine);
91 }
92
93 public NotEnoughInterferometryPayloads getNotEnoughInterferometryPayloads() {
94 return NotEnoughInterferometryPayloads.instance();
95 }
96
97 public NotEnoughInterferometryPayloads.Matcher getNotEnoughInterferometryPayloads(final ViatraQueryEngine engine) {
98 return NotEnoughInterferometryPayloads.Matcher.on(engine);
99 }
100
101 public NoLinkToGroundStation getNoLinkToGroundStation() {
102 return NoLinkToGroundStation.instance();
103 }
104
105 public NoLinkToGroundStation.Matcher getNoLinkToGroundStation(final ViatraQueryEngine engine) {
106 return NoLinkToGroundStation.Matcher.on(engine);
107 }
108
109 public NoPotentialLinkToGroundStation getNoPotentialLinkToGroundStation() {
110 return NoPotentialLinkToGroundStation.instance();
111 }
112
113 public NoPotentialLinkToGroundStation.Matcher getNoPotentialLinkToGroundStation(final ViatraQueryEngine engine) {
114 return NoPotentialLinkToGroundStation.Matcher.on(engine);
115 }
116
117 public CommunicationLoop getCommunicationLoop() {
118 return CommunicationLoop.instance();
119 }
120
121 public CommunicationLoop.Matcher getCommunicationLoop(final ViatraQueryEngine engine) {
122 return CommunicationLoop.Matcher.on(engine);
123 }
124
125 public IncompatibleSourceAndTargetBand getIncompatibleSourceAndTargetBand() {
126 return IncompatibleSourceAndTargetBand.instance();
127 }
128
129 public IncompatibleSourceAndTargetBand.Matcher getIncompatibleSourceAndTargetBand(final ViatraQueryEngine engine) {
130 return IncompatibleSourceAndTargetBand.Matcher.on(engine);
131 }
132
133 public IncompatibleSourceAndTargetGain getIncompatibleSourceAndTargetGain() {
134 return IncompatibleSourceAndTargetGain.instance();
135 }
136
137 public IncompatibleSourceAndTargetGain.Matcher getIncompatibleSourceAndTargetGain(final ViatraQueryEngine engine) {
138 return IncompatibleSourceAndTargetGain.Matcher.on(engine);
139 }
140
141 public UhfAntennaGainNotLow getUhfAntennaGainNotLow() {
142 return UhfAntennaGainNotLow.instance();
143 }
144
145 public UhfAntennaGainNotLow.Matcher getUhfAntennaGainNotLow(final ViatraQueryEngine engine) {
146 return UhfAntennaGainNotLow.Matcher.on(engine);
147 }
148
149 public XAntennaGainNotMedium getXAntennaGainNotMedium() {
150 return XAntennaGainNotMedium.instance();
151 }
152
153 public XAntennaGainNotMedium.Matcher getXAntennaGainNotMedium(final ViatraQueryEngine engine) {
154 return XAntennaGainNotMedium.Matcher.on(engine);
155 }
156
157 public KaAntennaGainLow getKaAntennaGainLow() {
158 return KaAntennaGainLow.instance();
159 }
160
161 public KaAntennaGainLow.Matcher getKaAntennaGainLow(final ViatraQueryEngine engine) {
162 return KaAntennaGainLow.Matcher.on(engine);
163 }
164
165 public ThreeUCubeSatWithNonUhfCrossLink getThreeUCubeSatWithNonUhfCrossLink() {
166 return ThreeUCubeSatWithNonUhfCrossLink.instance();
167 }
168
169 public ThreeUCubeSatWithNonUhfCrossLink.Matcher getThreeUCubeSatWithNonUhfCrossLink(final ViatraQueryEngine engine) {
170 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.on(engine);
171 }
172
173 public CubeSatWithKaAntenna getCubeSatWithKaAntenna() {
174 return CubeSatWithKaAntenna.instance();
175 }
176
177 public CubeSatWithKaAntenna.Matcher getCubeSatWithKaAntenna(final ViatraQueryEngine engine) {
178 return CubeSatWithKaAntenna.Matcher.on(engine);
179 }
180
181 public SmallSat getSmallSat() {
182 return SmallSat.instance();
183 }
184
185 public SmallSat.Matcher getSmallSat(final ViatraQueryEngine engine) {
186 return SmallSat.Matcher.on(engine);
187 }
188
189 public SpacecraftOfKind getSpacecraftOfKind() {
190 return SpacecraftOfKind.instance();
191 }
192
193 public SpacecraftOfKind.Matcher getSpacecraftOfKind(final ViatraQueryEngine engine) {
194 return SpacecraftOfKind.Matcher.on(engine);
195 }
196}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SmallSat.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SmallSat.java
new file mode 100644
index 00000000..4791740e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SmallSat.java
@@ -0,0 +1,533 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.viatra.query.runtime.api.IPatternMatch;
19import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
24import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
25import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
26import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
27import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
34import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
36import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
37
38/**
39 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
40 *
41 * <p>Original source:
42 * <code><pre>
43 * pattern smallSat(Sat : SmallSat) {
44 * SmallSat(Sat);
45 * }
46 * </pre></code>
47 *
48 * @see Matcher
49 * @see Match
50 *
51 */
52@SuppressWarnings("all")
53public final class SmallSat extends BaseGeneratedEMFQuerySpecification<SmallSat.Matcher> {
54 /**
55 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat pattern,
56 * to be used in conjunction with {@link Matcher}.
57 *
58 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
59 * Each instance is a (possibly partial) substitution of pattern parameters,
60 * usable to represent a match of the pattern in the result of a query,
61 * or to specify the bound (fixed) input parameters when issuing a query.
62 *
63 * @see Matcher
64 *
65 */
66 public static abstract class Match extends BasePatternMatch {
67 private satellite.SmallSat fSat;
68
69 private static List<String> parameterNames = makeImmutableList("Sat");
70
71 private Match(final satellite.SmallSat pSat) {
72 this.fSat = pSat;
73 }
74
75 @Override
76 public Object get(final String parameterName) {
77 if ("Sat".equals(parameterName)) return this.fSat;
78 return null;
79 }
80
81 public satellite.SmallSat getSat() {
82 return this.fSat;
83 }
84
85 @Override
86 public boolean set(final String parameterName, final Object newValue) {
87 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
88 if ("Sat".equals(parameterName) ) {
89 this.fSat = (satellite.SmallSat) newValue;
90 return true;
91 }
92 return false;
93 }
94
95 public void setSat(final satellite.SmallSat pSat) {
96 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
97 this.fSat = pSat;
98 }
99
100 @Override
101 public String patternName() {
102 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat";
103 }
104
105 @Override
106 public List<String> parameterNames() {
107 return SmallSat.Match.parameterNames;
108 }
109
110 @Override
111 public Object[] toArray() {
112 return new Object[]{fSat};
113 }
114
115 @Override
116 public SmallSat.Match toImmutable() {
117 return isMutable() ? newMatch(fSat) : this;
118 }
119
120 @Override
121 public String prettyPrint() {
122 StringBuilder result = new StringBuilder();
123 result.append("\"Sat\"=" + prettyPrintValue(fSat));
124 return result.toString();
125 }
126
127 @Override
128 public int hashCode() {
129 return Objects.hash(fSat);
130 }
131
132 @Override
133 public boolean equals(final Object obj) {
134 if (this == obj)
135 return true;
136 if (obj == null) {
137 return false;
138 }
139 if ((obj instanceof SmallSat.Match)) {
140 SmallSat.Match other = (SmallSat.Match) obj;
141 return Objects.equals(fSat, other.fSat);
142 } else {
143 // this should be infrequent
144 if (!(obj instanceof IPatternMatch)) {
145 return false;
146 }
147 IPatternMatch otherSig = (IPatternMatch) obj;
148 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
149 }
150 }
151
152 @Override
153 public SmallSat specification() {
154 return SmallSat.instance();
155 }
156
157 /**
158 * Returns an empty, mutable match.
159 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
160 *
161 * @return the empty match.
162 *
163 */
164 public static SmallSat.Match newEmptyMatch() {
165 return new Mutable(null);
166 }
167
168 /**
169 * Returns a mutable (partial) match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
173 * @return the new, mutable (partial) match object.
174 *
175 */
176 public static SmallSat.Match newMutableMatch(final satellite.SmallSat pSat) {
177 return new Mutable(pSat);
178 }
179
180 /**
181 * Returns a new (partial) match.
182 * This can be used e.g. to call the matcher with a partial match.
183 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
184 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
185 * @return the (partial) match object.
186 *
187 */
188 public static SmallSat.Match newMatch(final satellite.SmallSat pSat) {
189 return new Immutable(pSat);
190 }
191
192 private static final class Mutable extends SmallSat.Match {
193 Mutable(final satellite.SmallSat pSat) {
194 super(pSat);
195 }
196
197 @Override
198 public boolean isMutable() {
199 return true;
200 }
201 }
202
203 private static final class Immutable extends SmallSat.Match {
204 Immutable(final satellite.SmallSat pSat) {
205 super(pSat);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return false;
211 }
212 }
213 }
214
215 /**
216 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat pattern,
217 * providing pattern-specific query methods.
218 *
219 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
220 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
221 *
222 * <p>Matches of the pattern will be represented as {@link Match}.
223 *
224 * <p>Original source:
225 * <code><pre>
226 * pattern smallSat(Sat : SmallSat) {
227 * SmallSat(Sat);
228 * }
229 * </pre></code>
230 *
231 * @see Match
232 * @see SmallSat
233 *
234 */
235 public static class Matcher extends BaseMatcher<SmallSat.Match> {
236 /**
237 * Initializes the pattern matcher within an existing VIATRA Query engine.
238 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
239 *
240 * @param engine the existing VIATRA Query engine in which this matcher will be created.
241 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
242 *
243 */
244 public static SmallSat.Matcher on(final ViatraQueryEngine engine) {
245 // check if matcher already exists
246 Matcher matcher = engine.getExistingMatcher(querySpecification());
247 if (matcher == null) {
248 matcher = (Matcher)engine.getMatcher(querySpecification());
249 }
250 return matcher;
251 }
252
253 /**
254 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
255 * @return an initialized matcher
256 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
257 *
258 */
259 public static SmallSat.Matcher create() {
260 return new Matcher();
261 }
262
263 private static final int POSITION_SAT = 0;
264
265 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(SmallSat.Matcher.class);
266
267 /**
268 * Initializes the pattern matcher within an existing VIATRA Query engine.
269 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
270 *
271 * @param engine the existing VIATRA Query engine in which this matcher will be created.
272 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
273 *
274 */
275 private Matcher() {
276 super(querySpecification());
277 }
278
279 /**
280 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
281 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
282 * @return matches represented as a Match object.
283 *
284 */
285 public Collection<SmallSat.Match> getAllMatches(final satellite.SmallSat pSat) {
286 return rawStreamAllMatches(new Object[]{pSat}).collect(Collectors.toSet());
287 }
288
289 /**
290 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
291 * </p>
292 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
293 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
294 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
295 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
296 * @return a stream of matches represented as a Match object.
297 *
298 */
299 public Stream<SmallSat.Match> streamAllMatches(final satellite.SmallSat pSat) {
300 return rawStreamAllMatches(new Object[]{pSat});
301 }
302
303 /**
304 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
305 * Neither determinism nor randomness of selection is guaranteed.
306 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
307 * @return a match represented as a Match object, or null if no match is found.
308 *
309 */
310 public Optional<SmallSat.Match> getOneArbitraryMatch(final satellite.SmallSat pSat) {
311 return rawGetOneArbitraryMatch(new Object[]{pSat});
312 }
313
314 /**
315 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
316 * under any possible substitution of the unspecified parameters (if any).
317 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
318 * @return true if the input is a valid (partial) match of the pattern.
319 *
320 */
321 public boolean hasMatch(final satellite.SmallSat pSat) {
322 return rawHasMatch(new Object[]{pSat});
323 }
324
325 /**
326 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
327 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
328 * @return the number of pattern matches found.
329 *
330 */
331 public int countMatches(final satellite.SmallSat pSat) {
332 return rawCountMatches(new Object[]{pSat});
333 }
334
335 /**
336 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
337 * Neither determinism nor randomness of selection is guaranteed.
338 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
339 * @param processor the action that will process the selected match.
340 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
341 *
342 */
343 public boolean forOneArbitraryMatch(final satellite.SmallSat pSat, final Consumer<? super SmallSat.Match> processor) {
344 return rawForOneArbitraryMatch(new Object[]{pSat}, processor);
345 }
346
347 /**
348 * Returns a new (partial) match.
349 * This can be used e.g. to call the matcher with a partial match.
350 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
351 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
352 * @return the (partial) match object.
353 *
354 */
355 public SmallSat.Match newMatch(final satellite.SmallSat pSat) {
356 return SmallSat.Match.newMatch(pSat);
357 }
358
359 /**
360 * Retrieve the set of values that occur in matches for Sat.
361 * @return the Set of all values or empty set if there are no matches
362 *
363 */
364 protected Stream<satellite.SmallSat> rawStreamAllValuesOfSat(final Object[] parameters) {
365 return rawStreamAllValues(POSITION_SAT, parameters).map(satellite.SmallSat.class::cast);
366 }
367
368 /**
369 * Retrieve the set of values that occur in matches for Sat.
370 * @return the Set of all values or empty set if there are no matches
371 *
372 */
373 public Set<satellite.SmallSat> getAllValuesOfSat() {
374 return rawStreamAllValuesOfSat(emptyArray()).collect(Collectors.toSet());
375 }
376
377 /**
378 * Retrieve the set of values that occur in matches for Sat.
379 * @return the Set of all values or empty set if there are no matches
380 *
381 */
382 public Stream<satellite.SmallSat> streamAllValuesOfSat() {
383 return rawStreamAllValuesOfSat(emptyArray());
384 }
385
386 @Override
387 protected SmallSat.Match tupleToMatch(final Tuple t) {
388 try {
389 return SmallSat.Match.newMatch((satellite.SmallSat) t.get(POSITION_SAT));
390 } catch(ClassCastException e) {
391 LOGGER.error("Element(s) in tuple not properly typed!",e);
392 return null;
393 }
394 }
395
396 @Override
397 protected SmallSat.Match arrayToMatch(final Object[] match) {
398 try {
399 return SmallSat.Match.newMatch((satellite.SmallSat) match[POSITION_SAT]);
400 } catch(ClassCastException e) {
401 LOGGER.error("Element(s) in array not properly typed!",e);
402 return null;
403 }
404 }
405
406 @Override
407 protected SmallSat.Match arrayToMatchMutable(final Object[] match) {
408 try {
409 return SmallSat.Match.newMutableMatch((satellite.SmallSat) match[POSITION_SAT]);
410 } catch(ClassCastException e) {
411 LOGGER.error("Element(s) in array not properly typed!",e);
412 return null;
413 }
414 }
415
416 /**
417 * @return the singleton instance of the query specification of this pattern
418 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
419 *
420 */
421 public static IQuerySpecification<SmallSat.Matcher> querySpecification() {
422 return SmallSat.instance();
423 }
424 }
425
426 private SmallSat() {
427 super(GeneratedPQuery.INSTANCE);
428 }
429
430 /**
431 * @return the singleton instance of the query specification
432 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
433 *
434 */
435 public static SmallSat instance() {
436 try{
437 return LazyHolder.INSTANCE;
438 } catch (ExceptionInInitializerError err) {
439 throw processInitializerError(err);
440 }
441 }
442
443 @Override
444 protected SmallSat.Matcher instantiate(final ViatraQueryEngine engine) {
445 return SmallSat.Matcher.on(engine);
446 }
447
448 @Override
449 public SmallSat.Matcher instantiate() {
450 return SmallSat.Matcher.create();
451 }
452
453 @Override
454 public SmallSat.Match newEmptyMatch() {
455 return SmallSat.Match.newEmptyMatch();
456 }
457
458 @Override
459 public SmallSat.Match newMatch(final Object... parameters) {
460 return SmallSat.Match.newMatch((satellite.SmallSat) parameters[0]);
461 }
462
463 /**
464 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat (visibility: PUBLIC, simpleName: SmallSat, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
465 * <b>not</b> at the class load time of the outer class,
466 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat (visibility: PUBLIC, simpleName: SmallSat, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
467 *
468 * <p> This workaround is required e.g. to support recursion.
469 *
470 */
471 private static class LazyHolder {
472 private static final SmallSat INSTANCE = new SmallSat();
473
474 /**
475 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
476 * This initialization order is required to support indirect recursion.
477 *
478 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
479 *
480 */
481 private static final Object STATIC_INITIALIZER = ensureInitialized();
482
483 public static Object ensureInitialized() {
484 INSTANCE.ensureInitializedInternal();
485 return null;
486 }
487 }
488
489 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
490 private static final SmallSat.GeneratedPQuery INSTANCE = new GeneratedPQuery();
491
492 private final PParameter parameter_Sat = new PParameter("Sat", "satellite.SmallSat", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "SmallSat")), PParameterDirection.INOUT);
493
494 private final List<PParameter> parameters = Arrays.asList(parameter_Sat);
495
496 private GeneratedPQuery() {
497 super(PVisibility.PUBLIC);
498 }
499
500 @Override
501 public String getFullyQualifiedName() {
502 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat";
503 }
504
505 @Override
506 public List<String> getParameterNames() {
507 return Arrays.asList("Sat");
508 }
509
510 @Override
511 public List<PParameter> getParameters() {
512 return parameters;
513 }
514
515 @Override
516 public Set<PBody> doGetContainedBodies() {
517 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
518 Set<PBody> bodies = new LinkedHashSet<>();
519 {
520 PBody body = new PBody(this);
521 PVariable var_Sat = body.getOrCreateVariableByName("Sat");
522 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "SmallSat")));
523 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
524 new ExportedParameter(body, var_Sat, parameter_Sat)
525 ));
526 // SmallSat(Sat)
527 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "SmallSat")));
528 bodies.add(body);
529 }
530 return bodies;
531 }
532 }
533}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SpacecraftOfKind.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SpacecraftOfKind.java
new file mode 100644
index 00000000..ed0bd7dc
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SpacecraftOfKind.java
@@ -0,0 +1,754 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.EDataType;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42import satellite.Spacecraft;
43import satellite.SpacecraftKind;
44
45/**
46 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
47 *
48 * <p>Original source:
49 * <code><pre>
50 * {@literal @}QueryBasedFeature(feature = "kind")
51 * pattern spacecraftOfKind(Spacecraft : Spacecraft, Kind : SpacecraftKind) {
52 * CubeSat3U(Spacecraft);
53 * Kind == SpacecraftKind::CubeSat3U;
54 * } or {
55 * CubeSat6U(Spacecraft);
56 * Kind == SpacecraftKind::CubeSat6U;
57 * } or {
58 * SmallSat(Spacecraft);
59 * Kind == SpacecraftKind::SmallSat;
60 * }
61 * </pre></code>
62 *
63 * @see Matcher
64 * @see Match
65 *
66 */
67@SuppressWarnings("all")
68public final class SpacecraftOfKind extends BaseGeneratedEMFQuerySpecification<SpacecraftOfKind.Matcher> {
69 /**
70 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind pattern,
71 * to be used in conjunction with {@link Matcher}.
72 *
73 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
74 * Each instance is a (possibly partial) substitution of pattern parameters,
75 * usable to represent a match of the pattern in the result of a query,
76 * or to specify the bound (fixed) input parameters when issuing a query.
77 *
78 * @see Matcher
79 *
80 */
81 public static abstract class Match extends BasePatternMatch {
82 private Spacecraft fSpacecraft;
83
84 private SpacecraftKind fKind;
85
86 private static List<String> parameterNames = makeImmutableList("Spacecraft", "Kind");
87
88 private Match(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
89 this.fSpacecraft = pSpacecraft;
90 this.fKind = pKind;
91 }
92
93 @Override
94 public Object get(final String parameterName) {
95 if ("Spacecraft".equals(parameterName)) return this.fSpacecraft;
96 if ("Kind".equals(parameterName)) return this.fKind;
97 return null;
98 }
99
100 public Spacecraft getSpacecraft() {
101 return this.fSpacecraft;
102 }
103
104 public SpacecraftKind getKind() {
105 return this.fKind;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("Spacecraft".equals(parameterName) ) {
112 this.fSpacecraft = (Spacecraft) newValue;
113 return true;
114 }
115 if ("Kind".equals(parameterName) ) {
116 this.fKind = (SpacecraftKind) newValue;
117 return true;
118 }
119 return false;
120 }
121
122 public void setSpacecraft(final Spacecraft pSpacecraft) {
123 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
124 this.fSpacecraft = pSpacecraft;
125 }
126
127 public void setKind(final SpacecraftKind pKind) {
128 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
129 this.fKind = pKind;
130 }
131
132 @Override
133 public String patternName() {
134 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind";
135 }
136
137 @Override
138 public List<String> parameterNames() {
139 return SpacecraftOfKind.Match.parameterNames;
140 }
141
142 @Override
143 public Object[] toArray() {
144 return new Object[]{fSpacecraft, fKind};
145 }
146
147 @Override
148 public SpacecraftOfKind.Match toImmutable() {
149 return isMutable() ? newMatch(fSpacecraft, fKind) : this;
150 }
151
152 @Override
153 public String prettyPrint() {
154 StringBuilder result = new StringBuilder();
155 result.append("\"Spacecraft\"=" + prettyPrintValue(fSpacecraft) + ", ");
156 result.append("\"Kind\"=" + prettyPrintValue(fKind));
157 return result.toString();
158 }
159
160 @Override
161 public int hashCode() {
162 return Objects.hash(fSpacecraft, fKind);
163 }
164
165 @Override
166 public boolean equals(final Object obj) {
167 if (this == obj)
168 return true;
169 if (obj == null) {
170 return false;
171 }
172 if ((obj instanceof SpacecraftOfKind.Match)) {
173 SpacecraftOfKind.Match other = (SpacecraftOfKind.Match) obj;
174 return Objects.equals(fSpacecraft, other.fSpacecraft) && Objects.equals(fKind, other.fKind);
175 } else {
176 // this should be infrequent
177 if (!(obj instanceof IPatternMatch)) {
178 return false;
179 }
180 IPatternMatch otherSig = (IPatternMatch) obj;
181 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
182 }
183 }
184
185 @Override
186 public SpacecraftOfKind specification() {
187 return SpacecraftOfKind.instance();
188 }
189
190 /**
191 * Returns an empty, mutable match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @return the empty match.
195 *
196 */
197 public static SpacecraftOfKind.Match newEmptyMatch() {
198 return new Mutable(null, null);
199 }
200
201 /**
202 * Returns a mutable (partial) match.
203 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
204 *
205 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
206 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
207 * @return the new, mutable (partial) match object.
208 *
209 */
210 public static SpacecraftOfKind.Match newMutableMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
211 return new Mutable(pSpacecraft, pKind);
212 }
213
214 /**
215 * Returns a new (partial) match.
216 * This can be used e.g. to call the matcher with a partial match.
217 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
218 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
219 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
220 * @return the (partial) match object.
221 *
222 */
223 public static SpacecraftOfKind.Match newMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
224 return new Immutable(pSpacecraft, pKind);
225 }
226
227 private static final class Mutable extends SpacecraftOfKind.Match {
228 Mutable(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
229 super(pSpacecraft, pKind);
230 }
231
232 @Override
233 public boolean isMutable() {
234 return true;
235 }
236 }
237
238 private static final class Immutable extends SpacecraftOfKind.Match {
239 Immutable(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
240 super(pSpacecraft, pKind);
241 }
242
243 @Override
244 public boolean isMutable() {
245 return false;
246 }
247 }
248 }
249
250 /**
251 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind pattern,
252 * providing pattern-specific query methods.
253 *
254 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
255 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
256 *
257 * <p>Matches of the pattern will be represented as {@link Match}.
258 *
259 * <p>Original source:
260 * <code><pre>
261 * {@literal @}QueryBasedFeature(feature = "kind")
262 * pattern spacecraftOfKind(Spacecraft : Spacecraft, Kind : SpacecraftKind) {
263 * CubeSat3U(Spacecraft);
264 * Kind == SpacecraftKind::CubeSat3U;
265 * } or {
266 * CubeSat6U(Spacecraft);
267 * Kind == SpacecraftKind::CubeSat6U;
268 * } or {
269 * SmallSat(Spacecraft);
270 * Kind == SpacecraftKind::SmallSat;
271 * }
272 * </pre></code>
273 *
274 * @see Match
275 * @see SpacecraftOfKind
276 *
277 */
278 public static class Matcher extends BaseMatcher<SpacecraftOfKind.Match> {
279 /**
280 * Initializes the pattern matcher within an existing VIATRA Query engine.
281 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
282 *
283 * @param engine the existing VIATRA Query engine in which this matcher will be created.
284 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
285 *
286 */
287 public static SpacecraftOfKind.Matcher on(final ViatraQueryEngine engine) {
288 // check if matcher already exists
289 Matcher matcher = engine.getExistingMatcher(querySpecification());
290 if (matcher == null) {
291 matcher = (Matcher)engine.getMatcher(querySpecification());
292 }
293 return matcher;
294 }
295
296 /**
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 * @return an initialized matcher
299 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
300 *
301 */
302 public static SpacecraftOfKind.Matcher create() {
303 return new Matcher();
304 }
305
306 private static final int POSITION_SPACECRAFT = 0;
307
308 private static final int POSITION_KIND = 1;
309
310 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(SpacecraftOfKind.Matcher.class);
311
312 /**
313 * Initializes the pattern matcher within an existing VIATRA Query engine.
314 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
315 *
316 * @param engine the existing VIATRA Query engine in which this matcher will be created.
317 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
318 *
319 */
320 private Matcher() {
321 super(querySpecification());
322 }
323
324 /**
325 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
326 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
327 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
328 * @return matches represented as a Match object.
329 *
330 */
331 public Collection<SpacecraftOfKind.Match> getAllMatches(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
332 return rawStreamAllMatches(new Object[]{pSpacecraft, pKind}).collect(Collectors.toSet());
333 }
334
335 /**
336 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
337 * </p>
338 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
339 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
340 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
341 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
342 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
343 * @return a stream of matches represented as a Match object.
344 *
345 */
346 public Stream<SpacecraftOfKind.Match> streamAllMatches(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
347 return rawStreamAllMatches(new Object[]{pSpacecraft, pKind});
348 }
349
350 /**
351 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
352 * Neither determinism nor randomness of selection is guaranteed.
353 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
354 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
355 * @return a match represented as a Match object, or null if no match is found.
356 *
357 */
358 public Optional<SpacecraftOfKind.Match> getOneArbitraryMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
359 return rawGetOneArbitraryMatch(new Object[]{pSpacecraft, pKind});
360 }
361
362 /**
363 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
364 * under any possible substitution of the unspecified parameters (if any).
365 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
366 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
367 * @return true if the input is a valid (partial) match of the pattern.
368 *
369 */
370 public boolean hasMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
371 return rawHasMatch(new Object[]{pSpacecraft, pKind});
372 }
373
374 /**
375 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
376 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
377 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
378 * @return the number of pattern matches found.
379 *
380 */
381 public int countMatches(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
382 return rawCountMatches(new Object[]{pSpacecraft, pKind});
383 }
384
385 /**
386 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
387 * Neither determinism nor randomness of selection is guaranteed.
388 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
389 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
390 * @param processor the action that will process the selected match.
391 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
392 *
393 */
394 public boolean forOneArbitraryMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind, final Consumer<? super SpacecraftOfKind.Match> processor) {
395 return rawForOneArbitraryMatch(new Object[]{pSpacecraft, pKind}, processor);
396 }
397
398 /**
399 * Returns a new (partial) match.
400 * This can be used e.g. to call the matcher with a partial match.
401 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
402 * @param pSpacecraft the fixed value of pattern parameter Spacecraft, or null if not bound.
403 * @param pKind the fixed value of pattern parameter Kind, or null if not bound.
404 * @return the (partial) match object.
405 *
406 */
407 public SpacecraftOfKind.Match newMatch(final Spacecraft pSpacecraft, final SpacecraftKind pKind) {
408 return SpacecraftOfKind.Match.newMatch(pSpacecraft, pKind);
409 }
410
411 /**
412 * Retrieve the set of values that occur in matches for Spacecraft.
413 * @return the Set of all values or empty set if there are no matches
414 *
415 */
416 protected Stream<Spacecraft> rawStreamAllValuesOfSpacecraft(final Object[] parameters) {
417 return rawStreamAllValues(POSITION_SPACECRAFT, parameters).map(Spacecraft.class::cast);
418 }
419
420 /**
421 * Retrieve the set of values that occur in matches for Spacecraft.
422 * @return the Set of all values or empty set if there are no matches
423 *
424 */
425 public Set<Spacecraft> getAllValuesOfSpacecraft() {
426 return rawStreamAllValuesOfSpacecraft(emptyArray()).collect(Collectors.toSet());
427 }
428
429 /**
430 * Retrieve the set of values that occur in matches for Spacecraft.
431 * @return the Set of all values or empty set if there are no matches
432 *
433 */
434 public Stream<Spacecraft> streamAllValuesOfSpacecraft() {
435 return rawStreamAllValuesOfSpacecraft(emptyArray());
436 }
437
438 /**
439 * Retrieve the set of values that occur in matches for Spacecraft.
440 * </p>
441 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
442 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
443 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
444 *
445 * @return the Stream of all values or empty set if there are no matches
446 *
447 */
448 public Stream<Spacecraft> streamAllValuesOfSpacecraft(final SpacecraftOfKind.Match partialMatch) {
449 return rawStreamAllValuesOfSpacecraft(partialMatch.toArray());
450 }
451
452 /**
453 * Retrieve the set of values that occur in matches for Spacecraft.
454 * </p>
455 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
456 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
457 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
458 *
459 * @return the Stream of all values or empty set if there are no matches
460 *
461 */
462 public Stream<Spacecraft> streamAllValuesOfSpacecraft(final SpacecraftKind pKind) {
463 return rawStreamAllValuesOfSpacecraft(new Object[]{null, pKind});
464 }
465
466 /**
467 * Retrieve the set of values that occur in matches for Spacecraft.
468 * @return the Set of all values or empty set if there are no matches
469 *
470 */
471 public Set<Spacecraft> getAllValuesOfSpacecraft(final SpacecraftOfKind.Match partialMatch) {
472 return rawStreamAllValuesOfSpacecraft(partialMatch.toArray()).collect(Collectors.toSet());
473 }
474
475 /**
476 * Retrieve the set of values that occur in matches for Spacecraft.
477 * @return the Set of all values or empty set if there are no matches
478 *
479 */
480 public Set<Spacecraft> getAllValuesOfSpacecraft(final SpacecraftKind pKind) {
481 return rawStreamAllValuesOfSpacecraft(new Object[]{null, pKind}).collect(Collectors.toSet());
482 }
483
484 /**
485 * Retrieve the set of values that occur in matches for Kind.
486 * @return the Set of all values or empty set if there are no matches
487 *
488 */
489 protected Stream<SpacecraftKind> rawStreamAllValuesOfKind(final Object[] parameters) {
490 return rawStreamAllValues(POSITION_KIND, parameters).map(SpacecraftKind.class::cast);
491 }
492
493 /**
494 * Retrieve the set of values that occur in matches for Kind.
495 * @return the Set of all values or empty set if there are no matches
496 *
497 */
498 public Set<SpacecraftKind> getAllValuesOfKind() {
499 return rawStreamAllValuesOfKind(emptyArray()).collect(Collectors.toSet());
500 }
501
502 /**
503 * Retrieve the set of values that occur in matches for Kind.
504 * @return the Set of all values or empty set if there are no matches
505 *
506 */
507 public Stream<SpacecraftKind> streamAllValuesOfKind() {
508 return rawStreamAllValuesOfKind(emptyArray());
509 }
510
511 /**
512 * Retrieve the set of values that occur in matches for Kind.
513 * </p>
514 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
515 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
516 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
517 *
518 * @return the Stream of all values or empty set if there are no matches
519 *
520 */
521 public Stream<SpacecraftKind> streamAllValuesOfKind(final SpacecraftOfKind.Match partialMatch) {
522 return rawStreamAllValuesOfKind(partialMatch.toArray());
523 }
524
525 /**
526 * Retrieve the set of values that occur in matches for Kind.
527 * </p>
528 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
529 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
530 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
531 *
532 * @return the Stream of all values or empty set if there are no matches
533 *
534 */
535 public Stream<SpacecraftKind> streamAllValuesOfKind(final Spacecraft pSpacecraft) {
536 return rawStreamAllValuesOfKind(new Object[]{pSpacecraft, null});
537 }
538
539 /**
540 * Retrieve the set of values that occur in matches for Kind.
541 * @return the Set of all values or empty set if there are no matches
542 *
543 */
544 public Set<SpacecraftKind> getAllValuesOfKind(final SpacecraftOfKind.Match partialMatch) {
545 return rawStreamAllValuesOfKind(partialMatch.toArray()).collect(Collectors.toSet());
546 }
547
548 /**
549 * Retrieve the set of values that occur in matches for Kind.
550 * @return the Set of all values or empty set if there are no matches
551 *
552 */
553 public Set<SpacecraftKind> getAllValuesOfKind(final Spacecraft pSpacecraft) {
554 return rawStreamAllValuesOfKind(new Object[]{pSpacecraft, null}).collect(Collectors.toSet());
555 }
556
557 @Override
558 protected SpacecraftOfKind.Match tupleToMatch(final Tuple t) {
559 try {
560 return SpacecraftOfKind.Match.newMatch((Spacecraft) t.get(POSITION_SPACECRAFT), (SpacecraftKind) t.get(POSITION_KIND));
561 } catch(ClassCastException e) {
562 LOGGER.error("Element(s) in tuple not properly typed!",e);
563 return null;
564 }
565 }
566
567 @Override
568 protected SpacecraftOfKind.Match arrayToMatch(final Object[] match) {
569 try {
570 return SpacecraftOfKind.Match.newMatch((Spacecraft) match[POSITION_SPACECRAFT], (SpacecraftKind) match[POSITION_KIND]);
571 } catch(ClassCastException e) {
572 LOGGER.error("Element(s) in array not properly typed!",e);
573 return null;
574 }
575 }
576
577 @Override
578 protected SpacecraftOfKind.Match arrayToMatchMutable(final Object[] match) {
579 try {
580 return SpacecraftOfKind.Match.newMutableMatch((Spacecraft) match[POSITION_SPACECRAFT], (SpacecraftKind) match[POSITION_KIND]);
581 } catch(ClassCastException e) {
582 LOGGER.error("Element(s) in array not properly typed!",e);
583 return null;
584 }
585 }
586
587 /**
588 * @return the singleton instance of the query specification of this pattern
589 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
590 *
591 */
592 public static IQuerySpecification<SpacecraftOfKind.Matcher> querySpecification() {
593 return SpacecraftOfKind.instance();
594 }
595 }
596
597 private SpacecraftOfKind() {
598 super(GeneratedPQuery.INSTANCE);
599 }
600
601 /**
602 * @return the singleton instance of the query specification
603 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
604 *
605 */
606 public static SpacecraftOfKind instance() {
607 try{
608 return LazyHolder.INSTANCE;
609 } catch (ExceptionInInitializerError err) {
610 throw processInitializerError(err);
611 }
612 }
613
614 @Override
615 protected SpacecraftOfKind.Matcher instantiate(final ViatraQueryEngine engine) {
616 return SpacecraftOfKind.Matcher.on(engine);
617 }
618
619 @Override
620 public SpacecraftOfKind.Matcher instantiate() {
621 return SpacecraftOfKind.Matcher.create();
622 }
623
624 @Override
625 public SpacecraftOfKind.Match newEmptyMatch() {
626 return SpacecraftOfKind.Match.newEmptyMatch();
627 }
628
629 @Override
630 public SpacecraftOfKind.Match newMatch(final Object... parameters) {
631 return SpacecraftOfKind.Match.newMatch((satellite.Spacecraft) parameters[0], (satellite.SpacecraftKind) parameters[1]);
632 }
633
634 /**
635 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind (visibility: PUBLIC, simpleName: SpacecraftOfKind, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
636 * <b>not</b> at the class load time of the outer class,
637 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind (visibility: PUBLIC, simpleName: SpacecraftOfKind, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
638 *
639 * <p> This workaround is required e.g. to support recursion.
640 *
641 */
642 private static class LazyHolder {
643 private static final SpacecraftOfKind INSTANCE = new SpacecraftOfKind();
644
645 /**
646 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
647 * This initialization order is required to support indirect recursion.
648 *
649 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
650 *
651 */
652 private static final Object STATIC_INITIALIZER = ensureInitialized();
653
654 public static Object ensureInitialized() {
655 INSTANCE.ensureInitializedInternal();
656 return null;
657 }
658 }
659
660 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
661 private static final SpacecraftOfKind.GeneratedPQuery INSTANCE = new GeneratedPQuery();
662
663 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
664
665 private final PParameter parameter_Kind = new PParameter("Kind", "satellite.SpacecraftKind", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "SpacecraftKind")), PParameterDirection.INOUT);
666
667 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Kind);
668
669 private GeneratedPQuery() {
670 super(PVisibility.PUBLIC);
671 }
672
673 @Override
674 public String getFullyQualifiedName() {
675 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftOfKind";
676 }
677
678 @Override
679 public List<String> getParameterNames() {
680 return Arrays.asList("Spacecraft","Kind");
681 }
682
683 @Override
684 public List<PParameter> getParameters() {
685 return parameters;
686 }
687
688 @Override
689 public Set<PBody> doGetContainedBodies() {
690 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
691 Set<PBody> bodies = new LinkedHashSet<>();
692 {
693 PBody body = new PBody(this);
694 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
695 PVariable var_Kind = body.getOrCreateVariableByName("Kind");
696 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
697 new TypeConstraint(body, Tuples.flatTupleOf(var_Kind), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
698 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
699 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
700 new ExportedParameter(body, var_Kind, parameter_Kind)
701 ));
702 // CubeSat3U(Spacecraft)
703 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
704 // Kind == SpacecraftKind::CubeSat3U
705 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
706 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "CubeSat3U").getInstance());
707 new Equality(body, var_Kind, var__virtual_0_);
708 bodies.add(body);
709 }
710 {
711 PBody body = new PBody(this);
712 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
713 PVariable var_Kind = body.getOrCreateVariableByName("Kind");
714 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
715 new TypeConstraint(body, Tuples.flatTupleOf(var_Kind), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
716 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
717 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
718 new ExportedParameter(body, var_Kind, parameter_Kind)
719 ));
720 // CubeSat6U(Spacecraft)
721 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat6U")));
722 // Kind == SpacecraftKind::CubeSat6U
723 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
724 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "CubeSat6U").getInstance());
725 new Equality(body, var_Kind, var__virtual_0_);
726 bodies.add(body);
727 }
728 {
729 PBody body = new PBody(this);
730 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
731 PVariable var_Kind = body.getOrCreateVariableByName("Kind");
732 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
733 new TypeConstraint(body, Tuples.flatTupleOf(var_Kind), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
734 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
735 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
736 new ExportedParameter(body, var_Kind, parameter_Kind)
737 ));
738 // SmallSat(Spacecraft)
739 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "SmallSat")));
740 // Kind == SpacecraftKind::SmallSat
741 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
742 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "SmallSat").getInstance());
743 new Equality(body, var_Kind, var__virtual_0_);
744 bodies.add(body);
745 }
746 {
747 PAnnotation annotation = new PAnnotation("QueryBasedFeature");
748 annotation.addAttribute("feature", "kind");
749 addAnnotation(annotation);
750 }
751 return bodies;
752 }
753 }
754}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/ThreeUCubeSatWithNonUhfCrossLink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/ThreeUCubeSatWithNonUhfCrossLink.java
new file mode 100644
index 00000000..51b224b1
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/ThreeUCubeSatWithNonUhfCrossLink.java
@@ -0,0 +1,600 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork;
8import java.util.Arrays;
9import java.util.Collection;
10import java.util.LinkedHashSet;
11import java.util.List;
12import java.util.Objects;
13import java.util.Optional;
14import java.util.Set;
15import java.util.function.Consumer;
16import java.util.stream.Collectors;
17import java.util.stream.Stream;
18import org.apache.log4j.Logger;
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
29import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
43import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
44import satellite.CubeSat3U;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * // 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
52 * // but cross-link using UHF
53 *
54 * {@literal @}Constraint(severity = "error", key = {Sat},
55 * message = "3U CubeSats can only cross-link using UHF.")
56 * pattern threeUCubeSatWithNonUhfCrossLink(Sat : CubeSat3U) {
57 * CommunicatingElement.commSubsystem(Sat, SourceComm);
58 * neg find commSubsystemBandUhf(SourceComm);
59 * DirectedCommunicationLink.source(Link, SourceComm);
60 * DirectedCommunicationLink.target(Link, TargetComm);
61 * CommunicatingElement.commSubsystem(Target, TargetComm);
62 * neg find groundStationNetwork(Target);
63 * }
64 * </pre></code>
65 *
66 * @see Matcher
67 * @see Match
68 *
69 */
70@SuppressWarnings("all")
71public final class ThreeUCubeSatWithNonUhfCrossLink extends BaseGeneratedEMFQuerySpecification<ThreeUCubeSatWithNonUhfCrossLink.Matcher> {
72 /**
73 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink pattern,
74 * to be used in conjunction with {@link Matcher}.
75 *
76 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
77 * Each instance is a (possibly partial) substitution of pattern parameters,
78 * usable to represent a match of the pattern in the result of a query,
79 * or to specify the bound (fixed) input parameters when issuing a query.
80 *
81 * @see Matcher
82 *
83 */
84 public static abstract class Match extends BasePatternMatch {
85 private CubeSat3U fSat;
86
87 private static List<String> parameterNames = makeImmutableList("Sat");
88
89 private Match(final CubeSat3U pSat) {
90 this.fSat = pSat;
91 }
92
93 @Override
94 public Object get(final String parameterName) {
95 if ("Sat".equals(parameterName)) return this.fSat;
96 return null;
97 }
98
99 public CubeSat3U getSat() {
100 return this.fSat;
101 }
102
103 @Override
104 public boolean set(final String parameterName, final Object newValue) {
105 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
106 if ("Sat".equals(parameterName) ) {
107 this.fSat = (CubeSat3U) newValue;
108 return true;
109 }
110 return false;
111 }
112
113 public void setSat(final CubeSat3U pSat) {
114 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
115 this.fSat = pSat;
116 }
117
118 @Override
119 public String patternName() {
120 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink";
121 }
122
123 @Override
124 public List<String> parameterNames() {
125 return ThreeUCubeSatWithNonUhfCrossLink.Match.parameterNames;
126 }
127
128 @Override
129 public Object[] toArray() {
130 return new Object[]{fSat};
131 }
132
133 @Override
134 public ThreeUCubeSatWithNonUhfCrossLink.Match toImmutable() {
135 return isMutable() ? newMatch(fSat) : this;
136 }
137
138 @Override
139 public String prettyPrint() {
140 StringBuilder result = new StringBuilder();
141 result.append("\"Sat\"=" + prettyPrintValue(fSat));
142 return result.toString();
143 }
144
145 @Override
146 public int hashCode() {
147 return Objects.hash(fSat);
148 }
149
150 @Override
151 public boolean equals(final Object obj) {
152 if (this == obj)
153 return true;
154 if (obj == null) {
155 return false;
156 }
157 if ((obj instanceof ThreeUCubeSatWithNonUhfCrossLink.Match)) {
158 ThreeUCubeSatWithNonUhfCrossLink.Match other = (ThreeUCubeSatWithNonUhfCrossLink.Match) obj;
159 return Objects.equals(fSat, other.fSat);
160 } else {
161 // this should be infrequent
162 if (!(obj instanceof IPatternMatch)) {
163 return false;
164 }
165 IPatternMatch otherSig = (IPatternMatch) obj;
166 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
167 }
168 }
169
170 @Override
171 public ThreeUCubeSatWithNonUhfCrossLink specification() {
172 return ThreeUCubeSatWithNonUhfCrossLink.instance();
173 }
174
175 /**
176 * Returns an empty, mutable match.
177 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
178 *
179 * @return the empty match.
180 *
181 */
182 public static ThreeUCubeSatWithNonUhfCrossLink.Match newEmptyMatch() {
183 return new Mutable(null);
184 }
185
186 /**
187 * Returns a mutable (partial) match.
188 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
189 *
190 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
191 * @return the new, mutable (partial) match object.
192 *
193 */
194 public static ThreeUCubeSatWithNonUhfCrossLink.Match newMutableMatch(final CubeSat3U pSat) {
195 return new Mutable(pSat);
196 }
197
198 /**
199 * Returns a new (partial) match.
200 * This can be used e.g. to call the matcher with a partial match.
201 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
202 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
203 * @return the (partial) match object.
204 *
205 */
206 public static ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final CubeSat3U pSat) {
207 return new Immutable(pSat);
208 }
209
210 private static final class Mutable extends ThreeUCubeSatWithNonUhfCrossLink.Match {
211 Mutable(final CubeSat3U pSat) {
212 super(pSat);
213 }
214
215 @Override
216 public boolean isMutable() {
217 return true;
218 }
219 }
220
221 private static final class Immutable extends ThreeUCubeSatWithNonUhfCrossLink.Match {
222 Immutable(final CubeSat3U pSat) {
223 super(pSat);
224 }
225
226 @Override
227 public boolean isMutable() {
228 return false;
229 }
230 }
231 }
232
233 /**
234 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink pattern,
235 * providing pattern-specific query methods.
236 *
237 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
238 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
239 *
240 * <p>Matches of the pattern will be represented as {@link Match}.
241 *
242 * <p>Original source:
243 * <code><pre>
244 * // 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
245 * // but cross-link using UHF
246 *
247 * {@literal @}Constraint(severity = "error", key = {Sat},
248 * message = "3U CubeSats can only cross-link using UHF.")
249 * pattern threeUCubeSatWithNonUhfCrossLink(Sat : CubeSat3U) {
250 * CommunicatingElement.commSubsystem(Sat, SourceComm);
251 * neg find commSubsystemBandUhf(SourceComm);
252 * DirectedCommunicationLink.source(Link, SourceComm);
253 * DirectedCommunicationLink.target(Link, TargetComm);
254 * CommunicatingElement.commSubsystem(Target, TargetComm);
255 * neg find groundStationNetwork(Target);
256 * }
257 * </pre></code>
258 *
259 * @see Match
260 * @see ThreeUCubeSatWithNonUhfCrossLink
261 *
262 */
263 public static class Matcher extends BaseMatcher<ThreeUCubeSatWithNonUhfCrossLink.Match> {
264 /**
265 * Initializes the pattern matcher within an existing VIATRA Query engine.
266 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
267 *
268 * @param engine the existing VIATRA Query engine in which this matcher will be created.
269 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
270 *
271 */
272 public static ThreeUCubeSatWithNonUhfCrossLink.Matcher on(final ViatraQueryEngine engine) {
273 // check if matcher already exists
274 Matcher matcher = engine.getExistingMatcher(querySpecification());
275 if (matcher == null) {
276 matcher = (Matcher)engine.getMatcher(querySpecification());
277 }
278 return matcher;
279 }
280
281 /**
282 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
283 * @return an initialized matcher
284 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
285 *
286 */
287 public static ThreeUCubeSatWithNonUhfCrossLink.Matcher create() {
288 return new Matcher();
289 }
290
291 private static final int POSITION_SAT = 0;
292
293 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(ThreeUCubeSatWithNonUhfCrossLink.Matcher.class);
294
295 /**
296 * Initializes the pattern matcher within an existing VIATRA Query engine.
297 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
298 *
299 * @param engine the existing VIATRA Query engine in which this matcher will be created.
300 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
301 *
302 */
303 private Matcher() {
304 super(querySpecification());
305 }
306
307 /**
308 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
309 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
310 * @return matches represented as a Match object.
311 *
312 */
313 public Collection<ThreeUCubeSatWithNonUhfCrossLink.Match> getAllMatches(final CubeSat3U pSat) {
314 return rawStreamAllMatches(new Object[]{pSat}).collect(Collectors.toSet());
315 }
316
317 /**
318 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
319 * </p>
320 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
321 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
322 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
323 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
324 * @return a stream of matches represented as a Match object.
325 *
326 */
327 public Stream<ThreeUCubeSatWithNonUhfCrossLink.Match> streamAllMatches(final CubeSat3U pSat) {
328 return rawStreamAllMatches(new Object[]{pSat});
329 }
330
331 /**
332 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
333 * Neither determinism nor randomness of selection is guaranteed.
334 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
335 * @return a match represented as a Match object, or null if no match is found.
336 *
337 */
338 public Optional<ThreeUCubeSatWithNonUhfCrossLink.Match> getOneArbitraryMatch(final CubeSat3U pSat) {
339 return rawGetOneArbitraryMatch(new Object[]{pSat});
340 }
341
342 /**
343 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
344 * under any possible substitution of the unspecified parameters (if any).
345 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
346 * @return true if the input is a valid (partial) match of the pattern.
347 *
348 */
349 public boolean hasMatch(final CubeSat3U pSat) {
350 return rawHasMatch(new Object[]{pSat});
351 }
352
353 /**
354 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
355 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
356 * @return the number of pattern matches found.
357 *
358 */
359 public int countMatches(final CubeSat3U pSat) {
360 return rawCountMatches(new Object[]{pSat});
361 }
362
363 /**
364 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
365 * Neither determinism nor randomness of selection is guaranteed.
366 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
367 * @param processor the action that will process the selected match.
368 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
369 *
370 */
371 public boolean forOneArbitraryMatch(final CubeSat3U pSat, final Consumer<? super ThreeUCubeSatWithNonUhfCrossLink.Match> processor) {
372 return rawForOneArbitraryMatch(new Object[]{pSat}, processor);
373 }
374
375 /**
376 * Returns a new (partial) match.
377 * This can be used e.g. to call the matcher with a partial match.
378 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
379 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
380 * @return the (partial) match object.
381 *
382 */
383 public ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final CubeSat3U pSat) {
384 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch(pSat);
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for Sat.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 protected Stream<CubeSat3U> rawStreamAllValuesOfSat(final Object[] parameters) {
393 return rawStreamAllValues(POSITION_SAT, parameters).map(CubeSat3U.class::cast);
394 }
395
396 /**
397 * Retrieve the set of values that occur in matches for Sat.
398 * @return the Set of all values or empty set if there are no matches
399 *
400 */
401 public Set<CubeSat3U> getAllValuesOfSat() {
402 return rawStreamAllValuesOfSat(emptyArray()).collect(Collectors.toSet());
403 }
404
405 /**
406 * Retrieve the set of values that occur in matches for Sat.
407 * @return the Set of all values or empty set if there are no matches
408 *
409 */
410 public Stream<CubeSat3U> streamAllValuesOfSat() {
411 return rawStreamAllValuesOfSat(emptyArray());
412 }
413
414 @Override
415 protected ThreeUCubeSatWithNonUhfCrossLink.Match tupleToMatch(final Tuple t) {
416 try {
417 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((CubeSat3U) t.get(POSITION_SAT));
418 } catch(ClassCastException e) {
419 LOGGER.error("Element(s) in tuple not properly typed!",e);
420 return null;
421 }
422 }
423
424 @Override
425 protected ThreeUCubeSatWithNonUhfCrossLink.Match arrayToMatch(final Object[] match) {
426 try {
427 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((CubeSat3U) match[POSITION_SAT]);
428 } catch(ClassCastException e) {
429 LOGGER.error("Element(s) in array not properly typed!",e);
430 return null;
431 }
432 }
433
434 @Override
435 protected ThreeUCubeSatWithNonUhfCrossLink.Match arrayToMatchMutable(final Object[] match) {
436 try {
437 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMutableMatch((CubeSat3U) match[POSITION_SAT]);
438 } catch(ClassCastException e) {
439 LOGGER.error("Element(s) in array not properly typed!",e);
440 return null;
441 }
442 }
443
444 /**
445 * @return the singleton instance of the query specification of this pattern
446 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
447 *
448 */
449 public static IQuerySpecification<ThreeUCubeSatWithNonUhfCrossLink.Matcher> querySpecification() {
450 return ThreeUCubeSatWithNonUhfCrossLink.instance();
451 }
452 }
453
454 private ThreeUCubeSatWithNonUhfCrossLink() {
455 super(GeneratedPQuery.INSTANCE);
456 }
457
458 /**
459 * @return the singleton instance of the query specification
460 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
461 *
462 */
463 public static ThreeUCubeSatWithNonUhfCrossLink instance() {
464 try{
465 return LazyHolder.INSTANCE;
466 } catch (ExceptionInInitializerError err) {
467 throw processInitializerError(err);
468 }
469 }
470
471 @Override
472 protected ThreeUCubeSatWithNonUhfCrossLink.Matcher instantiate(final ViatraQueryEngine engine) {
473 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.on(engine);
474 }
475
476 @Override
477 public ThreeUCubeSatWithNonUhfCrossLink.Matcher instantiate() {
478 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.create();
479 }
480
481 @Override
482 public ThreeUCubeSatWithNonUhfCrossLink.Match newEmptyMatch() {
483 return ThreeUCubeSatWithNonUhfCrossLink.Match.newEmptyMatch();
484 }
485
486 @Override
487 public ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final Object... parameters) {
488 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((satellite.CubeSat3U) parameters[0]);
489 }
490
491 /**
492 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink (visibility: PUBLIC, simpleName: ThreeUCubeSatWithNonUhfCrossLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
493 * <b>not</b> at the class load time of the outer class,
494 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink (visibility: PUBLIC, simpleName: ThreeUCubeSatWithNonUhfCrossLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
495 *
496 * <p> This workaround is required e.g. to support recursion.
497 *
498 */
499 private static class LazyHolder {
500 private static final ThreeUCubeSatWithNonUhfCrossLink INSTANCE = new ThreeUCubeSatWithNonUhfCrossLink();
501
502 /**
503 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
504 * This initialization order is required to support indirect recursion.
505 *
506 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
507 *
508 */
509 private static final Object STATIC_INITIALIZER = ensureInitialized();
510
511 public static Object ensureInitialized() {
512 INSTANCE.ensureInitializedInternal();
513 return null;
514 }
515 }
516
517 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
518 private static final ThreeUCubeSatWithNonUhfCrossLink.GeneratedPQuery INSTANCE = new GeneratedPQuery();
519
520 private final PParameter parameter_Sat = new PParameter("Sat", "satellite.CubeSat3U", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CubeSat3U")), PParameterDirection.INOUT);
521
522 private final List<PParameter> parameters = Arrays.asList(parameter_Sat);
523
524 private GeneratedPQuery() {
525 super(PVisibility.PUBLIC);
526 }
527
528 @Override
529 public String getFullyQualifiedName() {
530 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink";
531 }
532
533 @Override
534 public List<String> getParameterNames() {
535 return Arrays.asList("Sat");
536 }
537
538 @Override
539 public List<PParameter> getParameters() {
540 return parameters;
541 }
542
543 @Override
544 public Set<PBody> doGetContainedBodies() {
545 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
546 Set<PBody> bodies = new LinkedHashSet<>();
547 {
548 PBody body = new PBody(this);
549 PVariable var_Sat = body.getOrCreateVariableByName("Sat");
550 PVariable var_SourceComm = body.getOrCreateVariableByName("SourceComm");
551 PVariable var_Link = body.getOrCreateVariableByName("Link");
552 PVariable var_TargetComm = body.getOrCreateVariableByName("TargetComm");
553 PVariable var_Target = body.getOrCreateVariableByName("Target");
554 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
555 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
556 new ExportedParameter(body, var_Sat, parameter_Sat)
557 ));
558 // CommunicatingElement.commSubsystem(Sat, SourceComm)
559 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
560 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
561 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
562 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
563 new Equality(body, var__virtual_0_, var_SourceComm);
564 // neg find commSubsystemBandUhf(SourceComm)
565 new NegativePatternCall(body, Tuples.flatTupleOf(var_SourceComm), CommSubsystemBandUhf.instance().getInternalQueryRepresentation());
566 // DirectedCommunicationLink.source(Link, SourceComm)
567 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
568 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
569 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
570 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
571 new Equality(body, var__virtual_1_, var_SourceComm);
572 // DirectedCommunicationLink.target(Link, TargetComm)
573 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
574 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
575 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
576 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
577 new Equality(body, var__virtual_2_, var_TargetComm);
578 // CommunicatingElement.commSubsystem(Target, TargetComm)
579 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
580 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
581 new TypeConstraint(body, Tuples.flatTupleOf(var_Target, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
582 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
583 new Equality(body, var__virtual_3_, var_TargetComm);
584 // neg find groundStationNetwork(Target)
585 new NegativePatternCall(body, Tuples.flatTupleOf(var_Target), GroundStationNetwork.instance().getInternalQueryRepresentation());
586 bodies.add(body);
587 }
588 {
589 PAnnotation annotation = new PAnnotation("Constraint");
590 annotation.addAttribute("severity", "error");
591 annotation.addAttribute("key", Arrays.asList(new Object[] {
592 new ParameterReference("Sat")
593 }));
594 annotation.addAttribute("message", "3U CubeSats can only cross-link using UHF.");
595 addAnnotation(annotation);
596 }
597 return bodies;
598 }
599 }
600}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/UhfAntennaGainNotLow.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/UhfAntennaGainNotLow.java
new file mode 100644
index 00000000..99e472ea
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/UhfAntennaGainNotLow.java
@@ -0,0 +1,576 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46import satellite.CommSubsystem;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * // UHF-band transmitters may only be combined with a low gain antenna
54 *
55 * {@literal @}Constraint(severity = "error", key = {Comm},
56 * message = "UHF transceiver must be combined with a low gain antenna.")
57 * pattern uhfAntennaGainNotLow(Comm : CommSubsystem) {
58 * CommSubsystem.band(Comm, TransceiverBand::UHF);
59 * // VIATRA will fail to infer a type constraint for the virtual variable introduced
60 * // when an enum literal appears in a negative pattern call, so we use a helper pattern
61 * // instead of neg find commSubsystemGain(Comm, AntennaGain::LOW);
62 * neg find commSubsystemGainLow(Comm);
63 * }
64 * </pre></code>
65 *
66 * @see Matcher
67 * @see Match
68 *
69 */
70@SuppressWarnings("all")
71public final class UhfAntennaGainNotLow extends BaseGeneratedEMFQuerySpecification<UhfAntennaGainNotLow.Matcher> {
72 /**
73 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow pattern,
74 * to be used in conjunction with {@link Matcher}.
75 *
76 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
77 * Each instance is a (possibly partial) substitution of pattern parameters,
78 * usable to represent a match of the pattern in the result of a query,
79 * or to specify the bound (fixed) input parameters when issuing a query.
80 *
81 * @see Matcher
82 *
83 */
84 public static abstract class Match extends BasePatternMatch {
85 private CommSubsystem fComm;
86
87 private static List<String> parameterNames = makeImmutableList("Comm");
88
89 private Match(final CommSubsystem pComm) {
90 this.fComm = pComm;
91 }
92
93 @Override
94 public Object get(final String parameterName) {
95 if ("Comm".equals(parameterName)) return this.fComm;
96 return null;
97 }
98
99 public CommSubsystem getComm() {
100 return this.fComm;
101 }
102
103 @Override
104 public boolean set(final String parameterName, final Object newValue) {
105 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
106 if ("Comm".equals(parameterName) ) {
107 this.fComm = (CommSubsystem) newValue;
108 return true;
109 }
110 return false;
111 }
112
113 public void setComm(final CommSubsystem pComm) {
114 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
115 this.fComm = pComm;
116 }
117
118 @Override
119 public String patternName() {
120 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow";
121 }
122
123 @Override
124 public List<String> parameterNames() {
125 return UhfAntennaGainNotLow.Match.parameterNames;
126 }
127
128 @Override
129 public Object[] toArray() {
130 return new Object[]{fComm};
131 }
132
133 @Override
134 public UhfAntennaGainNotLow.Match toImmutable() {
135 return isMutable() ? newMatch(fComm) : this;
136 }
137
138 @Override
139 public String prettyPrint() {
140 StringBuilder result = new StringBuilder();
141 result.append("\"Comm\"=" + prettyPrintValue(fComm));
142 return result.toString();
143 }
144
145 @Override
146 public int hashCode() {
147 return Objects.hash(fComm);
148 }
149
150 @Override
151 public boolean equals(final Object obj) {
152 if (this == obj)
153 return true;
154 if (obj == null) {
155 return false;
156 }
157 if ((obj instanceof UhfAntennaGainNotLow.Match)) {
158 UhfAntennaGainNotLow.Match other = (UhfAntennaGainNotLow.Match) obj;
159 return Objects.equals(fComm, other.fComm);
160 } else {
161 // this should be infrequent
162 if (!(obj instanceof IPatternMatch)) {
163 return false;
164 }
165 IPatternMatch otherSig = (IPatternMatch) obj;
166 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
167 }
168 }
169
170 @Override
171 public UhfAntennaGainNotLow specification() {
172 return UhfAntennaGainNotLow.instance();
173 }
174
175 /**
176 * Returns an empty, mutable match.
177 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
178 *
179 * @return the empty match.
180 *
181 */
182 public static UhfAntennaGainNotLow.Match newEmptyMatch() {
183 return new Mutable(null);
184 }
185
186 /**
187 * Returns a mutable (partial) match.
188 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
189 *
190 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
191 * @return the new, mutable (partial) match object.
192 *
193 */
194 public static UhfAntennaGainNotLow.Match newMutableMatch(final CommSubsystem pComm) {
195 return new Mutable(pComm);
196 }
197
198 /**
199 * Returns a new (partial) match.
200 * This can be used e.g. to call the matcher with a partial match.
201 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
202 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
203 * @return the (partial) match object.
204 *
205 */
206 public static UhfAntennaGainNotLow.Match newMatch(final CommSubsystem pComm) {
207 return new Immutable(pComm);
208 }
209
210 private static final class Mutable extends UhfAntennaGainNotLow.Match {
211 Mutable(final CommSubsystem pComm) {
212 super(pComm);
213 }
214
215 @Override
216 public boolean isMutable() {
217 return true;
218 }
219 }
220
221 private static final class Immutable extends UhfAntennaGainNotLow.Match {
222 Immutable(final CommSubsystem pComm) {
223 super(pComm);
224 }
225
226 @Override
227 public boolean isMutable() {
228 return false;
229 }
230 }
231 }
232
233 /**
234 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow pattern,
235 * providing pattern-specific query methods.
236 *
237 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
238 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
239 *
240 * <p>Matches of the pattern will be represented as {@link Match}.
241 *
242 * <p>Original source:
243 * <code><pre>
244 * // UHF-band transmitters may only be combined with a low gain antenna
245 *
246 * {@literal @}Constraint(severity = "error", key = {Comm},
247 * message = "UHF transceiver must be combined with a low gain antenna.")
248 * pattern uhfAntennaGainNotLow(Comm : CommSubsystem) {
249 * CommSubsystem.band(Comm, TransceiverBand::UHF);
250 * // VIATRA will fail to infer a type constraint for the virtual variable introduced
251 * // when an enum literal appears in a negative pattern call, so we use a helper pattern
252 * // instead of neg find commSubsystemGain(Comm, AntennaGain::LOW);
253 * neg find commSubsystemGainLow(Comm);
254 * }
255 * </pre></code>
256 *
257 * @see Match
258 * @see UhfAntennaGainNotLow
259 *
260 */
261 public static class Matcher extends BaseMatcher<UhfAntennaGainNotLow.Match> {
262 /**
263 * Initializes the pattern matcher within an existing VIATRA Query engine.
264 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
265 *
266 * @param engine the existing VIATRA Query engine in which this matcher will be created.
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 *
269 */
270 public static UhfAntennaGainNotLow.Matcher on(final ViatraQueryEngine engine) {
271 // check if matcher already exists
272 Matcher matcher = engine.getExistingMatcher(querySpecification());
273 if (matcher == null) {
274 matcher = (Matcher)engine.getMatcher(querySpecification());
275 }
276 return matcher;
277 }
278
279 /**
280 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
281 * @return an initialized matcher
282 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
283 *
284 */
285 public static UhfAntennaGainNotLow.Matcher create() {
286 return new Matcher();
287 }
288
289 private static final int POSITION_COMM = 0;
290
291 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(UhfAntennaGainNotLow.Matcher.class);
292
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 private Matcher() {
302 super(querySpecification());
303 }
304
305 /**
306 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
307 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<UhfAntennaGainNotLow.Match> getAllMatches(final CommSubsystem pComm) {
312 return rawStreamAllMatches(new Object[]{pComm}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<UhfAntennaGainNotLow.Match> streamAllMatches(final CommSubsystem pComm) {
326 return rawStreamAllMatches(new Object[]{pComm});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
333 * @return a match represented as a Match object, or null if no match is found.
334 *
335 */
336 public Optional<UhfAntennaGainNotLow.Match> getOneArbitraryMatch(final CommSubsystem pComm) {
337 return rawGetOneArbitraryMatch(new Object[]{pComm});
338 }
339
340 /**
341 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
342 * under any possible substitution of the unspecified parameters (if any).
343 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
344 * @return true if the input is a valid (partial) match of the pattern.
345 *
346 */
347 public boolean hasMatch(final CommSubsystem pComm) {
348 return rawHasMatch(new Object[]{pComm});
349 }
350
351 /**
352 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
353 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
354 * @return the number of pattern matches found.
355 *
356 */
357 public int countMatches(final CommSubsystem pComm) {
358 return rawCountMatches(new Object[]{pComm});
359 }
360
361 /**
362 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
365 * @param processor the action that will process the selected match.
366 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
367 *
368 */
369 public boolean forOneArbitraryMatch(final CommSubsystem pComm, final Consumer<? super UhfAntennaGainNotLow.Match> processor) {
370 return rawForOneArbitraryMatch(new Object[]{pComm}, processor);
371 }
372
373 /**
374 * Returns a new (partial) match.
375 * This can be used e.g. to call the matcher with a partial match.
376 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
377 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
378 * @return the (partial) match object.
379 *
380 */
381 public UhfAntennaGainNotLow.Match newMatch(final CommSubsystem pComm) {
382 return UhfAntennaGainNotLow.Match.newMatch(pComm);
383 }
384
385 /**
386 * Retrieve the set of values that occur in matches for Comm.
387 * @return the Set of all values or empty set if there are no matches
388 *
389 */
390 protected Stream<CommSubsystem> rawStreamAllValuesOfComm(final Object[] parameters) {
391 return rawStreamAllValues(POSITION_COMM, parameters).map(CommSubsystem.class::cast);
392 }
393
394 /**
395 * Retrieve the set of values that occur in matches for Comm.
396 * @return the Set of all values or empty set if there are no matches
397 *
398 */
399 public Set<CommSubsystem> getAllValuesOfComm() {
400 return rawStreamAllValuesOfComm(emptyArray()).collect(Collectors.toSet());
401 }
402
403 /**
404 * Retrieve the set of values that occur in matches for Comm.
405 * @return the Set of all values or empty set if there are no matches
406 *
407 */
408 public Stream<CommSubsystem> streamAllValuesOfComm() {
409 return rawStreamAllValuesOfComm(emptyArray());
410 }
411
412 @Override
413 protected UhfAntennaGainNotLow.Match tupleToMatch(final Tuple t) {
414 try {
415 return UhfAntennaGainNotLow.Match.newMatch((CommSubsystem) t.get(POSITION_COMM));
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in tuple not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected UhfAntennaGainNotLow.Match arrayToMatch(final Object[] match) {
424 try {
425 return UhfAntennaGainNotLow.Match.newMatch((CommSubsystem) match[POSITION_COMM]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 @Override
433 protected UhfAntennaGainNotLow.Match arrayToMatchMutable(final Object[] match) {
434 try {
435 return UhfAntennaGainNotLow.Match.newMutableMatch((CommSubsystem) match[POSITION_COMM]);
436 } catch(ClassCastException e) {
437 LOGGER.error("Element(s) in array not properly typed!",e);
438 return null;
439 }
440 }
441
442 /**
443 * @return the singleton instance of the query specification of this pattern
444 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
445 *
446 */
447 public static IQuerySpecification<UhfAntennaGainNotLow.Matcher> querySpecification() {
448 return UhfAntennaGainNotLow.instance();
449 }
450 }
451
452 private UhfAntennaGainNotLow() {
453 super(GeneratedPQuery.INSTANCE);
454 }
455
456 /**
457 * @return the singleton instance of the query specification
458 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
459 *
460 */
461 public static UhfAntennaGainNotLow instance() {
462 try{
463 return LazyHolder.INSTANCE;
464 } catch (ExceptionInInitializerError err) {
465 throw processInitializerError(err);
466 }
467 }
468
469 @Override
470 protected UhfAntennaGainNotLow.Matcher instantiate(final ViatraQueryEngine engine) {
471 return UhfAntennaGainNotLow.Matcher.on(engine);
472 }
473
474 @Override
475 public UhfAntennaGainNotLow.Matcher instantiate() {
476 return UhfAntennaGainNotLow.Matcher.create();
477 }
478
479 @Override
480 public UhfAntennaGainNotLow.Match newEmptyMatch() {
481 return UhfAntennaGainNotLow.Match.newEmptyMatch();
482 }
483
484 @Override
485 public UhfAntennaGainNotLow.Match newMatch(final Object... parameters) {
486 return UhfAntennaGainNotLow.Match.newMatch((satellite.CommSubsystem) parameters[0]);
487 }
488
489 /**
490 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow (visibility: PUBLIC, simpleName: UhfAntennaGainNotLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
491 * <b>not</b> at the class load time of the outer class,
492 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow (visibility: PUBLIC, simpleName: UhfAntennaGainNotLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
493 *
494 * <p> This workaround is required e.g. to support recursion.
495 *
496 */
497 private static class LazyHolder {
498 private static final UhfAntennaGainNotLow INSTANCE = new UhfAntennaGainNotLow();
499
500 /**
501 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
502 * This initialization order is required to support indirect recursion.
503 *
504 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
505 *
506 */
507 private static final Object STATIC_INITIALIZER = ensureInitialized();
508
509 public static Object ensureInitialized() {
510 INSTANCE.ensureInitializedInternal();
511 return null;
512 }
513 }
514
515 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
516 private static final UhfAntennaGainNotLow.GeneratedPQuery INSTANCE = new GeneratedPQuery();
517
518 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
519
520 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
521
522 private GeneratedPQuery() {
523 super(PVisibility.PUBLIC);
524 }
525
526 @Override
527 public String getFullyQualifiedName() {
528 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow";
529 }
530
531 @Override
532 public List<String> getParameterNames() {
533 return Arrays.asList("Comm");
534 }
535
536 @Override
537 public List<PParameter> getParameters() {
538 return parameters;
539 }
540
541 @Override
542 public Set<PBody> doGetContainedBodies() {
543 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
544 Set<PBody> bodies = new LinkedHashSet<>();
545 {
546 PBody body = new PBody(this);
547 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
548 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
549 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
550 new ExportedParameter(body, var_Comm, parameter_Comm)
551 ));
552 // CommSubsystem.band(Comm, TransceiverBand::UHF)
553 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
554 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "UHF").getInstance());
555 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
556 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
559 new Equality(body, var__virtual_1_, var__virtual_0_);
560 // // VIATRA will fail to infer a type constraint for the virtual variable introduced // when an enum literal appears in a negative pattern call, so we use a helper pattern // instead of neg find commSubsystemGain(Comm, AntennaGain::LOW); neg find commSubsystemGainLow(Comm)
561 new NegativePatternCall(body, Tuples.flatTupleOf(var_Comm), CommSubsystemGainLow.instance().getInternalQueryRepresentation());
562 bodies.add(body);
563 }
564 {
565 PAnnotation annotation = new PAnnotation("Constraint");
566 annotation.addAttribute("severity", "error");
567 annotation.addAttribute("key", Arrays.asList(new Object[] {
568 new ParameterReference("Comm")
569 }));
570 annotation.addAttribute("message", "UHF transceiver must be combined with a low gain antenna.");
571 addAnnotation(annotation);
572 }
573 return bodies;
574 }
575 }
576}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/XAntennaGainNotMedium.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/XAntennaGainNotMedium.java
new file mode 100644
index 00000000..b50962c5
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/XAntennaGainNotMedium.java
@@ -0,0 +1,570 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46import satellite.CommSubsystem;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * // X-band transmitters may only be combined with a medium gain antenna
54 *
55 * {@literal @}Constraint(severity = "error", key = {Comm},
56 * message = "X-band transceiver must be combined with a medium gain antenna.")
57 * pattern xAntennaGainNotMedium(Comm : CommSubsystem) {
58 * CommSubsystem.band(Comm, TransceiverBand::X);
59 * neg find commSubsystemGainMedium(Comm);
60 * }
61 * </pre></code>
62 *
63 * @see Matcher
64 * @see Match
65 *
66 */
67@SuppressWarnings("all")
68public final class XAntennaGainNotMedium extends BaseGeneratedEMFQuerySpecification<XAntennaGainNotMedium.Matcher> {
69 /**
70 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium pattern,
71 * to be used in conjunction with {@link Matcher}.
72 *
73 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
74 * Each instance is a (possibly partial) substitution of pattern parameters,
75 * usable to represent a match of the pattern in the result of a query,
76 * or to specify the bound (fixed) input parameters when issuing a query.
77 *
78 * @see Matcher
79 *
80 */
81 public static abstract class Match extends BasePatternMatch {
82 private CommSubsystem fComm;
83
84 private static List<String> parameterNames = makeImmutableList("Comm");
85
86 private Match(final CommSubsystem pComm) {
87 this.fComm = pComm;
88 }
89
90 @Override
91 public Object get(final String parameterName) {
92 if ("Comm".equals(parameterName)) return this.fComm;
93 return null;
94 }
95
96 public CommSubsystem getComm() {
97 return this.fComm;
98 }
99
100 @Override
101 public boolean set(final String parameterName, final Object newValue) {
102 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
103 if ("Comm".equals(parameterName) ) {
104 this.fComm = (CommSubsystem) newValue;
105 return true;
106 }
107 return false;
108 }
109
110 public void setComm(final CommSubsystem pComm) {
111 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
112 this.fComm = pComm;
113 }
114
115 @Override
116 public String patternName() {
117 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium";
118 }
119
120 @Override
121 public List<String> parameterNames() {
122 return XAntennaGainNotMedium.Match.parameterNames;
123 }
124
125 @Override
126 public Object[] toArray() {
127 return new Object[]{fComm};
128 }
129
130 @Override
131 public XAntennaGainNotMedium.Match toImmutable() {
132 return isMutable() ? newMatch(fComm) : this;
133 }
134
135 @Override
136 public String prettyPrint() {
137 StringBuilder result = new StringBuilder();
138 result.append("\"Comm\"=" + prettyPrintValue(fComm));
139 return result.toString();
140 }
141
142 @Override
143 public int hashCode() {
144 return Objects.hash(fComm);
145 }
146
147 @Override
148 public boolean equals(final Object obj) {
149 if (this == obj)
150 return true;
151 if (obj == null) {
152 return false;
153 }
154 if ((obj instanceof XAntennaGainNotMedium.Match)) {
155 XAntennaGainNotMedium.Match other = (XAntennaGainNotMedium.Match) obj;
156 return Objects.equals(fComm, other.fComm);
157 } else {
158 // this should be infrequent
159 if (!(obj instanceof IPatternMatch)) {
160 return false;
161 }
162 IPatternMatch otherSig = (IPatternMatch) obj;
163 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
164 }
165 }
166
167 @Override
168 public XAntennaGainNotMedium specification() {
169 return XAntennaGainNotMedium.instance();
170 }
171
172 /**
173 * Returns an empty, mutable match.
174 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
175 *
176 * @return the empty match.
177 *
178 */
179 public static XAntennaGainNotMedium.Match newEmptyMatch() {
180 return new Mutable(null);
181 }
182
183 /**
184 * Returns a mutable (partial) match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
188 * @return the new, mutable (partial) match object.
189 *
190 */
191 public static XAntennaGainNotMedium.Match newMutableMatch(final CommSubsystem pComm) {
192 return new Mutable(pComm);
193 }
194
195 /**
196 * Returns a new (partial) match.
197 * This can be used e.g. to call the matcher with a partial match.
198 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
199 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
200 * @return the (partial) match object.
201 *
202 */
203 public static XAntennaGainNotMedium.Match newMatch(final CommSubsystem pComm) {
204 return new Immutable(pComm);
205 }
206
207 private static final class Mutable extends XAntennaGainNotMedium.Match {
208 Mutable(final CommSubsystem pComm) {
209 super(pComm);
210 }
211
212 @Override
213 public boolean isMutable() {
214 return true;
215 }
216 }
217
218 private static final class Immutable extends XAntennaGainNotMedium.Match {
219 Immutable(final CommSubsystem pComm) {
220 super(pComm);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return false;
226 }
227 }
228 }
229
230 /**
231 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium pattern,
232 * providing pattern-specific query methods.
233 *
234 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
235 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
236 *
237 * <p>Matches of the pattern will be represented as {@link Match}.
238 *
239 * <p>Original source:
240 * <code><pre>
241 * // X-band transmitters may only be combined with a medium gain antenna
242 *
243 * {@literal @}Constraint(severity = "error", key = {Comm},
244 * message = "X-band transceiver must be combined with a medium gain antenna.")
245 * pattern xAntennaGainNotMedium(Comm : CommSubsystem) {
246 * CommSubsystem.band(Comm, TransceiverBand::X);
247 * neg find commSubsystemGainMedium(Comm);
248 * }
249 * </pre></code>
250 *
251 * @see Match
252 * @see XAntennaGainNotMedium
253 *
254 */
255 public static class Matcher extends BaseMatcher<XAntennaGainNotMedium.Match> {
256 /**
257 * Initializes the pattern matcher within an existing VIATRA Query engine.
258 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
259 *
260 * @param engine the existing VIATRA Query engine in which this matcher will be created.
261 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
262 *
263 */
264 public static XAntennaGainNotMedium.Matcher on(final ViatraQueryEngine engine) {
265 // check if matcher already exists
266 Matcher matcher = engine.getExistingMatcher(querySpecification());
267 if (matcher == null) {
268 matcher = (Matcher)engine.getMatcher(querySpecification());
269 }
270 return matcher;
271 }
272
273 /**
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 * @return an initialized matcher
276 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
277 *
278 */
279 public static XAntennaGainNotMedium.Matcher create() {
280 return new Matcher();
281 }
282
283 private static final int POSITION_COMM = 0;
284
285 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(XAntennaGainNotMedium.Matcher.class);
286
287 /**
288 * Initializes the pattern matcher within an existing VIATRA Query engine.
289 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
290 *
291 * @param engine the existing VIATRA Query engine in which this matcher will be created.
292 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
293 *
294 */
295 private Matcher() {
296 super(querySpecification());
297 }
298
299 /**
300 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
301 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
302 * @return matches represented as a Match object.
303 *
304 */
305 public Collection<XAntennaGainNotMedium.Match> getAllMatches(final CommSubsystem pComm) {
306 return rawStreamAllMatches(new Object[]{pComm}).collect(Collectors.toSet());
307 }
308
309 /**
310 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
311 * </p>
312 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
313 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
314 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
315 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
316 * @return a stream of matches represented as a Match object.
317 *
318 */
319 public Stream<XAntennaGainNotMedium.Match> streamAllMatches(final CommSubsystem pComm) {
320 return rawStreamAllMatches(new Object[]{pComm});
321 }
322
323 /**
324 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
325 * Neither determinism nor randomness of selection is guaranteed.
326 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
327 * @return a match represented as a Match object, or null if no match is found.
328 *
329 */
330 public Optional<XAntennaGainNotMedium.Match> getOneArbitraryMatch(final CommSubsystem pComm) {
331 return rawGetOneArbitraryMatch(new Object[]{pComm});
332 }
333
334 /**
335 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
336 * under any possible substitution of the unspecified parameters (if any).
337 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
338 * @return true if the input is a valid (partial) match of the pattern.
339 *
340 */
341 public boolean hasMatch(final CommSubsystem pComm) {
342 return rawHasMatch(new Object[]{pComm});
343 }
344
345 /**
346 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
347 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
348 * @return the number of pattern matches found.
349 *
350 */
351 public int countMatches(final CommSubsystem pComm) {
352 return rawCountMatches(new Object[]{pComm});
353 }
354
355 /**
356 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
357 * Neither determinism nor randomness of selection is guaranteed.
358 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
359 * @param processor the action that will process the selected match.
360 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
361 *
362 */
363 public boolean forOneArbitraryMatch(final CommSubsystem pComm, final Consumer<? super XAntennaGainNotMedium.Match> processor) {
364 return rawForOneArbitraryMatch(new Object[]{pComm}, processor);
365 }
366
367 /**
368 * Returns a new (partial) match.
369 * This can be used e.g. to call the matcher with a partial match.
370 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
371 * @param pComm the fixed value of pattern parameter Comm, or null if not bound.
372 * @return the (partial) match object.
373 *
374 */
375 public XAntennaGainNotMedium.Match newMatch(final CommSubsystem pComm) {
376 return XAntennaGainNotMedium.Match.newMatch(pComm);
377 }
378
379 /**
380 * Retrieve the set of values that occur in matches for Comm.
381 * @return the Set of all values or empty set if there are no matches
382 *
383 */
384 protected Stream<CommSubsystem> rawStreamAllValuesOfComm(final Object[] parameters) {
385 return rawStreamAllValues(POSITION_COMM, parameters).map(CommSubsystem.class::cast);
386 }
387
388 /**
389 * Retrieve the set of values that occur in matches for Comm.
390 * @return the Set of all values or empty set if there are no matches
391 *
392 */
393 public Set<CommSubsystem> getAllValuesOfComm() {
394 return rawStreamAllValuesOfComm(emptyArray()).collect(Collectors.toSet());
395 }
396
397 /**
398 * Retrieve the set of values that occur in matches for Comm.
399 * @return the Set of all values or empty set if there are no matches
400 *
401 */
402 public Stream<CommSubsystem> streamAllValuesOfComm() {
403 return rawStreamAllValuesOfComm(emptyArray());
404 }
405
406 @Override
407 protected XAntennaGainNotMedium.Match tupleToMatch(final Tuple t) {
408 try {
409 return XAntennaGainNotMedium.Match.newMatch((CommSubsystem) t.get(POSITION_COMM));
410 } catch(ClassCastException e) {
411 LOGGER.error("Element(s) in tuple not properly typed!",e);
412 return null;
413 }
414 }
415
416 @Override
417 protected XAntennaGainNotMedium.Match arrayToMatch(final Object[] match) {
418 try {
419 return XAntennaGainNotMedium.Match.newMatch((CommSubsystem) match[POSITION_COMM]);
420 } catch(ClassCastException e) {
421 LOGGER.error("Element(s) in array not properly typed!",e);
422 return null;
423 }
424 }
425
426 @Override
427 protected XAntennaGainNotMedium.Match arrayToMatchMutable(final Object[] match) {
428 try {
429 return XAntennaGainNotMedium.Match.newMutableMatch((CommSubsystem) match[POSITION_COMM]);
430 } catch(ClassCastException e) {
431 LOGGER.error("Element(s) in array not properly typed!",e);
432 return null;
433 }
434 }
435
436 /**
437 * @return the singleton instance of the query specification of this pattern
438 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
439 *
440 */
441 public static IQuerySpecification<XAntennaGainNotMedium.Matcher> querySpecification() {
442 return XAntennaGainNotMedium.instance();
443 }
444 }
445
446 private XAntennaGainNotMedium() {
447 super(GeneratedPQuery.INSTANCE);
448 }
449
450 /**
451 * @return the singleton instance of the query specification
452 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
453 *
454 */
455 public static XAntennaGainNotMedium instance() {
456 try{
457 return LazyHolder.INSTANCE;
458 } catch (ExceptionInInitializerError err) {
459 throw processInitializerError(err);
460 }
461 }
462
463 @Override
464 protected XAntennaGainNotMedium.Matcher instantiate(final ViatraQueryEngine engine) {
465 return XAntennaGainNotMedium.Matcher.on(engine);
466 }
467
468 @Override
469 public XAntennaGainNotMedium.Matcher instantiate() {
470 return XAntennaGainNotMedium.Matcher.create();
471 }
472
473 @Override
474 public XAntennaGainNotMedium.Match newEmptyMatch() {
475 return XAntennaGainNotMedium.Match.newEmptyMatch();
476 }
477
478 @Override
479 public XAntennaGainNotMedium.Match newMatch(final Object... parameters) {
480 return XAntennaGainNotMedium.Match.newMatch((satellite.CommSubsystem) parameters[0]);
481 }
482
483 /**
484 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium (visibility: PUBLIC, simpleName: XAntennaGainNotMedium, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
485 * <b>not</b> at the class load time of the outer class,
486 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium (visibility: PUBLIC, simpleName: XAntennaGainNotMedium, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
487 *
488 * <p> This workaround is required e.g. to support recursion.
489 *
490 */
491 private static class LazyHolder {
492 private static final XAntennaGainNotMedium INSTANCE = new XAntennaGainNotMedium();
493
494 /**
495 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
496 * This initialization order is required to support indirect recursion.
497 *
498 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
499 *
500 */
501 private static final Object STATIC_INITIALIZER = ensureInitialized();
502
503 public static Object ensureInitialized() {
504 INSTANCE.ensureInitializedInternal();
505 return null;
506 }
507 }
508
509 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
510 private static final XAntennaGainNotMedium.GeneratedPQuery INSTANCE = new GeneratedPQuery();
511
512 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
513
514 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
515
516 private GeneratedPQuery() {
517 super(PVisibility.PUBLIC);
518 }
519
520 @Override
521 public String getFullyQualifiedName() {
522 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium";
523 }
524
525 @Override
526 public List<String> getParameterNames() {
527 return Arrays.asList("Comm");
528 }
529
530 @Override
531 public List<PParameter> getParameters() {
532 return parameters;
533 }
534
535 @Override
536 public Set<PBody> doGetContainedBodies() {
537 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
538 Set<PBody> bodies = new LinkedHashSet<>();
539 {
540 PBody body = new PBody(this);
541 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
542 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
543 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
544 new ExportedParameter(body, var_Comm, parameter_Comm)
545 ));
546 // CommSubsystem.band(Comm, TransceiverBand::X)
547 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
548 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "X").getInstance());
549 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
550 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
551 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
552 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
553 new Equality(body, var__virtual_1_, var__virtual_0_);
554 // neg find commSubsystemGainMedium(Comm)
555 new NegativePatternCall(body, Tuples.flatTupleOf(var_Comm), CommSubsystemGainMedium.instance().getInternalQueryRepresentation());
556 bodies.add(body);
557 }
558 {
559 PAnnotation annotation = new PAnnotation("Constraint");
560 annotation.addAttribute("severity", "error");
561 annotation.addAttribute("key", Arrays.asList(new Object[] {
562 new ParameterReference("Comm")
563 }));
564 annotation.addAttribute("message", "X-band transceiver must be combined with a medium gain antenna.");
565 addAnnotation(annotation);
566 }
567 return bodies;
568 }
569 }
570}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/.gitignore
new file mode 100644
index 00000000..4c8bcc9e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/.gitignore
@@ -0,0 +1,38 @@
1/.CommunicationLink.java._trace
2/.SatelliteQueriesAll.java._trace
3/.IndirectCommunicationLink.java._trace
4/.DirectCommunicationLink.java._trace
5/.SpacecraftWithInterferometryPayload.java._trace
6/.SingleInterferometryPayload.java._trace
7/.AtLeastTwoInterferometryPayloads.java._trace
8/.DirectCommunicationLink2.java._trace
9/.CommSubsystemBand.java._trace
10/.CommSubsystemGain.java._trace
11/.GroundStationNetwork.java._trace
12/.SmallSat.java._trace
13/.CommSubsystemGainLow.java._trace
14/.CommSubsystemGainMedium.java._trace
15/.CommSubsystemBandUhf.java._trace
16/.MissionCoverage.java._trace
17/.SatelliteMetricsAll.java._trace
18/.MissionTime.java._trace
19/.TimeMetric.java._trace
20/.TransmitTime.java._trace
21/.TransmitRate.java._trace
22/.SpacecraftUplink.java._trace
23/.MissionScienceData.java._trace
24/.IndirectScienceData.java._trace
25/.ScienceData.java._trace
26/.IncomingData.java._trace
27/.MissionCost.java._trace
28/.BasePrice.java._trace
29/.SpacecraftOfKind.java._trace
30/.InterferometryPayloadCost.java._trace
31/.AdditionalCommSubsystemCost.java._trace
32/.SpacecraftWithTwoCommSubsystems.java._trace
33/.SpacecraftCost.java._trace
34/.CrossLinkAllowed.java._trace
35/.MatchingAntenna.java._trace
36/.CubeSat3U.java._trace
37/.LinkAllowed.java._trace
38/.IndirectLinkAllowed.java._trace
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AtLeastTwoInterferometryPayloads.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AtLeastTwoInterferometryPayloads.java
new file mode 100644
index 00000000..58e7e183
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AtLeastTwoInterferometryPayloads.java
@@ -0,0 +1,138 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload;
7import java.util.Arrays;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Set;
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
22import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
25import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
26
27/**
28 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
29 *
30 * <p>Original source:
31 * <code><pre>
32 * private pattern atLeastTwoInterferometryPayloads(Mission : InterferometryMission) {
33 * find spacecraftWithInterferometryPayload(Mission, Spacecraft1);
34 * find spacecraftWithInterferometryPayload(Mission, Spacecraft2);
35 * Spacecraft1 != Spacecraft2;
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class AtLeastTwoInterferometryPayloads extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private AtLeastTwoInterferometryPayloads() {
46 super(GeneratedPQuery.INSTANCE);
47 }
48
49 /**
50 * @return the singleton instance of the query specification
51 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
52 *
53 */
54 public static AtLeastTwoInterferometryPayloads instance() {
55 try{
56 return LazyHolder.INSTANCE;
57 } catch (ExceptionInInitializerError err) {
58 throw processInitializerError(err);
59 }
60 }
61
62 /**
63 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads (visibility: PUBLIC, simpleName: AtLeastTwoInterferometryPayloads, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
64 * <b>not</b> at the class load time of the outer class,
65 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads (visibility: PUBLIC, simpleName: AtLeastTwoInterferometryPayloads, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
66 *
67 * <p> This workaround is required e.g. to support recursion.
68 *
69 */
70 private static class LazyHolder {
71 private static final AtLeastTwoInterferometryPayloads INSTANCE = new AtLeastTwoInterferometryPayloads();
72
73 /**
74 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
75 * This initialization order is required to support indirect recursion.
76 *
77 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
78 *
79 */
80 private static final Object STATIC_INITIALIZER = ensureInitialized();
81
82 public static Object ensureInitialized() {
83 INSTANCE.ensureInitializedInternal();
84 return null;
85 }
86 }
87
88 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
89 private static final AtLeastTwoInterferometryPayloads.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Mission = new PParameter("Mission", "satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Mission);
94
95 private GeneratedPQuery() {
96 super(PVisibility.PRIVATE);
97 }
98
99 @Override
100 public String getFullyQualifiedName() {
101 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.atLeastTwoInterferometryPayloads";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Mission");
107 }
108
109 @Override
110 public List<PParameter> getParameters() {
111 return parameters;
112 }
113
114 @Override
115 public Set<PBody> doGetContainedBodies() {
116 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
117 Set<PBody> bodies = new LinkedHashSet<>();
118 {
119 PBody body = new PBody(this);
120 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
121 PVariable var_Spacecraft1 = body.getOrCreateVariableByName("Spacecraft1");
122 PVariable var_Spacecraft2 = body.getOrCreateVariableByName("Spacecraft2");
123 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
124 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
125 new ExportedParameter(body, var_Mission, parameter_Mission)
126 ));
127 // find spacecraftWithInterferometryPayload(Mission, Spacecraft1)
128 new PositivePatternCall(body, Tuples.flatTupleOf(var_Mission, var_Spacecraft1), SpacecraftWithInterferometryPayload.instance().getInternalQueryRepresentation());
129 // find spacecraftWithInterferometryPayload(Mission, Spacecraft2)
130 new PositivePatternCall(body, Tuples.flatTupleOf(var_Mission, var_Spacecraft2), SpacecraftWithInterferometryPayload.instance().getInternalQueryRepresentation());
131 // Spacecraft1 != Spacecraft2
132 new Inequality(body, var_Spacecraft1, var_Spacecraft2);
133 bodies.add(body);
134 }
135 return bodies;
136 }
137 }
138}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBand.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBand.java
new file mode 100644
index 00000000..609e0b93
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBand.java
@@ -0,0 +1,140 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
26import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
27
28/**
29 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
30 *
31 * <p>Original source:
32 * <code><pre>
33 * private pattern commSubsystemBand(Comm : CommSubsystem, Band : TransceiverBand) {
34 * CommSubsystem.band(Comm, Band);
35 * }
36 * </pre></code>
37 *
38 * @see GenericPatternMatcher
39 * @see GenericPatternMatch
40 *
41 */
42@SuppressWarnings("all")
43public final class CommSubsystemBand extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
44 private CommSubsystemBand() {
45 super(GeneratedPQuery.INSTANCE);
46 }
47
48 /**
49 * @return the singleton instance of the query specification
50 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
51 *
52 */
53 public static CommSubsystemBand instance() {
54 try{
55 return LazyHolder.INSTANCE;
56 } catch (ExceptionInInitializerError err) {
57 throw processInitializerError(err);
58 }
59 }
60
61 /**
62 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand (visibility: PUBLIC, simpleName: CommSubsystemBand, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
63 * <b>not</b> at the class load time of the outer class,
64 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand (visibility: PUBLIC, simpleName: CommSubsystemBand, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
65 *
66 * <p> This workaround is required e.g. to support recursion.
67 *
68 */
69 private static class LazyHolder {
70 private static final CommSubsystemBand INSTANCE = new CommSubsystemBand();
71
72 /**
73 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
74 * This initialization order is required to support indirect recursion.
75 *
76 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
77 *
78 */
79 private static final Object STATIC_INITIALIZER = ensureInitialized();
80
81 public static Object ensureInitialized() {
82 INSTANCE.ensureInitializedInternal();
83 return null;
84 }
85 }
86
87 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
88 private static final CommSubsystemBand.GeneratedPQuery INSTANCE = new GeneratedPQuery();
89
90 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Band = new PParameter("Band", "satellite.TransceiverBand", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "TransceiverBand")), PParameterDirection.INOUT);
93
94 private final List<PParameter> parameters = Arrays.asList(parameter_Comm, parameter_Band);
95
96 private GeneratedPQuery() {
97 super(PVisibility.PRIVATE);
98 }
99
100 @Override
101 public String getFullyQualifiedName() {
102 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBand";
103 }
104
105 @Override
106 public List<String> getParameterNames() {
107 return Arrays.asList("Comm","Band");
108 }
109
110 @Override
111 public List<PParameter> getParameters() {
112 return parameters;
113 }
114
115 @Override
116 public Set<PBody> doGetContainedBodies() {
117 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
118 Set<PBody> bodies = new LinkedHashSet<>();
119 {
120 PBody body = new PBody(this);
121 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
122 PVariable var_Band = body.getOrCreateVariableByName("Band");
123 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
124 new TypeConstraint(body, Tuples.flatTupleOf(var_Band), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
125 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
126 new ExportedParameter(body, var_Comm, parameter_Comm),
127 new ExportedParameter(body, var_Band, parameter_Band)
128 ));
129 // CommSubsystem.band(Comm, Band)
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
131 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
133 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
134 new Equality(body, var__virtual_0_, var_Band);
135 bodies.add(body);
136 }
137 return bodies;
138 }
139 }
140}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBandUhf.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBandUhf.java
new file mode 100644
index 00000000..bc25ea59
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemBandUhf.java
@@ -0,0 +1,138 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
27import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
28
29/**
30 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
31 *
32 * <p>Original source:
33 * <code><pre>
34 * private pattern commSubsystemBandUhf(Comm : CommSubsystem) {
35 * CommSubsystem.band(Comm, TransceiverBand::UHF);
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class CommSubsystemBandUhf extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private CommSubsystemBandUhf() {
46 super(GeneratedPQuery.INSTANCE);
47 }
48
49 /**
50 * @return the singleton instance of the query specification
51 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
52 *
53 */
54 public static CommSubsystemBandUhf instance() {
55 try{
56 return LazyHolder.INSTANCE;
57 } catch (ExceptionInInitializerError err) {
58 throw processInitializerError(err);
59 }
60 }
61
62 /**
63 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf (visibility: PUBLIC, simpleName: CommSubsystemBandUhf, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
64 * <b>not</b> at the class load time of the outer class,
65 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf (visibility: PUBLIC, simpleName: CommSubsystemBandUhf, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
66 *
67 * <p> This workaround is required e.g. to support recursion.
68 *
69 */
70 private static class LazyHolder {
71 private static final CommSubsystemBandUhf INSTANCE = new CommSubsystemBandUhf();
72
73 /**
74 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
75 * This initialization order is required to support indirect recursion.
76 *
77 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
78 *
79 */
80 private static final Object STATIC_INITIALIZER = ensureInitialized();
81
82 public static Object ensureInitialized() {
83 INSTANCE.ensureInitializedInternal();
84 return null;
85 }
86 }
87
88 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
89 private static final CommSubsystemBandUhf.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
94
95 private GeneratedPQuery() {
96 super(PVisibility.PRIVATE);
97 }
98
99 @Override
100 public String getFullyQualifiedName() {
101 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBandUhf";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Comm");
107 }
108
109 @Override
110 public List<PParameter> getParameters() {
111 return parameters;
112 }
113
114 @Override
115 public Set<PBody> doGetContainedBodies() {
116 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
117 Set<PBody> bodies = new LinkedHashSet<>();
118 {
119 PBody body = new PBody(this);
120 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
122 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
123 new ExportedParameter(body, var_Comm, parameter_Comm)
124 ));
125 // CommSubsystem.band(Comm, TransceiverBand::UHF)
126 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
127 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "UHF").getInstance());
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
129 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
132 new Equality(body, var__virtual_1_, var__virtual_0_);
133 bodies.add(body);
134 }
135 return bodies;
136 }
137 }
138}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGain.java
new file mode 100644
index 00000000..69793a96
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGain.java
@@ -0,0 +1,140 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
26import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
27
28/**
29 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
30 *
31 * <p>Original source:
32 * <code><pre>
33 * private pattern commSubsystemGain(Comm : CommSubsystem, Gain : AntennaGain) {
34 * CommSubsystem.gain(Comm, Gain);
35 * }
36 * </pre></code>
37 *
38 * @see GenericPatternMatcher
39 * @see GenericPatternMatch
40 *
41 */
42@SuppressWarnings("all")
43public final class CommSubsystemGain extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
44 private CommSubsystemGain() {
45 super(GeneratedPQuery.INSTANCE);
46 }
47
48 /**
49 * @return the singleton instance of the query specification
50 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
51 *
52 */
53 public static CommSubsystemGain instance() {
54 try{
55 return LazyHolder.INSTANCE;
56 } catch (ExceptionInInitializerError err) {
57 throw processInitializerError(err);
58 }
59 }
60
61 /**
62 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain (visibility: PUBLIC, simpleName: CommSubsystemGain, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
63 * <b>not</b> at the class load time of the outer class,
64 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain (visibility: PUBLIC, simpleName: CommSubsystemGain, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
65 *
66 * <p> This workaround is required e.g. to support recursion.
67 *
68 */
69 private static class LazyHolder {
70 private static final CommSubsystemGain INSTANCE = new CommSubsystemGain();
71
72 /**
73 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
74 * This initialization order is required to support indirect recursion.
75 *
76 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
77 *
78 */
79 private static final Object STATIC_INITIALIZER = ensureInitialized();
80
81 public static Object ensureInitialized() {
82 INSTANCE.ensureInitializedInternal();
83 return null;
84 }
85 }
86
87 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
88 private static final CommSubsystemGain.GeneratedPQuery INSTANCE = new GeneratedPQuery();
89
90 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Gain = new PParameter("Gain", "satellite.AntennaGain", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "AntennaGain")), PParameterDirection.INOUT);
93
94 private final List<PParameter> parameters = Arrays.asList(parameter_Comm, parameter_Gain);
95
96 private GeneratedPQuery() {
97 super(PVisibility.PRIVATE);
98 }
99
100 @Override
101 public String getFullyQualifiedName() {
102 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGain";
103 }
104
105 @Override
106 public List<String> getParameterNames() {
107 return Arrays.asList("Comm","Gain");
108 }
109
110 @Override
111 public List<PParameter> getParameters() {
112 return parameters;
113 }
114
115 @Override
116 public Set<PBody> doGetContainedBodies() {
117 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
118 Set<PBody> bodies = new LinkedHashSet<>();
119 {
120 PBody body = new PBody(this);
121 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
122 PVariable var_Gain = body.getOrCreateVariableByName("Gain");
123 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
124 new TypeConstraint(body, Tuples.flatTupleOf(var_Gain), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
125 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
126 new ExportedParameter(body, var_Comm, parameter_Comm),
127 new ExportedParameter(body, var_Gain, parameter_Gain)
128 ));
129 // CommSubsystem.gain(Comm, Gain)
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
131 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
133 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
134 new Equality(body, var__virtual_0_, var_Gain);
135 bodies.add(body);
136 }
137 return bodies;
138 }
139 }
140}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainLow.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainLow.java
new file mode 100644
index 00000000..fd24f163
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainLow.java
@@ -0,0 +1,138 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
27import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
28
29/**
30 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
31 *
32 * <p>Original source:
33 * <code><pre>
34 * private pattern commSubsystemGainLow(Comm : CommSubsystem) {
35 * CommSubsystem.gain(Comm, AntennaGain::LOW);
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class CommSubsystemGainLow extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private CommSubsystemGainLow() {
46 super(GeneratedPQuery.INSTANCE);
47 }
48
49 /**
50 * @return the singleton instance of the query specification
51 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
52 *
53 */
54 public static CommSubsystemGainLow instance() {
55 try{
56 return LazyHolder.INSTANCE;
57 } catch (ExceptionInInitializerError err) {
58 throw processInitializerError(err);
59 }
60 }
61
62 /**
63 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow (visibility: PUBLIC, simpleName: CommSubsystemGainLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
64 * <b>not</b> at the class load time of the outer class,
65 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow (visibility: PUBLIC, simpleName: CommSubsystemGainLow, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
66 *
67 * <p> This workaround is required e.g. to support recursion.
68 *
69 */
70 private static class LazyHolder {
71 private static final CommSubsystemGainLow INSTANCE = new CommSubsystemGainLow();
72
73 /**
74 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
75 * This initialization order is required to support indirect recursion.
76 *
77 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
78 *
79 */
80 private static final Object STATIC_INITIALIZER = ensureInitialized();
81
82 public static Object ensureInitialized() {
83 INSTANCE.ensureInitializedInternal();
84 return null;
85 }
86 }
87
88 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
89 private static final CommSubsystemGainLow.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
94
95 private GeneratedPQuery() {
96 super(PVisibility.PRIVATE);
97 }
98
99 @Override
100 public String getFullyQualifiedName() {
101 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainLow";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Comm");
107 }
108
109 @Override
110 public List<PParameter> getParameters() {
111 return parameters;
112 }
113
114 @Override
115 public Set<PBody> doGetContainedBodies() {
116 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
117 Set<PBody> bodies = new LinkedHashSet<>();
118 {
119 PBody body = new PBody(this);
120 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
122 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
123 new ExportedParameter(body, var_Comm, parameter_Comm)
124 ));
125 // CommSubsystem.gain(Comm, AntennaGain::LOW)
126 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
127 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "AntennaGain", "LOW").getInstance());
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
129 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
132 new Equality(body, var__virtual_1_, var__virtual_0_);
133 bodies.add(body);
134 }
135 return bodies;
136 }
137 }
138}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainMedium.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainMedium.java
new file mode 100644
index 00000000..82b77bbc
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CommSubsystemGainMedium.java
@@ -0,0 +1,138 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
27import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
28
29/**
30 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
31 *
32 * <p>Original source:
33 * <code><pre>
34 * private pattern commSubsystemGainMedium(Comm : CommSubsystem) {
35 * CommSubsystem.gain(Comm, AntennaGain::MEDIUM);
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class CommSubsystemGainMedium extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private CommSubsystemGainMedium() {
46 super(GeneratedPQuery.INSTANCE);
47 }
48
49 /**
50 * @return the singleton instance of the query specification
51 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
52 *
53 */
54 public static CommSubsystemGainMedium instance() {
55 try{
56 return LazyHolder.INSTANCE;
57 } catch (ExceptionInInitializerError err) {
58 throw processInitializerError(err);
59 }
60 }
61
62 /**
63 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium (visibility: PUBLIC, simpleName: CommSubsystemGainMedium, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
64 * <b>not</b> at the class load time of the outer class,
65 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium (visibility: PUBLIC, simpleName: CommSubsystemGainMedium, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
66 *
67 * <p> This workaround is required e.g. to support recursion.
68 *
69 */
70 private static class LazyHolder {
71 private static final CommSubsystemGainMedium INSTANCE = new CommSubsystemGainMedium();
72
73 /**
74 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
75 * This initialization order is required to support indirect recursion.
76 *
77 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
78 *
79 */
80 private static final Object STATIC_INITIALIZER = ensureInitialized();
81
82 public static Object ensureInitialized() {
83 INSTANCE.ensureInitializedInternal();
84 return null;
85 }
86 }
87
88 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
89 private static final CommSubsystemGainMedium.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Comm = new PParameter("Comm", "satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Comm);
94
95 private GeneratedPQuery() {
96 super(PVisibility.PRIVATE);
97 }
98
99 @Override
100 public String getFullyQualifiedName() {
101 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainMedium";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Comm");
107 }
108
109 @Override
110 public List<PParameter> getParameters() {
111 return parameters;
112 }
113
114 @Override
115 public Set<PBody> doGetContainedBodies() {
116 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
117 Set<PBody> bodies = new LinkedHashSet<>();
118 {
119 PBody body = new PBody(this);
120 PVariable var_Comm = body.getOrCreateVariableByName("Comm");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
122 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
123 new ExportedParameter(body, var_Comm, parameter_Comm)
124 ));
125 // CommSubsystem.gain(Comm, AntennaGain::MEDIUM)
126 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
127 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "AntennaGain", "MEDIUM").getInstance());
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
129 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Comm, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
132 new Equality(body, var__virtual_1_, var__virtual_0_);
133 bodies.add(body);
134 }
135 return bodies;
136 }
137 }
138}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CubeSat3U.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CubeSat3U.java
new file mode 100644
index 00000000..acc60475
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/CubeSat3U.java
@@ -0,0 +1,127 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
13import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
14import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
15import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
17import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
19import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
20import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
22import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
23
24/**
25 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
26 *
27 * <p>Original source:
28 * <code><pre>
29 * private pattern cubeSat3U(Sat : CubeSat3U) {
30 * CubeSat3U(Sat);
31 * }
32 * </pre></code>
33 *
34 * @see GenericPatternMatcher
35 * @see GenericPatternMatch
36 *
37 */
38@SuppressWarnings("all")
39public final class CubeSat3U extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
40 private CubeSat3U() {
41 super(GeneratedPQuery.INSTANCE);
42 }
43
44 /**
45 * @return the singleton instance of the query specification
46 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
47 *
48 */
49 public static CubeSat3U instance() {
50 try{
51 return LazyHolder.INSTANCE;
52 } catch (ExceptionInInitializerError err) {
53 throw processInitializerError(err);
54 }
55 }
56
57 /**
58 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U (visibility: PUBLIC, simpleName: CubeSat3U, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
59 * <b>not</b> at the class load time of the outer class,
60 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U (visibility: PUBLIC, simpleName: CubeSat3U, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
61 *
62 * <p> This workaround is required e.g. to support recursion.
63 *
64 */
65 private static class LazyHolder {
66 private static final CubeSat3U INSTANCE = new CubeSat3U();
67
68 /**
69 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
70 * This initialization order is required to support indirect recursion.
71 *
72 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
73 *
74 */
75 private static final Object STATIC_INITIALIZER = ensureInitialized();
76
77 public static Object ensureInitialized() {
78 INSTANCE.ensureInitializedInternal();
79 return null;
80 }
81 }
82
83 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
84 private static final CubeSat3U.GeneratedPQuery INSTANCE = new GeneratedPQuery();
85
86 private final PParameter parameter_Sat = new PParameter("Sat", "satellite.CubeSat3U", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CubeSat3U")), PParameterDirection.INOUT);
87
88 private final List<PParameter> parameters = Arrays.asList(parameter_Sat);
89
90 private GeneratedPQuery() {
91 super(PVisibility.PRIVATE);
92 }
93
94 @Override
95 public String getFullyQualifiedName() {
96 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSat3U";
97 }
98
99 @Override
100 public List<String> getParameterNames() {
101 return Arrays.asList("Sat");
102 }
103
104 @Override
105 public List<PParameter> getParameters() {
106 return parameters;
107 }
108
109 @Override
110 public Set<PBody> doGetContainedBodies() {
111 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
112 Set<PBody> bodies = new LinkedHashSet<>();
113 {
114 PBody body = new PBody(this);
115 PVariable var_Sat = body.getOrCreateVariableByName("Sat");
116 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
117 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
118 new ExportedParameter(body, var_Sat, parameter_Sat)
119 ));
120 // CubeSat3U(Sat)
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
122 bodies.add(body);
123 }
124 return bodies;
125 }
126 }
127}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/DirectCommunicationLink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/DirectCommunicationLink.java
new file mode 100644
index 00000000..a2123354
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/DirectCommunicationLink.java
@@ -0,0 +1,162 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
13import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
14import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
15import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
24import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
25
26/**
27 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
28 *
29 * <p>Original source:
30 * <code><pre>
31 * private pattern directCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
32 * DirectedCommunicationLink.source(Link, SourceSubsystem);
33 * DirectedCommunicationLink.target(Link, TargetSubsystem);
34 * CommunicatingElement.commSubsystem(Source, SourceSubsystem);
35 * CommunicatingElement.commSubsystem(Target, TargetSubsystem);
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class DirectCommunicationLink extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private DirectCommunicationLink() {
46 super(GeneratedPQuery.INSTANCE);
47 }
48
49 /**
50 * @return the singleton instance of the query specification
51 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
52 *
53 */
54 public static DirectCommunicationLink instance() {
55 try{
56 return LazyHolder.INSTANCE;
57 } catch (ExceptionInInitializerError err) {
58 throw processInitializerError(err);
59 }
60 }
61
62 /**
63 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink (visibility: PUBLIC, simpleName: DirectCommunicationLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
64 * <b>not</b> at the class load time of the outer class,
65 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink (visibility: PUBLIC, simpleName: DirectCommunicationLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
66 *
67 * <p> This workaround is required e.g. to support recursion.
68 *
69 */
70 private static class LazyHolder {
71 private static final DirectCommunicationLink INSTANCE = new DirectCommunicationLink();
72
73 /**
74 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
75 * This initialization order is required to support indirect recursion.
76 *
77 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
78 *
79 */
80 private static final Object STATIC_INITIALIZER = ensureInitialized();
81
82 public static Object ensureInitialized() {
83 INSTANCE.ensureInitializedInternal();
84 return null;
85 }
86 }
87
88 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
89 private static final DirectCommunicationLink.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Source = new PParameter("Source", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
92
93 private final PParameter parameter_Target = new PParameter("Target", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
94
95 private final List<PParameter> parameters = Arrays.asList(parameter_Source, parameter_Target);
96
97 private GeneratedPQuery() {
98 super(PVisibility.PRIVATE);
99 }
100
101 @Override
102 public String getFullyQualifiedName() {
103 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.directCommunicationLink";
104 }
105
106 @Override
107 public List<String> getParameterNames() {
108 return Arrays.asList("Source","Target");
109 }
110
111 @Override
112 public List<PParameter> getParameters() {
113 return parameters;
114 }
115
116 @Override
117 public Set<PBody> doGetContainedBodies() {
118 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
119 Set<PBody> bodies = new LinkedHashSet<>();
120 {
121 PBody body = new PBody(this);
122 PVariable var_Source = body.getOrCreateVariableByName("Source");
123 PVariable var_Target = body.getOrCreateVariableByName("Target");
124 PVariable var_Link = body.getOrCreateVariableByName("Link");
125 PVariable var_SourceSubsystem = body.getOrCreateVariableByName("SourceSubsystem");
126 PVariable var_TargetSubsystem = body.getOrCreateVariableByName("TargetSubsystem");
127 new TypeConstraint(body, Tuples.flatTupleOf(var_Source), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
129 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
130 new ExportedParameter(body, var_Source, parameter_Source),
131 new ExportedParameter(body, var_Target, parameter_Target)
132 ));
133 // DirectedCommunicationLink.source(Link, SourceSubsystem)
134 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
135 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
136 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
137 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
138 new Equality(body, var__virtual_0_, var_SourceSubsystem);
139 // DirectedCommunicationLink.target(Link, TargetSubsystem)
140 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
141 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
142 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
143 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
144 new Equality(body, var__virtual_1_, var_TargetSubsystem);
145 // CommunicatingElement.commSubsystem(Source, SourceSubsystem)
146 new TypeConstraint(body, Tuples.flatTupleOf(var_Source), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
147 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
148 new TypeConstraint(body, Tuples.flatTupleOf(var_Source, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
149 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
150 new Equality(body, var__virtual_2_, var_SourceSubsystem);
151 // CommunicatingElement.commSubsystem(Target, TargetSubsystem)
152 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
153 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
154 new TypeConstraint(body, Tuples.flatTupleOf(var_Target, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
155 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
156 new Equality(body, var__virtual_3_, var_TargetSubsystem);
157 bodies.add(body);
158 }
159 return bodies;
160 }
161 }
162}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/GroundStationNetwork.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/GroundStationNetwork.java
new file mode 100644
index 00000000..606cdfed
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/GroundStationNetwork.java
@@ -0,0 +1,127 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
13import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
14import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
15import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
17import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
19import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
20import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
22import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
23
24/**
25 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
26 *
27 * <p>Original source:
28 * <code><pre>
29 * private pattern groundStationNetwork(Network : GroundStationNetwork) {
30 * GroundStationNetwork(Network);
31 * }
32 * </pre></code>
33 *
34 * @see GenericPatternMatcher
35 * @see GenericPatternMatch
36 *
37 */
38@SuppressWarnings("all")
39public final class GroundStationNetwork extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
40 private GroundStationNetwork() {
41 super(GeneratedPQuery.INSTANCE);
42 }
43
44 /**
45 * @return the singleton instance of the query specification
46 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
47 *
48 */
49 public static GroundStationNetwork instance() {
50 try{
51 return LazyHolder.INSTANCE;
52 } catch (ExceptionInInitializerError err) {
53 throw processInitializerError(err);
54 }
55 }
56
57 /**
58 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork (visibility: PUBLIC, simpleName: GroundStationNetwork, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
59 * <b>not</b> at the class load time of the outer class,
60 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork (visibility: PUBLIC, simpleName: GroundStationNetwork, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
61 *
62 * <p> This workaround is required e.g. to support recursion.
63 *
64 */
65 private static class LazyHolder {
66 private static final GroundStationNetwork INSTANCE = new GroundStationNetwork();
67
68 /**
69 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
70 * This initialization order is required to support indirect recursion.
71 *
72 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
73 *
74 */
75 private static final Object STATIC_INITIALIZER = ensureInitialized();
76
77 public static Object ensureInitialized() {
78 INSTANCE.ensureInitializedInternal();
79 return null;
80 }
81 }
82
83 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
84 private static final GroundStationNetwork.GeneratedPQuery INSTANCE = new GeneratedPQuery();
85
86 private final PParameter parameter_Network = new PParameter("Network", "satellite.GroundStationNetwork", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "GroundStationNetwork")), PParameterDirection.INOUT);
87
88 private final List<PParameter> parameters = Arrays.asList(parameter_Network);
89
90 private GeneratedPQuery() {
91 super(PVisibility.PRIVATE);
92 }
93
94 @Override
95 public String getFullyQualifiedName() {
96 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.groundStationNetwork";
97 }
98
99 @Override
100 public List<String> getParameterNames() {
101 return Arrays.asList("Network");
102 }
103
104 @Override
105 public List<PParameter> getParameters() {
106 return parameters;
107 }
108
109 @Override
110 public Set<PBody> doGetContainedBodies() {
111 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
112 Set<PBody> bodies = new LinkedHashSet<>();
113 {
114 PBody body = new PBody(this);
115 PVariable var_Network = body.getOrCreateVariableByName("Network");
116 new TypeConstraint(body, Tuples.flatTupleOf(var_Network), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
117 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
118 new ExportedParameter(body, var_Network, parameter_Network)
119 ));
120 // GroundStationNetwork(Network)
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Network), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
122 bodies.add(body);
123 }
124 return bodies;
125 }
126 }
127}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectCommunicationLink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectCommunicationLink.java
new file mode 100644
index 00000000..dee8a83c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectCommunicationLink.java
@@ -0,0 +1,134 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink;
7import java.util.Arrays;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Set;
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
24import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
25
26/**
27 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
28 *
29 * <p>Original source:
30 * <code><pre>
31 * private pattern indirectCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
32 * find directCommunicationLink+(Source, Target);
33 * }
34 * </pre></code>
35 *
36 * @see GenericPatternMatcher
37 * @see GenericPatternMatch
38 *
39 */
40@SuppressWarnings("all")
41public final class IndirectCommunicationLink extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
42 private IndirectCommunicationLink() {
43 super(GeneratedPQuery.INSTANCE);
44 }
45
46 /**
47 * @return the singleton instance of the query specification
48 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
49 *
50 */
51 public static IndirectCommunicationLink instance() {
52 try{
53 return LazyHolder.INSTANCE;
54 } catch (ExceptionInInitializerError err) {
55 throw processInitializerError(err);
56 }
57 }
58
59 /**
60 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink (visibility: PUBLIC, simpleName: IndirectCommunicationLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
61 * <b>not</b> at the class load time of the outer class,
62 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink (visibility: PUBLIC, simpleName: IndirectCommunicationLink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
63 *
64 * <p> This workaround is required e.g. to support recursion.
65 *
66 */
67 private static class LazyHolder {
68 private static final IndirectCommunicationLink INSTANCE = new IndirectCommunicationLink();
69
70 /**
71 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
72 * This initialization order is required to support indirect recursion.
73 *
74 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
75 *
76 */
77 private static final Object STATIC_INITIALIZER = ensureInitialized();
78
79 public static Object ensureInitialized() {
80 INSTANCE.ensureInitializedInternal();
81 return null;
82 }
83 }
84
85 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
86 private static final IndirectCommunicationLink.GeneratedPQuery INSTANCE = new GeneratedPQuery();
87
88 private final PParameter parameter_Source = new PParameter("Source", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
89
90 private final PParameter parameter_Target = new PParameter("Target", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
91
92 private final List<PParameter> parameters = Arrays.asList(parameter_Source, parameter_Target);
93
94 private GeneratedPQuery() {
95 super(PVisibility.PRIVATE);
96 }
97
98 @Override
99 public String getFullyQualifiedName() {
100 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.indirectCommunicationLink";
101 }
102
103 @Override
104 public List<String> getParameterNames() {
105 return Arrays.asList("Source","Target");
106 }
107
108 @Override
109 public List<PParameter> getParameters() {
110 return parameters;
111 }
112
113 @Override
114 public Set<PBody> doGetContainedBodies() {
115 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
116 Set<PBody> bodies = new LinkedHashSet<>();
117 {
118 PBody body = new PBody(this);
119 PVariable var_Source = body.getOrCreateVariableByName("Source");
120 PVariable var_Target = body.getOrCreateVariableByName("Target");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Source), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
122 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
123 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
124 new ExportedParameter(body, var_Source, parameter_Source),
125 new ExportedParameter(body, var_Target, parameter_Target)
126 ));
127 // find directCommunicationLink+(Source, Target)
128 new BinaryTransitiveClosure(body, Tuples.flatTupleOf(var_Source, var_Target), DirectCommunicationLink.instance().getInternalQueryRepresentation());
129 bodies.add(body);
130 }
131 return bodies;
132 }
133 }
134}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectLinkAllowed.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectLinkAllowed.java
new file mode 100644
index 00000000..31381a09
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IndirectLinkAllowed.java
@@ -0,0 +1,134 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed;
7import java.util.Arrays;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Set;
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
24import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
25
26/**
27 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
28 *
29 * <p>Original source:
30 * <code><pre>
31 * private pattern indirectLinkAllowed(From : Spacecraft, To : CommunicatingElement) {
32 * find linkAllowed+(From, To);
33 * }
34 * </pre></code>
35 *
36 * @see GenericPatternMatcher
37 * @see GenericPatternMatch
38 *
39 */
40@SuppressWarnings("all")
41public final class IndirectLinkAllowed extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
42 private IndirectLinkAllowed() {
43 super(GeneratedPQuery.INSTANCE);
44 }
45
46 /**
47 * @return the singleton instance of the query specification
48 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
49 *
50 */
51 public static IndirectLinkAllowed instance() {
52 try{
53 return LazyHolder.INSTANCE;
54 } catch (ExceptionInInitializerError err) {
55 throw processInitializerError(err);
56 }
57 }
58
59 /**
60 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed (visibility: PUBLIC, simpleName: IndirectLinkAllowed, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
61 * <b>not</b> at the class load time of the outer class,
62 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed (visibility: PUBLIC, simpleName: IndirectLinkAllowed, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
63 *
64 * <p> This workaround is required e.g. to support recursion.
65 *
66 */
67 private static class LazyHolder {
68 private static final IndirectLinkAllowed INSTANCE = new IndirectLinkAllowed();
69
70 /**
71 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
72 * This initialization order is required to support indirect recursion.
73 *
74 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
75 *
76 */
77 private static final Object STATIC_INITIALIZER = ensureInitialized();
78
79 public static Object ensureInitialized() {
80 INSTANCE.ensureInitializedInternal();
81 return null;
82 }
83 }
84
85 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
86 private static final IndirectLinkAllowed.GeneratedPQuery INSTANCE = new GeneratedPQuery();
87
88 private final PParameter parameter_From = new PParameter("From", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
89
90 private final PParameter parameter_To = new PParameter("To", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
91
92 private final List<PParameter> parameters = Arrays.asList(parameter_From, parameter_To);
93
94 private GeneratedPQuery() {
95 super(PVisibility.PRIVATE);
96 }
97
98 @Override
99 public String getFullyQualifiedName() {
100 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.indirectLinkAllowed";
101 }
102
103 @Override
104 public List<String> getParameterNames() {
105 return Arrays.asList("From","To");
106 }
107
108 @Override
109 public List<PParameter> getParameters() {
110 return parameters;
111 }
112
113 @Override
114 public Set<PBody> doGetContainedBodies() {
115 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
116 Set<PBody> bodies = new LinkedHashSet<>();
117 {
118 PBody body = new PBody(this);
119 PVariable var_From = body.getOrCreateVariableByName("From");
120 PVariable var_To = body.getOrCreateVariableByName("To");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
122 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
123 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
124 new ExportedParameter(body, var_From, parameter_From),
125 new ExportedParameter(body, var_To, parameter_To)
126 ));
127 // find linkAllowed+(From, To)
128 new BinaryTransitiveClosure(body, Tuples.flatTupleOf(var_From, var_To), LinkAllowed.instance().getInternalQueryRepresentation());
129 bodies.add(body);
130 }
131 return bodies;
132 }
133 }
134}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/LinkAllowed.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/LinkAllowed.java
new file mode 100644
index 00000000..7118d657
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/LinkAllowed.java
@@ -0,0 +1,185 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna;
8import java.util.Arrays;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Set;
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
14import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
15import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
16import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
27import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
28
29/**
30 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
31 *
32 * <p>Original source:
33 * <code><pre>
34 * private pattern linkAllowed(From : Spacecraft, To : CommunicatingElement) {
35 * find matchingAntenna(From, To, _);
36 * neg find cubeSat3U(From);
37 * } or {
38 * find matchingAntenna(From, To, TransceiverBand::UHF);
39 * CubeSat3U(From);
40 * } or {
41 * find matchingAntenna(From, To, _);
42 * CubeSat3U(From);
43 * GroundStationNetwork(To);
44 * }
45 * </pre></code>
46 *
47 * @see GenericPatternMatcher
48 * @see GenericPatternMatch
49 *
50 */
51@SuppressWarnings("all")
52public final class LinkAllowed extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
53 private LinkAllowed() {
54 super(GeneratedPQuery.INSTANCE);
55 }
56
57 /**
58 * @return the singleton instance of the query specification
59 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
60 *
61 */
62 public static LinkAllowed instance() {
63 try{
64 return LazyHolder.INSTANCE;
65 } catch (ExceptionInInitializerError err) {
66 throw processInitializerError(err);
67 }
68 }
69
70 /**
71 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed (visibility: PUBLIC, simpleName: LinkAllowed, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
72 * <b>not</b> at the class load time of the outer class,
73 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed (visibility: PUBLIC, simpleName: LinkAllowed, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
74 *
75 * <p> This workaround is required e.g. to support recursion.
76 *
77 */
78 private static class LazyHolder {
79 private static final LinkAllowed INSTANCE = new LinkAllowed();
80
81 /**
82 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
83 * This initialization order is required to support indirect recursion.
84 *
85 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
86 *
87 */
88 private static final Object STATIC_INITIALIZER = ensureInitialized();
89
90 public static Object ensureInitialized() {
91 INSTANCE.ensureInitializedInternal();
92 return null;
93 }
94 }
95
96 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
97 private static final LinkAllowed.GeneratedPQuery INSTANCE = new GeneratedPQuery();
98
99 private final PParameter parameter_From = new PParameter("From", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
100
101 private final PParameter parameter_To = new PParameter("To", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
102
103 private final List<PParameter> parameters = Arrays.asList(parameter_From, parameter_To);
104
105 private GeneratedPQuery() {
106 super(PVisibility.PRIVATE);
107 }
108
109 @Override
110 public String getFullyQualifiedName() {
111 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.linkAllowed";
112 }
113
114 @Override
115 public List<String> getParameterNames() {
116 return Arrays.asList("From","To");
117 }
118
119 @Override
120 public List<PParameter> getParameters() {
121 return parameters;
122 }
123
124 @Override
125 public Set<PBody> doGetContainedBodies() {
126 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
127 Set<PBody> bodies = new LinkedHashSet<>();
128 {
129 PBody body = new PBody(this);
130 PVariable var_From = body.getOrCreateVariableByName("From");
131 PVariable var_To = body.getOrCreateVariableByName("To");
132 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
133 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
134 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
135 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
136 new ExportedParameter(body, var_From, parameter_From),
137 new ExportedParameter(body, var_To, parameter_To)
138 ));
139 // find matchingAntenna(From, To, _)
140 new PositivePatternCall(body, Tuples.flatTupleOf(var_From, var_To, var___0_), MatchingAntenna.instance().getInternalQueryRepresentation());
141 // neg find cubeSat3U(From)
142 new NegativePatternCall(body, Tuples.flatTupleOf(var_From), CubeSat3U.instance().getInternalQueryRepresentation());
143 bodies.add(body);
144 }
145 {
146 PBody body = new PBody(this);
147 PVariable var_From = body.getOrCreateVariableByName("From");
148 PVariable var_To = body.getOrCreateVariableByName("To");
149 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
150 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
151 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
152 new ExportedParameter(body, var_From, parameter_From),
153 new ExportedParameter(body, var_To, parameter_To)
154 ));
155 // find matchingAntenna(From, To, TransceiverBand::UHF)
156 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
157 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "UHF").getInstance());
158 new PositivePatternCall(body, Tuples.flatTupleOf(var_From, var_To, var__virtual_0_), MatchingAntenna.instance().getInternalQueryRepresentation());
159 // CubeSat3U(From)
160 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
161 bodies.add(body);
162 }
163 {
164 PBody body = new PBody(this);
165 PVariable var_From = body.getOrCreateVariableByName("From");
166 PVariable var_To = body.getOrCreateVariableByName("To");
167 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
168 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
169 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
170 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
171 new ExportedParameter(body, var_From, parameter_From),
172 new ExportedParameter(body, var_To, parameter_To)
173 ));
174 // find matchingAntenna(From, To, _)
175 new PositivePatternCall(body, Tuples.flatTupleOf(var_From, var_To, var___0_), MatchingAntenna.instance().getInternalQueryRepresentation());
176 // CubeSat3U(From)
177 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CubeSat3U")));
178 // GroundStationNetwork(To)
179 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
180 bodies.add(body);
181 }
182 return bodies;
183 }
184 }
185}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MatchingAntenna.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MatchingAntenna.java
new file mode 100644
index 00000000..3a52ad1d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MatchingAntenna.java
@@ -0,0 +1,179 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EDataType;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
13import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
14import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
15import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
16import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
17import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
18import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
26import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
27
28/**
29 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
30 *
31 * <p>Original source:
32 * <code><pre>
33 * private pattern matchingAntenna(From : Spacecraft, To : CommunicatingElement, Band : TransceiverBand) {
34 * CommunicatingElement.commSubsystem.band(From, Band);
35 * CommunicatingElement.commSubsystem.band(To, Band);
36 * CommunicatingElement.commSubsystem.gain(From, Gain);
37 * CommunicatingElement.commSubsystem.gain(To, Gain);
38 * }
39 * </pre></code>
40 *
41 * @see GenericPatternMatcher
42 * @see GenericPatternMatch
43 *
44 */
45@SuppressWarnings("all")
46public final class MatchingAntenna extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
47 private MatchingAntenna() {
48 super(GeneratedPQuery.INSTANCE);
49 }
50
51 /**
52 * @return the singleton instance of the query specification
53 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
54 *
55 */
56 public static MatchingAntenna instance() {
57 try{
58 return LazyHolder.INSTANCE;
59 } catch (ExceptionInInitializerError err) {
60 throw processInitializerError(err);
61 }
62 }
63
64 /**
65 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna (visibility: PUBLIC, simpleName: MatchingAntenna, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
66 * <b>not</b> at the class load time of the outer class,
67 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna (visibility: PUBLIC, simpleName: MatchingAntenna, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
68 *
69 * <p> This workaround is required e.g. to support recursion.
70 *
71 */
72 private static class LazyHolder {
73 private static final MatchingAntenna INSTANCE = new MatchingAntenna();
74
75 /**
76 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
77 * This initialization order is required to support indirect recursion.
78 *
79 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
80 *
81 */
82 private static final Object STATIC_INITIALIZER = ensureInitialized();
83
84 public static Object ensureInitialized() {
85 INSTANCE.ensureInitializedInternal();
86 return null;
87 }
88 }
89
90 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
91 private static final MatchingAntenna.GeneratedPQuery INSTANCE = new GeneratedPQuery();
92
93 private final PParameter parameter_From = new PParameter("From", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
94
95 private final PParameter parameter_To = new PParameter("To", "satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
96
97 private final PParameter parameter_Band = new PParameter("Band", "satellite.TransceiverBand", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "TransceiverBand")), PParameterDirection.INOUT);
98
99 private final List<PParameter> parameters = Arrays.asList(parameter_From, parameter_To, parameter_Band);
100
101 private GeneratedPQuery() {
102 super(PVisibility.PRIVATE);
103 }
104
105 @Override
106 public String getFullyQualifiedName() {
107 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.matchingAntenna";
108 }
109
110 @Override
111 public List<String> getParameterNames() {
112 return Arrays.asList("From","To","Band");
113 }
114
115 @Override
116 public List<PParameter> getParameters() {
117 return parameters;
118 }
119
120 @Override
121 public Set<PBody> doGetContainedBodies() {
122 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
123 Set<PBody> bodies = new LinkedHashSet<>();
124 {
125 PBody body = new PBody(this);
126 PVariable var_From = body.getOrCreateVariableByName("From");
127 PVariable var_To = body.getOrCreateVariableByName("To");
128 PVariable var_Band = body.getOrCreateVariableByName("Band");
129 PVariable var_Gain = body.getOrCreateVariableByName("Gain");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Band), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
133 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
134 new ExportedParameter(body, var_From, parameter_From),
135 new ExportedParameter(body, var_To, parameter_To),
136 new ExportedParameter(body, var_Band, parameter_Band)
137 ));
138 // CommunicatingElement.commSubsystem.band(From, Band)
139 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
140 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
141 new TypeConstraint(body, Tuples.flatTupleOf(var_From, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
142 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
143 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
144 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
145 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
146 new Equality(body, var__virtual_1_, var_Band);
147 // CommunicatingElement.commSubsystem.band(To, Band)
148 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
149 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
150 new TypeConstraint(body, Tuples.flatTupleOf(var_To, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
151 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
152 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
153 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
154 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
155 new Equality(body, var__virtual_3_, var_Band);
156 // CommunicatingElement.commSubsystem.gain(From, Gain)
157 new TypeConstraint(body, Tuples.flatTupleOf(var_From), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
158 PVariable var__virtual_4_ = body.getOrCreateVariableByName(".virtual{4}");
159 new TypeConstraint(body, Tuples.flatTupleOf(var_From, var__virtual_4_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
160 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
161 PVariable var__virtual_5_ = body.getOrCreateVariableByName(".virtual{5}");
162 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_, var__virtual_5_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
163 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_5_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
164 new Equality(body, var__virtual_5_, var_Gain);
165 // CommunicatingElement.commSubsystem.gain(To, Gain)
166 new TypeConstraint(body, Tuples.flatTupleOf(var_To), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
167 PVariable var__virtual_6_ = body.getOrCreateVariableByName(".virtual{6}");
168 new TypeConstraint(body, Tuples.flatTupleOf(var_To, var__virtual_6_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
169 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_6_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
170 PVariable var__virtual_7_ = body.getOrCreateVariableByName(".virtual{7}");
171 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_6_, var__virtual_7_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "gain")));
172 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_7_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "AntennaGain")));
173 new Equality(body, var__virtual_7_, var_Gain);
174 bodies.add(body);
175 }
176 return bodies;
177 }
178 }
179}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SatelliteQueriesAll.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SatelliteQueriesAll.java
new file mode 100644
index 00000000..36fa4557
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SatelliteQueriesAll.java
@@ -0,0 +1,123 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLinkDoesNotStartAtContainingElement;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CommunicationLoop;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoPotentialLinkToGroundStation;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SmallSat;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SpacecraftOfKind;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink;
18import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.UhfAntennaGainNotLow;
19import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.XAntennaGainNotMedium;
20import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads;
21import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand;
22import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf;
23import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain;
24import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow;
25import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium;
26import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CubeSat3U;
27import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink;
28import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork;
29import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
30import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectLinkAllowed;
31import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.LinkAllowed;
32import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MatchingAntenna;
33import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload;
34import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
35
36/**
37 * A pattern group formed of all patterns defined in SatelliteQueries.vql.
38 *
39 * <p>A private group that includes private patterns as well. Only intended use case is for pattern testing.
40 *
41 * <p> From package hu.bme.mit.inf.dslreasoner.domains.satellite.queries, the group contains the definition of the following patterns: <ul>
42 * <li>communicationLinkDoesNotStartAtContainingElement</li>
43 * <li>notEnoughInterferometryPayloads</li>
44 * <li>atLeastTwoInterferometryPayloads</li>
45 * <li>spacecraftWithInterferometryPayload</li>
46 * <li>noLinkToGroundStation</li>
47 * <li>noPotentialLinkToGroundStation</li>
48 * <li>indirectLinkAllowed</li>
49 * <li>linkAllowed</li>
50 * <li>matchingAntenna</li>
51 * <li>cubeSat3U</li>
52 * <li>communicationLoop</li>
53 * <li>indirectCommunicationLink</li>
54 * <li>directCommunicationLink</li>
55 * <li>incompatibleSourceAndTargetBand</li>
56 * <li>commSubsystemBand</li>
57 * <li>incompatibleSourceAndTargetGain</li>
58 * <li>commSubsystemGain</li>
59 * <li>uhfAntennaGainNotLow</li>
60 * <li>commSubsystemGainLow</li>
61 * <li>xAntennaGainNotMedium</li>
62 * <li>commSubsystemGainMedium</li>
63 * <li>kaAntennaGainLow</li>
64 * <li>threeUCubeSatWithNonUhfCrossLink</li>
65 * <li>commSubsystemBandUhf</li>
66 * <li>groundStationNetwork</li>
67 * <li>cubeSatWithKaAntenna</li>
68 * <li>smallSat</li>
69 * <li>spacecraftOfKind</li>
70 * </ul>
71 *
72 * @see IQueryGroup
73 *
74 */
75@SuppressWarnings("all")
76public final class SatelliteQueriesAll extends BaseGeneratedPatternGroup {
77 /**
78 * Access the pattern group.
79 *
80 * @return the singleton instance of the group
81 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
82 *
83 */
84 public static SatelliteQueriesAll instance() {
85 if (INSTANCE == null) {
86 INSTANCE = new SatelliteQueriesAll();
87 }
88 return INSTANCE;
89 }
90
91 private static SatelliteQueriesAll INSTANCE;
92
93 private SatelliteQueriesAll() {
94 querySpecifications.add(CommunicationLinkDoesNotStartAtContainingElement.instance());
95 querySpecifications.add(NotEnoughInterferometryPayloads.instance());
96 querySpecifications.add(AtLeastTwoInterferometryPayloads.instance());
97 querySpecifications.add(SpacecraftWithInterferometryPayload.instance());
98 querySpecifications.add(NoLinkToGroundStation.instance());
99 querySpecifications.add(NoPotentialLinkToGroundStation.instance());
100 querySpecifications.add(IndirectLinkAllowed.instance());
101 querySpecifications.add(LinkAllowed.instance());
102 querySpecifications.add(MatchingAntenna.instance());
103 querySpecifications.add(CubeSat3U.instance());
104 querySpecifications.add(CommunicationLoop.instance());
105 querySpecifications.add(IndirectCommunicationLink.instance());
106 querySpecifications.add(DirectCommunicationLink.instance());
107 querySpecifications.add(IncompatibleSourceAndTargetBand.instance());
108 querySpecifications.add(CommSubsystemBand.instance());
109 querySpecifications.add(IncompatibleSourceAndTargetGain.instance());
110 querySpecifications.add(CommSubsystemGain.instance());
111 querySpecifications.add(UhfAntennaGainNotLow.instance());
112 querySpecifications.add(CommSubsystemGainLow.instance());
113 querySpecifications.add(XAntennaGainNotMedium.instance());
114 querySpecifications.add(CommSubsystemGainMedium.instance());
115 querySpecifications.add(KaAntennaGainLow.instance());
116 querySpecifications.add(ThreeUCubeSatWithNonUhfCrossLink.instance());
117 querySpecifications.add(CommSubsystemBandUhf.instance());
118 querySpecifications.add(GroundStationNetwork.instance());
119 querySpecifications.add(CubeSatWithKaAntenna.instance());
120 querySpecifications.add(SmallSat.instance());
121 querySpecifications.add(SpacecraftOfKind.instance());
122 }
123}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithInterferometryPayload.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithInterferometryPayload.java
new file mode 100644
index 00000000..9566c4c5
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithInterferometryPayload.java
@@ -0,0 +1,149 @@
1/**
2 * Generated from platform:/resource/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
3 */
4package hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal;
5
6import java.util.Arrays;
7import java.util.LinkedHashSet;
8import java.util.List;
9import java.util.Set;
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
12import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
13import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
14import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
15import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
16import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
17import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
22import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
23import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
24import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
25
26/**
27 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
28 *
29 * <p>Original source:
30 * <code><pre>
31 * private pattern spacecraftWithInterferometryPayload(Mission : ConstellationMission, Spacecraft : Spacecraft) {
32 * ConstellationMission.spacecraft(Mission, Spacecraft);
33 * Spacecraft.payload(Spacecraft, Payload);
34 * InterferometryPayload(Payload);
35 * }
36 * </pre></code>
37 *
38 * @see GenericPatternMatcher
39 * @see GenericPatternMatch
40 *
41 */
42@SuppressWarnings("all")
43public final class SpacecraftWithInterferometryPayload extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
44 private SpacecraftWithInterferometryPayload() {
45 super(GeneratedPQuery.INSTANCE);
46 }
47
48 /**
49 * @return the singleton instance of the query specification
50 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
51 *
52 */
53 public static SpacecraftWithInterferometryPayload instance() {
54 try{
55 return LazyHolder.INSTANCE;
56 } catch (ExceptionInInitializerError err) {
57 throw processInitializerError(err);
58 }
59 }
60
61 /**
62 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload (visibility: PUBLIC, simpleName: SpacecraftWithInterferometryPayload, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
63 * <b>not</b> at the class load time of the outer class,
64 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload (visibility: PUBLIC, simpleName: SpacecraftWithInterferometryPayload, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
65 *
66 * <p> This workaround is required e.g. to support recursion.
67 *
68 */
69 private static class LazyHolder {
70 private static final SpacecraftWithInterferometryPayload INSTANCE = new SpacecraftWithInterferometryPayload();
71
72 /**
73 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
74 * This initialization order is required to support indirect recursion.
75 *
76 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
77 *
78 */
79 private static final Object STATIC_INITIALIZER = ensureInitialized();
80
81 public static Object ensureInitialized() {
82 INSTANCE.ensureInitializedInternal();
83 return null;
84 }
85 }
86
87 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
88 private static final SpacecraftWithInterferometryPayload.GeneratedPQuery INSTANCE = new GeneratedPQuery();
89
90 private final PParameter parameter_Mission = new PParameter("Mission", "satellite.ConstellationMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "ConstellationMission")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
93
94 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Spacecraft);
95
96 private GeneratedPQuery() {
97 super(PVisibility.PRIVATE);
98 }
99
100 @Override
101 public String getFullyQualifiedName() {
102 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftWithInterferometryPayload";
103 }
104
105 @Override
106 public List<String> getParameterNames() {
107 return Arrays.asList("Mission","Spacecraft");
108 }
109
110 @Override
111 public List<PParameter> getParameters() {
112 return parameters;
113 }
114
115 @Override
116 public Set<PBody> doGetContainedBodies() {
117 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
118 Set<PBody> bodies = new LinkedHashSet<>();
119 {
120 PBody body = new PBody(this);
121 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
122 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
123 PVariable var_Payload = body.getOrCreateVariableByName("Payload");
124 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
125 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
126 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
127 new ExportedParameter(body, var_Mission, parameter_Mission),
128 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft)
129 ));
130 // ConstellationMission.spacecraft(Mission, Spacecraft)
131 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
132 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
133 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
134 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
135 new Equality(body, var__virtual_0_, var_Spacecraft);
136 // Spacecraft.payload(Spacecraft, Payload)
137 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
138 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
139 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "payload")));
140 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Payload")));
141 new Equality(body, var__virtual_1_, var_Payload);
142 // InterferometryPayload(Payload)
143 new TypeConstraint(body, Tuples.flatTupleOf(var_Payload), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryPayload")));
144 bodies.add(body);
145 }
146 return bodies;
147 }
148 }
149}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
new file mode 100644
index 00000000..0207cfe3
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql
@@ -0,0 +1,344 @@
1package hu.bme.mit.inf.dslreasoner.domains.satellite.queries
2
3import "http://www.example.org/satellite"
4
5@Constraint(severity = "error", key = {Link},
6 message = "Communication links must start from the containing element.")
7pattern communicationLinkDoesNotStartAtContainingElement(Link : DirectedCommunicationLink) {
8 CommunicatingElement.communicationLink(Element, Link);
9 DirectedCommunicationLink.source(Link, SourceComm);
10 CommunicatingElement.commSubsystem(SourceElement, SourceComm);
11 Element != SourceElement;
12}
13
14// At least two spacecraft must have the interferometry payload configured
15
16@Constraint(severity = "error", key = {Mission},
17 message = "Interferometry mission needs at least two spacecraft configured with the interferometry payload.")
18pattern notEnoughInterferometryPayloads(Mission : InterferometryMission) {
19 InterferometryMission(Mission);
20 neg find atLeastTwoInterferometryPayloads(Mission);
21}
22
23private pattern atLeastTwoInterferometryPayloads(Mission : InterferometryMission) {
24 find spacecraftWithInterferometryPayload(Mission, Spacecraft1);
25 find spacecraftWithInterferometryPayload(Mission, Spacecraft2);
26 Spacecraft1 != Spacecraft2;
27}
28
29private pattern spacecraftWithInterferometryPayload(Mission : ConstellationMission, Spacecraft : Spacecraft) {
30 ConstellationMission.spacecraft(Mission, Spacecraft);
31 Spacecraft.payload(Spacecraft, Payload);
32 InterferometryPayload(Payload);
33}
34
35// All spacecraft must have some communication path to the ground station
36
37@Constraint(severity = "error", key = {Spacecraft},
38 message = "Spacecraft has no communication path to the ground station.")
39pattern noLinkToGroundStation(Spacecraft : Spacecraft) {
40 ConstellationMission.groundStationNetwork(Mission, GroundStation);
41 ConstellationMission.spacecraft(Mission, Spacecraft);
42 neg find indirectCommunicationLink(Spacecraft, GroundStation);
43}
44
45@Constraint(severity = "error", key = {Spacecraft},
46 message = "Spacecraft has no potential communication path to the ground station.")
47pattern noPotentialLinkToGroundStation(Spacecraft : Spacecraft) {
48 ConstellationMission.groundStationNetwork(Mission, GroundStation);
49 ConstellationMission.spacecraft(Mission, Spacecraft);
50 neg find indirectLinkAllowed(Spacecraft, GroundStation);
51}
52
53private pattern indirectLinkAllowed(From : Spacecraft, To : CommunicatingElement) {
54 find linkAllowed+(From, To);
55}
56
57private pattern linkAllowed(From : Spacecraft, To : CommunicatingElement) {
58 find matchingAntenna(From, To, _);
59 neg find cubeSat3U(From);
60} or {
61 find matchingAntenna(From, To, TransceiverBand::UHF);
62 CubeSat3U(From);
63} or {
64 find matchingAntenna(From, To, _);
65 CubeSat3U(From);
66 GroundStationNetwork(To);
67}
68
69private pattern matchingAntenna(From : Spacecraft, To : CommunicatingElement, Band : TransceiverBand) {
70 CommunicatingElement.commSubsystem.band(From, Band);
71 CommunicatingElement.commSubsystem.band(To, Band);
72 CommunicatingElement.commSubsystem.gain(From, Gain);
73 CommunicatingElement.commSubsystem.gain(To, Gain);
74}
75
76private pattern cubeSat3U(Sat : CubeSat3U) {
77 CubeSat3U(Sat);
78}
79
80// No communication loops may exist
81// No spacecraft may directly communicate with itself
82
83@Constraint(severity = "error", key = {Element},
84 message = "Communication loop.")
85pattern communicationLoop(Element : CommunicatingElement) {
86 find indirectCommunicationLink(Element, Element);
87}
88
89private pattern indirectCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
90 find directCommunicationLink+(Source, Target);
91}
92
93private pattern directCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
94 DirectedCommunicationLink.source(Link, SourceSubsystem);
95 DirectedCommunicationLink.target(Link, TargetSubsystem);
96 CommunicatingElement.commSubsystem(Source, SourceSubsystem);
97 CommunicatingElement.commSubsystem(Target, TargetSubsystem);
98}
99
100// Source and target communication systems must be compatible.
101
102@Constraint(severity = "error", key = {Link},
103 message = "Two ends of a communication link must use the same band.")
104pattern incompatibleSourceAndTargetBand(Link : DirectedCommunicationLink) {
105 DirectedCommunicationLink.source(Link, SourceSubsystem);
106 DirectedCommunicationLink.target(Link, TargetSubsystem);
107 CommSubsystem.band(SourceSubsystem, Band);
108 neg find commSubsystemBand(TargetSubsystem, Band);
109}
110
111private pattern commSubsystemBand(Comm : CommSubsystem, Band : TransceiverBand) {
112 CommSubsystem.band(Comm, Band);
113}
114
115@Constraint(severity = "error", key = {Link},
116 message = "Two ends of a communication link must use the same antenna gain.")
117pattern incompatibleSourceAndTargetGain(Link : DirectedCommunicationLink) {
118 DirectedCommunicationLink.source(Link, SourceSubsystem);
119 DirectedCommunicationLink.target(Link, TargetSubsystem);
120 CommSubsystem.gain(SourceSubsystem, Gain);
121 neg find commSubsystemGain(TargetSubsystem, Gain);
122}
123
124private pattern commSubsystemGain(Comm : CommSubsystem, Gain : AntennaGain) {
125 CommSubsystem.gain(Comm, Gain);
126}
127
128// UHF-band transmitters may only be combined with a low gain antenna
129
130@Constraint(severity = "error", key = {Comm},
131 message = "UHF transceiver must be combined with a low gain antenna.")
132pattern uhfAntennaGainNotLow(Comm : CommSubsystem) {
133 CommSubsystem.band(Comm, TransceiverBand::UHF);
134 // VIATRA will fail to infer a type constraint for the virtual variable introduced
135 // when an enum literal appears in a negative pattern call, so we use a helper pattern
136 // instead of neg find commSubsystemGain(Comm, AntennaGain::LOW);
137 neg find commSubsystemGainLow(Comm);
138}
139
140private pattern commSubsystemGainLow(Comm : CommSubsystem) {
141 CommSubsystem.gain(Comm, AntennaGain::LOW);
142}
143
144// X-band transmitters may only be combined with a medium gain antenna
145
146@Constraint(severity = "error", key = {Comm},
147 message = "X-band transceiver must be combined with a medium gain antenna.")
148pattern xAntennaGainNotMedium(Comm : CommSubsystem) {
149 CommSubsystem.band(Comm, TransceiverBand::X);
150 neg find commSubsystemGainMedium(Comm);
151}
152
153private pattern commSubsystemGainMedium(Comm : CommSubsystem) {
154 CommSubsystem.gain(Comm, AntennaGain::MEDIUM);
155}
156
157// Ka-band transmitters may only be combined with a medium or high gain antenna
158
159@Constraint(severity = "error", key = {Comm},
160 message = "Ka-band transceiver must be combined with a medium or high gain antenna.")
161pattern kaAntennaGainLow(Comm : CommSubsystem) {
162 CommSubsystem.band(Comm, TransceiverBand::Ka);
163 CommSubsystem.gain(Comm, AntennaGain::LOW);
164}
165
166// 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
167// but cross-link using UHF
168
169@Constraint(severity = "error", key = {Sat},
170 message = "3U CubeSats can only cross-link using UHF.")
171pattern threeUCubeSatWithNonUhfCrossLink(Sat : CubeSat3U) {
172 CommunicatingElement.commSubsystem(Sat, SourceComm);
173 neg find commSubsystemBandUhf(SourceComm);
174 DirectedCommunicationLink.source(Link, SourceComm);
175 DirectedCommunicationLink.target(Link, TargetComm);
176 CommunicatingElement.commSubsystem(Target, TargetComm);
177 neg find groundStationNetwork(Target);
178}
179
180private pattern commSubsystemBandUhf(Comm : CommSubsystem) {
181 CommSubsystem.band(Comm, TransceiverBand::UHF);
182}
183
184private pattern groundStationNetwork(Network : GroundStationNetwork) {
185 GroundStationNetwork(Network);
186}
187
188// Only a Small Satellite can be configured with a Ka-band communication system
189
190@Constraint(severity = "error", key = {Spacecraft},
191 message = "Only a Small Satellite can be configured with a Ka-band communication system.")
192pattern cubeSatWithKaAntenna(Spacecraft : Spacecraft) {
193 CommunicatingElement.commSubsystem.band(Spacecraft, TransceiverBand::Ka);
194 neg find smallSat(Spacecraft);
195}
196
197pattern smallSat(Sat : SmallSat) {
198 SmallSat(Sat);
199}
200
201@QueryBasedFeature(feature = "kind")
202pattern spacecraftOfKind(Spacecraft : Spacecraft, Kind : SpacecraftKind) {
203 CubeSat3U(Spacecraft);
204 Kind == SpacecraftKind::CubeSat3U;
205} or {
206 CubeSat6U(Spacecraft);
207 Kind == SpacecraftKind::CubeSat6U;
208} or {
209 SmallSat(Spacecraft);
210 Kind == SpacecraftKind::SmallSat;
211}
212
213/*
214//
215// Metrics
216//
217
218// Coverage
219
220pattern coverageMetric(Coverage : java Double) {
221 Coverage == sum find missionCoverage(_, #_);
222}
223
224private pattern missionCoverage(Mission : InterferometryMission, Coverage : java Double) {
225 InterferometryMission.observationTime(Mission, ObservationTime);
226 ObserverCount == count find spacecraftWithInterferometryPayload(Mission, _);
227 Coverage == eval(Math.pow(1 - 2.0 / ObserverCount, 1 + 9 * (1.0 / ObservationTime)) + 0.05 * ObservationTime / 3);
228}
229
230// Time
231
232pattern timeMetric(Time : java Double) {
233 Time == sum find missionTime(_, #_);
234}
235
236private pattern missionTime(Mission : InterferometryMission, Time : java Double) {
237 InterferometryMission.observationTime(Mission, ObservationTime);
238 TrasmitTime == sum find transmitTime(Mission, _, #_);
239 Time == eval(TrasmitTime + 60.0 * ObservationTime);
240}
241
242private pattern transmitTime(Mission : InterferometryMission, Spacecraft : Spacecraft, TransmitTime : java Double) {
243 ConstellationMission.spacecraft(Mission, Spacecraft);
244 find scienceData(Spacecraft, ScienceData);
245 IncomingData == sum find incomingData(Spacecraft, _, #_);
246 find transmitRate(Spacecraft, TransmitRate);
247 TransmitTime == eval((ScienceData + IncomingData) / (7.5 * TransmitRate));
248}
249
250private pattern incomingData(Spacecraft : Spacecraft, Source : Spacecraft, Data : java Double) {
251 find indirectCommunicationLink(Source, Spacecraft);
252 find scienceData(Source, Data);
253}
254
255private pattern scienceData(Spacecraft : Spacecraft, Data : java Double) {
256 ConstellationMission.spacecraft(Mission, Spacecraft);
257 InterferometryMission.observationTime(Mission, ObservationTime);
258 Data == eval(12.0 * ObservationTime);
259}
260
261private pattern transmitRate(Spacecraft : Spacecraft, TransmitRate : java Double) {
262 find spacecraftUplink(Spacecraft, TransceiverBand::UHF, Target);
263 Spacecraft(Target);
264 TransmitRate == 5.0;
265} or {
266 find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
267 Spacecraft(Target);
268 TransmitRate == 1.6;
269} or {
270 find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
271 GroundStationNetwork(Target);
272 TransmitRate == 0.7;
273} or {
274 find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
275 Spacecraft(Target);
276 TransmitRate == 220.0;
277} or {
278 find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
279 GroundStationNetwork(Target);
280 TransmitRate == 80.0;
281}
282
283private pattern spacecraftUplink(Spacecraft : Spacecraft, Band : TransceiverBand, Target : CommunicatingElement) {
284 CommunicatingElement.communicationLink(Spacecraft, Link);
285 DirectedCommunicationLink.source.band(Link, Band);
286 DirectedCommunicationLink.target(Link, TargetSubsystem);
287 CommunicatingElement.commSubsystem(Target, TargetSubsystem);
288}
289
290// Cost
291
292pattern costMetric(Cost : java Double) {
293 Cost == sum find missionCost(_, #_);
294}
295
296private pattern missionCost(Mission : InterferometryMission, Cost : java Double) {
297 InterferometryMission.observationTime(Mission, ObservationTime);
298 SpacecraftCost == sum find spacecraftCost(Mission, _, #_);
299 Cost == eval(SpacecraftCost + 100000.0 * ObservationTime);
300}
301
302private pattern spacecraftCost(Mission : InterferometryMission, Spacecraft : Spacecraft, Cost : java Double) {
303 ConstellationMission.spacecraft(Mission, Spacecraft);
304 find spacecraftOfKind(Spacecraft, Kind);
305 KindCount == count find spacecraftOfKind(_, Kind);
306 find basePrice(Spacecraft, BasePrice);
307 find interferometryPayloadCost(Spacecraft, InterferometryPayloadCost);
308 find additionalCommSubsystemCost(Spacecraft, AdditionalCommSubsystemCost);
309 Cost == eval(BasePrice * Math.pow(KindCount, -0.25) + InterferometryPayloadCost + AdditionalCommSubsystemCost);
310}
311
312private pattern basePrice(Spacecraft : Spacecraft, BasePrice : java Double) {
313 CubeSat3U(Spacecraft):
314 BasePrice == 250000.0;
315} or {
316 CubeSat6U(Spacecraft):
317 BasePrice == 750000.0;
318} or {
319 SmallSat(Spacecraft):
320 BasePrice == 3000000.0;
321}
322
323private pattern interferometryPayloadCost(Spacecraft : Spacecraft, Cost : java Double) {
324 find spacecraftWithInterferometryPayload(_, Spacecraft);
325 Cost == 50000.0;
326} or {
327 neg find spacecraftWithInterferometryPayload(_, Spacecraft);
328 Cost == 0.0;
329}
330
331private pattern additionalCommSubsystemCost(Spacecraft : Spacecraft, Cost : java Double) {
332 find spacecraftWithTwoCommSubsystems(Spacecraft);
333 Cost == 100000.0;
334} or {
335 neg find spacecraftWithTwoCommSubsystems(Spacecraft);
336 Cost == 0.0;
337}
338
339private pattern spacecraftWithTwoCommSubsystems(Spacecraft : Spacecraft) {
340 Spacecraft.commSubsystem(Spacecraft, Subsystem1);
341 Spacecraft.commSubsystem(Spacecraft, Subsystem2);
342 Subsystem1 != Subsystem2;
343}
344*/ \ No newline at end of file
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend
new file mode 100644
index 00000000..592348e8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend
@@ -0,0 +1,13 @@
1package hu.bme.mit.inf.dslreasoner.domains.satellite.runner
2
3import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor
4
5final class SatelliteGeneratorMain {
6 private new() {
7 throw new IllegalStateException("This is a static utility class and should not be instantiated directly.")
8 }
9
10 static def void main(String[] args) {
11 println(StandaloneScriptExecutor.executeScript("configs/generation.vsconfig"))
12 }
13}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.SatelliteGeneratorMain.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.SatelliteGeneratorMain.xtendbin
new file mode 100644
index 00000000..2f1887a8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.SatelliteGeneratorMain.xtendbin
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.gitignore
new file mode 100644
index 00000000..928d3658
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/.gitignore
@@ -0,0 +1 @@
/.SatelliteGeneratorMain.java._trace
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.java
new file mode 100644
index 00000000..f6890163
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.java
@@ -0,0 +1,15 @@
1package hu.bme.mit.inf.dslreasoner.domains.satellite.runner;
2
3import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
4import org.eclipse.xtext.xbase.lib.InputOutput;
5
6@SuppressWarnings("all")
7public final class SatelliteGeneratorMain {
8 private SatelliteGeneratorMain() {
9 throw new IllegalStateException("This is a static utility class and should not be instantiated directly.");
10 }
11
12 public static void main(final String[] args) {
13 InputOutput.<String>println(StandaloneScriptExecutor.executeScript("configs/generation.vsconfig"));
14 }
15}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
index f15381b2..73ebb2c7 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
@@ -6,16 +6,16 @@ Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: . 6Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm, 9Export-Package: hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm,
10 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl, 10 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl,
11 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.util, 11 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.util,
12 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu, 12 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu,
13 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated, 13 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated,
14 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.util, 14 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.util,
15 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.util 15 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.util
16Require-Bundle: org.eclipse.viatra.query.runtime, 16Require-Bundle: org.eclipse.viatra.query.runtime,
17 org.eclipse.core.runtime, 17 org.eclipse.core.runtime,
18 org.eclipse.emf.ecore;visibility:=reexport, 18 org.eclipse.emf.ecore;visibility:=reexport,
19 com.google.guava;bundle-version="15.0.0" 19 com.google.guava;bundle-version="15.0.0"
20Bundle-RequiredExecutionEnvironment: JavaSE-1.8 20Bundle-RequiredExecutionEnvironment: JavaSE-1.8
21Bundle-ActivationPolicy: lazy 21Bundle-ActivationPolicy: lazy
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
index 8069f168..993ec75d 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
@@ -1,103 +1,103 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin> 1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension point="org.eclipse.emf.ecore.generated_package"> 2 <extension point="org.eclipse.emf.ecore.generated_package">
3 <!-- @generated yakindu_simplified --> 3 <!-- @generated yakindu_simplified -->
4 <package class="hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage" genModel="model/yakindu_simplified.genmodel" uri="hu.bme.mit.inf.yakindumm"/> 4 <package class="hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage" genModel="model/yakindu_simplified.genmodel" uri="hu.bme.mit.inf.yakindumm"/>
5 </extension> 5 </extension>
6 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 6 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" point="org.eclipse.viatra.query.runtime.queryspecification">
7 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns"> 7 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns">
8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.entryInRegion"/> 8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.entryInRegion"/>
9 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noEntryInRegion"/> 9 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noEntryInRegion"/>
10 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleEntryInRegion"/> 10 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleEntryInRegion"/>
11 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.transition"/> 11 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.transition"/>
12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.incomingToEntry"/> 12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.incomingToEntry"/>
13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noOutgoingTransitionFromEntry"/> 13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noOutgoingTransitionFromEntry"/>
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleTransitionFromEntry"/> 14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleTransitionFromEntry"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromExit"/> 15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromExit"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromFinal"/> 16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromFinal"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noStateInRegion"/> 17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noStateInRegion"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.StateInRegion"/> 18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.StateInRegion"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoOutgoing"/> 19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoOutgoing"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoIncoming"/> 20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoIncoming"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoOutgoing"/> 21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoOutgoing"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoIncoming"/> 22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoIncoming"/>
23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedIncomingInSameRegion"/> 23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedIncomingInSameRegion"/>
24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.notSynchronizingStates"/> 24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.notSynchronizingStates"/>
25 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleOutgoingTrainsition"/> 25 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleOutgoingTrainsition"/>
26 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleIncomingTrainsition"/> 26 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleIncomingTrainsition"/>
27 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionsAreNotSiblings"/> 27 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionsAreNotSiblings"/>
28 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.child"/> 28 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.child"/>
29 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionDoesNotHaveMultipleRegions"/> 29 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionDoesNotHaveMultipleRegions"/>
30 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleRegions"/> 30 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleRegions"/>
31 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchThree"/> 31 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchThree"/>
32 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.twoSynch"/> 32 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.twoSynch"/>
33 </group> 33 </group>
34 </extension> 34 </extension>
35 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" point="org.eclipse.viatra.query.runtime.queryspecification"> 35 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" point="org.eclipse.viatra.query.runtime.queryspecification">
36 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated"> 36 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated">
37 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M0"/> 37 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M0"/>
38 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M1"/> 38 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M1"/>
39 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M2"/> 39 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M2"/>
40 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M0"/> 40 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M0"/>
41 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M1"/> 41 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M1"/>
42 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M2"/> 42 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M2"/>
43 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M3"/> 43 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M3"/>
44 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M4"/> 44 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M4"/>
45 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M5"/> 45 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noEntryInRegion_M5"/>
46 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M0"/> 46 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M0"/>
47 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M1"/> 47 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M1"/>
48 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M2"/> 48 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M2"/>
49 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M3"/> 49 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M3"/>
50 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M4"/> 50 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M4"/>
51 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M5"/> 51 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleEntryInRegion_M5"/>
52 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M0"/> 52 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M0"/>
53 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M1"/> 53 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M1"/>
54 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M2"/> 54 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M2"/>
55 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M3"/> 55 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M3"/>
56 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M4"/> 56 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.transition_M4"/>
57 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_M0"/> 57 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_M0"/>
58 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_1"/> 58 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_1"/>
59 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_2"/> 59 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_2"/>
60 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_3"/> 60 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_3"/>
61 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_4"/> 61 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_4"/>
62 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_5"/> 62 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.incomingToEntry_5"/>
63 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M0"/> 63 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M0"/>
64 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M1"/> 64 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M1"/>
65 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M2"/> 65 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M2"/>
66 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M3"/> 66 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M3"/>
67 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M4"/> 67 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M4"/>
68 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M5"/> 68 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noOutgoingTransitionFromEntry_M5"/>
69 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M0"/> 69 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M0"/>
70 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M1"/> 70 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M1"/>
71 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M2"/> 71 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M2"/>
72 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M3"/> 72 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M3"/>
73 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M4"/> 73 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.multipleTransitionFromEntry_M4"/>
74 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M0"/> 74 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M0"/>
75 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M1"/> 75 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M1"/>
76 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M2"/> 76 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromExit_M2"/>
77 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M0"/> 77 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M0"/>
78 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M1"/> 78 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M1"/>
79 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M2"/> 79 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.outgoingFromFinal_M2"/>
80 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M0"/> 80 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M0"/>
81 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M1"/> 81 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M1"/>
82 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M2"/> 82 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M2"/>
83 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M3"/> 83 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.noStateInRegion_M3"/>
84 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M0"/> 84 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M0"/>
85 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M1"/> 85 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M1"/>
86 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M2"/> 86 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.StateInRegion_M2"/>
87 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M0"/> 87 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M0"/>
88 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M1"/> 88 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M1"/>
89 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M2"/> 89 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M2"/>
90 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M3"/> 90 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M3"/>
91 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M4"/> 91 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M4"/>
92 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M5"/> 92 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M5"/>
93 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M6"/> 93 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoOutgoing_M6"/>
94 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M0"/> 94 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M0"/>
95 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M1"/> 95 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M1"/>
96 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M2"/> 96 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M2"/>
97 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M3"/> 97 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M3"/>
98 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M4"/> 98 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M4"/>
99 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M5"/> 99 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M5"/>
100 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M6"/> 100 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.choiceHasNoIncoming_M6"/>
101 </group> 101 </group>
102 </extension> 102 </extension>
103</plugin> 103</plugin>