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.MF25
-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/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.java78
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/SatellitePackage.java970
-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.java78
-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/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.java255
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SatellitePackageImpl.java589
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/impl/SpacecraftImpl.java255
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteAdapterFactory.java271
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/util/SatelliteSwitch.java296
-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.aird2074
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore53
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel57
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated3021
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem1759
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel161
-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.gml1517
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.pngbin0 -> 230457 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/models/2.gml1983
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.pngbin0 -> 211085 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.xmi31
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.gml1926
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.pngbin0 -> 206387 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.xmi30
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.gml1983
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.pngbin0 -> 209322 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.xmi31
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.gml1926
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.pngbin0 -> 204074 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.xmi30
-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.xml25
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/.gitignore2
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/internal/.gitignore2
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/.gitignore22
-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/CostMetric.java544
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CoverageMetric.java552
-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/NotEnoughInterferometryPayloads.java548
-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/ThreeUCubeSatWithNonUhfCrossLink.java613
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/TimeMetric.java544
-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/.gitignore33
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AdditionalCommSubsystemCost.java173
-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/BasePrice.java216
-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/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/IncomingData.java145
-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/InterferometryPayloadCost.java175
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCost.java183
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCoverage.java183
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionTime.java183
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SatelliteQueriesAll.java156
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/ScienceData.java179
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SmallSat.java138
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftCost.java215
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftOfKind.java140
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftUplink.java171
-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-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithTwoCommSubsystems.java146
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitRate.java277
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitTime.java200
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql300
-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/.gitignore1
-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
134 files changed, 41450 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..39b038d2
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
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.metrics,
12 hu.bme.mit.inf.dslreasoner.domains.satellite.queries,
13 hu.bme.mit.inf.dslreasoner.domains.satellite.runner,
14 hu.bme.mit.inf.dslreasoner.domains.satellite.util
15Require-Bundle: org.eclipse.viatra.query.runtime,
16 org.eclipse.viatra.query.runtime.rete,
17 org.eclipse.viatra.query.runtime.localsearch,
18 org.eclipse.xtext.xbase.lib,
19 org.eclipse.emf.ecore;visibility:=reexport,
20 org.eclipse.core.runtime,
21 hu.bme.mit.inf.dslreasoner.application
22Import-Package: org.apache.log4j
23Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.domains.satellite
24Bundle-ActivationPolicy: lazy
25Bundle-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..f042826e
--- /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 += 5..10
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/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..39b2c2be
--- /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 Spacecraft {
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..50b81a6b
--- /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 Spacecraft {
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..958bbc08
--- /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,78 @@
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 the package supported by this factory.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return the package supported by this factory.
74 * @generated
75 */
76 SatellitePackage getSatellitePackage();
77
78} //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..61da12a0
--- /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,970 @@
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.TransceiverBand <em>Transceiver Band</em>}' enum.
467 * <!-- begin-user-doc -->
468 * <!-- end-user-doc -->
469 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
470 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getTransceiverBand()
471 * @generated
472 */
473 int TRANSCEIVER_BAND = 9;
474
475 /**
476 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}' enum.
477 * <!-- begin-user-doc -->
478 * <!-- end-user-doc -->
479 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
480 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getAntennaGain()
481 * @generated
482 */
483 int ANTENNA_GAIN = 10;
484
485 /**
486 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
490 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraftKind()
491 * @generated
492 */
493 int SPACECRAFT_KIND = 11;
494
495 /**
496 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission <em>Constellation Mission</em>}'.
497 * <!-- begin-user-doc -->
498 * <!-- end-user-doc -->
499 * @return the meta object for class '<em>Constellation Mission</em>'.
500 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission
501 * @generated
502 */
503 EClass getConstellationMission();
504
505 /**
506 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork <em>Ground Station Network</em>}'.
507 * <!-- begin-user-doc -->
508 * <!-- end-user-doc -->
509 * @return the meta object for the containment reference '<em>Ground Station Network</em>'.
510 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getGroundStationNetwork()
511 * @see #getConstellationMission()
512 * @generated
513 */
514 EReference getConstellationMission_GroundStationNetwork();
515
516 /**
517 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getSpacecraft <em>Spacecraft</em>}'.
518 * <!-- begin-user-doc -->
519 * <!-- end-user-doc -->
520 * @return the meta object for the containment reference list '<em>Spacecraft</em>'.
521 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission#getSpacecraft()
522 * @see #getConstellationMission()
523 * @generated
524 */
525 EReference getConstellationMission_Spacecraft();
526
527 /**
528 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission <em>Interferometry Mission</em>}'.
529 * <!-- begin-user-doc -->
530 * <!-- end-user-doc -->
531 * @return the meta object for class '<em>Interferometry Mission</em>'.
532 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission
533 * @generated
534 */
535 EClass getInterferometryMission();
536
537 /**
538 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime <em>Observation Time</em>}'.
539 * <!-- begin-user-doc -->
540 * <!-- end-user-doc -->
541 * @return the meta object for the attribute '<em>Observation Time</em>'.
542 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission#getObservationTime()
543 * @see #getInterferometryMission()
544 * @generated
545 */
546 EAttribute getInterferometryMission_ObservationTime();
547
548 /**
549 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement <em>Communicating Element</em>}'.
550 * <!-- begin-user-doc -->
551 * <!-- end-user-doc -->
552 * @return the meta object for class '<em>Communicating Element</em>'.
553 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement
554 * @generated
555 */
556 EClass getCommunicatingElement();
557
558 /**
559 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommSubsystem <em>Comm Subsystem</em>}'.
560 * <!-- begin-user-doc -->
561 * <!-- end-user-doc -->
562 * @return the meta object for the containment reference list '<em>Comm Subsystem</em>'.
563 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommSubsystem()
564 * @see #getCommunicatingElement()
565 * @generated
566 */
567 EReference getCommunicatingElement_CommSubsystem();
568
569 /**
570 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink <em>Communication Link</em>}'.
571 * <!-- begin-user-doc -->
572 * <!-- end-user-doc -->
573 * @return the meta object for the containment reference '<em>Communication Link</em>'.
574 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement#getCommunicationLink()
575 * @see #getCommunicatingElement()
576 * @generated
577 */
578 EReference getCommunicatingElement_CommunicationLink();
579
580 /**
581 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
582 * <!-- begin-user-doc -->
583 * <!-- end-user-doc -->
584 * @return the meta object for class '<em>Ground Station Network</em>'.
585 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork
586 * @generated
587 */
588 EClass getGroundStationNetwork();
589
590 /**
591 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft <em>Spacecraft</em>}'.
592 * <!-- begin-user-doc -->
593 * <!-- end-user-doc -->
594 * @return the meta object for class '<em>Spacecraft</em>'.
595 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft
596 * @generated
597 */
598 EClass getSpacecraft();
599
600 /**
601 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload <em>Payload</em>}'.
602 * <!-- begin-user-doc -->
603 * <!-- end-user-doc -->
604 * @return the meta object for the containment reference '<em>Payload</em>'.
605 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getPayload()
606 * @see #getSpacecraft()
607 * @generated
608 */
609 EReference getSpacecraft_Payload();
610
611 /**
612 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind <em>Kind</em>}'.
613 * <!-- begin-user-doc -->
614 * <!-- end-user-doc -->
615 * @return the meta object for the attribute '<em>Kind</em>'.
616 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind()
617 * @see #getSpacecraft()
618 * @generated
619 */
620 EAttribute getSpacecraft_Kind();
621
622 /**
623 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem <em>Comm Subsystem</em>}'.
624 * <!-- begin-user-doc -->
625 * <!-- end-user-doc -->
626 * @return the meta object for class '<em>Comm Subsystem</em>'.
627 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem
628 * @generated
629 */
630 EClass getCommSubsystem();
631
632 /**
633 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand <em>Band</em>}'.
634 * <!-- begin-user-doc -->
635 * <!-- end-user-doc -->
636 * @return the meta object for the attribute '<em>Band</em>'.
637 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getBand()
638 * @see #getCommSubsystem()
639 * @generated
640 */
641 EAttribute getCommSubsystem_Band();
642
643 /**
644 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain <em>Gain</em>}'.
645 * <!-- begin-user-doc -->
646 * <!-- end-user-doc -->
647 * @return the meta object for the attribute '<em>Gain</em>'.
648 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem#getGain()
649 * @see #getCommSubsystem()
650 * @generated
651 */
652 EAttribute getCommSubsystem_Gain();
653
654 /**
655 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
656 * <!-- begin-user-doc -->
657 * <!-- end-user-doc -->
658 * @return the meta object for class '<em>Directed Communication Link</em>'.
659 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink
660 * @generated
661 */
662 EClass getDirectedCommunicationLink();
663
664 /**
665 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource <em>Source</em>}'.
666 * <!-- begin-user-doc -->
667 * <!-- end-user-doc -->
668 * @return the meta object for the reference '<em>Source</em>'.
669 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getSource()
670 * @see #getDirectedCommunicationLink()
671 * @generated
672 */
673 EReference getDirectedCommunicationLink_Source();
674
675 /**
676 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget <em>Target</em>}'.
677 * <!-- begin-user-doc -->
678 * <!-- end-user-doc -->
679 * @return the meta object for the reference '<em>Target</em>'.
680 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink#getTarget()
681 * @see #getDirectedCommunicationLink()
682 * @generated
683 */
684 EReference getDirectedCommunicationLink_Target();
685
686 /**
687 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Payload <em>Payload</em>}'.
688 * <!-- begin-user-doc -->
689 * <!-- end-user-doc -->
690 * @return the meta object for class '<em>Payload</em>'.
691 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Payload
692 * @generated
693 */
694 EClass getPayload();
695
696 /**
697 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
698 * <!-- begin-user-doc -->
699 * <!-- end-user-doc -->
700 * @return the meta object for class '<em>Interferometry Payload</em>'.
701 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload
702 * @generated
703 */
704 EClass getInterferometryPayload();
705
706 /**
707 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand <em>Transceiver Band</em>}'.
708 * <!-- begin-user-doc -->
709 * <!-- end-user-doc -->
710 * @return the meta object for enum '<em>Transceiver Band</em>'.
711 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
712 * @generated
713 */
714 EEnum getTransceiverBand();
715
716 /**
717 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}'.
718 * <!-- begin-user-doc -->
719 * <!-- end-user-doc -->
720 * @return the meta object for enum '<em>Antenna Gain</em>'.
721 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
722 * @generated
723 */
724 EEnum getAntennaGain();
725
726 /**
727 * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}'.
728 * <!-- begin-user-doc -->
729 * <!-- end-user-doc -->
730 * @return the meta object for enum '<em>Spacecraft Kind</em>'.
731 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
732 * @generated
733 */
734 EEnum getSpacecraftKind();
735
736 /**
737 * Returns the factory that creates the instances of the model.
738 * <!-- begin-user-doc -->
739 * <!-- end-user-doc -->
740 * @return the factory that creates the instances of the model.
741 * @generated
742 */
743 SatelliteFactory getSatelliteFactory();
744
745 /**
746 * <!-- begin-user-doc -->
747 * Defines literals for the meta objects that represent
748 * <ul>
749 * <li>each class,</li>
750 * <li>each feature of each class,</li>
751 * <li>each operation of each class,</li>
752 * <li>each enum,</li>
753 * <li>and each data type</li>
754 * </ul>
755 * <!-- end-user-doc -->
756 * @generated
757 */
758 interface Literals {
759 /**
760 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl <em>Constellation Mission</em>}' class.
761 * <!-- begin-user-doc -->
762 * <!-- end-user-doc -->
763 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.ConstellationMissionImpl
764 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getConstellationMission()
765 * @generated
766 */
767 EClass CONSTELLATION_MISSION = eINSTANCE.getConstellationMission();
768
769 /**
770 * The meta object literal for the '<em><b>Ground Station Network</b></em>' containment reference feature.
771 * <!-- begin-user-doc -->
772 * <!-- end-user-doc -->
773 * @generated
774 */
775 EReference CONSTELLATION_MISSION__GROUND_STATION_NETWORK = eINSTANCE
776 .getConstellationMission_GroundStationNetwork();
777
778 /**
779 * The meta object literal for the '<em><b>Spacecraft</b></em>' containment reference list feature.
780 * <!-- begin-user-doc -->
781 * <!-- end-user-doc -->
782 * @generated
783 */
784 EReference CONSTELLATION_MISSION__SPACECRAFT = eINSTANCE.getConstellationMission_Spacecraft();
785
786 /**
787 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl <em>Interferometry Mission</em>}' class.
788 * <!-- begin-user-doc -->
789 * <!-- end-user-doc -->
790 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryMissionImpl
791 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryMission()
792 * @generated
793 */
794 EClass INTERFEROMETRY_MISSION = eINSTANCE.getInterferometryMission();
795
796 /**
797 * The meta object literal for the '<em><b>Observation Time</b></em>' attribute feature.
798 * <!-- begin-user-doc -->
799 * <!-- end-user-doc -->
800 * @generated
801 */
802 EAttribute INTERFEROMETRY_MISSION__OBSERVATION_TIME = eINSTANCE.getInterferometryMission_ObservationTime();
803
804 /**
805 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl <em>Communicating Element</em>}' class.
806 * <!-- begin-user-doc -->
807 * <!-- end-user-doc -->
808 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommunicatingElementImpl
809 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommunicatingElement()
810 * @generated
811 */
812 EClass COMMUNICATING_ELEMENT = eINSTANCE.getCommunicatingElement();
813
814 /**
815 * The meta object literal for the '<em><b>Comm Subsystem</b></em>' containment reference list feature.
816 * <!-- begin-user-doc -->
817 * <!-- end-user-doc -->
818 * @generated
819 */
820 EReference COMMUNICATING_ELEMENT__COMM_SUBSYSTEM = eINSTANCE.getCommunicatingElement_CommSubsystem();
821
822 /**
823 * The meta object literal for the '<em><b>Communication Link</b></em>' containment reference feature.
824 * <!-- begin-user-doc -->
825 * <!-- end-user-doc -->
826 * @generated
827 */
828 EReference COMMUNICATING_ELEMENT__COMMUNICATION_LINK = eINSTANCE.getCommunicatingElement_CommunicationLink();
829
830 /**
831 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl <em>Ground Station Network</em>}' class.
832 * <!-- begin-user-doc -->
833 * <!-- end-user-doc -->
834 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.GroundStationNetworkImpl
835 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getGroundStationNetwork()
836 * @generated
837 */
838 EClass GROUND_STATION_NETWORK = eINSTANCE.getGroundStationNetwork();
839
840 /**
841 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl <em>Spacecraft</em>}' class.
842 * <!-- begin-user-doc -->
843 * <!-- end-user-doc -->
844 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SpacecraftImpl
845 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraft()
846 * @generated
847 */
848 EClass SPACECRAFT = eINSTANCE.getSpacecraft();
849
850 /**
851 * The meta object literal for the '<em><b>Payload</b></em>' containment reference feature.
852 * <!-- begin-user-doc -->
853 * <!-- end-user-doc -->
854 * @generated
855 */
856 EReference SPACECRAFT__PAYLOAD = eINSTANCE.getSpacecraft_Payload();
857
858 /**
859 * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
860 * <!-- begin-user-doc -->
861 * <!-- end-user-doc -->
862 * @generated
863 */
864 EAttribute SPACECRAFT__KIND = eINSTANCE.getSpacecraft_Kind();
865
866 /**
867 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl <em>Comm Subsystem</em>}' class.
868 * <!-- begin-user-doc -->
869 * <!-- end-user-doc -->
870 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.CommSubsystemImpl
871 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getCommSubsystem()
872 * @generated
873 */
874 EClass COMM_SUBSYSTEM = eINSTANCE.getCommSubsystem();
875
876 /**
877 * The meta object literal for the '<em><b>Band</b></em>' attribute feature.
878 * <!-- begin-user-doc -->
879 * <!-- end-user-doc -->
880 * @generated
881 */
882 EAttribute COMM_SUBSYSTEM__BAND = eINSTANCE.getCommSubsystem_Band();
883
884 /**
885 * The meta object literal for the '<em><b>Gain</b></em>' attribute feature.
886 * <!-- begin-user-doc -->
887 * <!-- end-user-doc -->
888 * @generated
889 */
890 EAttribute COMM_SUBSYSTEM__GAIN = eINSTANCE.getCommSubsystem_Gain();
891
892 /**
893 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl <em>Directed Communication Link</em>}' class.
894 * <!-- begin-user-doc -->
895 * <!-- end-user-doc -->
896 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.DirectedCommunicationLinkImpl
897 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getDirectedCommunicationLink()
898 * @generated
899 */
900 EClass DIRECTED_COMMUNICATION_LINK = eINSTANCE.getDirectedCommunicationLink();
901
902 /**
903 * The meta object literal for the '<em><b>Source</b></em>' reference feature.
904 * <!-- begin-user-doc -->
905 * <!-- end-user-doc -->
906 * @generated
907 */
908 EReference DIRECTED_COMMUNICATION_LINK__SOURCE = eINSTANCE.getDirectedCommunicationLink_Source();
909
910 /**
911 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
912 * <!-- begin-user-doc -->
913 * <!-- end-user-doc -->
914 * @generated
915 */
916 EReference DIRECTED_COMMUNICATION_LINK__TARGET = eINSTANCE.getDirectedCommunicationLink_Target();
917
918 /**
919 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl <em>Payload</em>}' class.
920 * <!-- begin-user-doc -->
921 * <!-- end-user-doc -->
922 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.PayloadImpl
923 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getPayload()
924 * @generated
925 */
926 EClass PAYLOAD = eINSTANCE.getPayload();
927
928 /**
929 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl <em>Interferometry Payload</em>}' class.
930 * <!-- begin-user-doc -->
931 * <!-- end-user-doc -->
932 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.InterferometryPayloadImpl
933 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getInterferometryPayload()
934 * @generated
935 */
936 EClass INTERFEROMETRY_PAYLOAD = eINSTANCE.getInterferometryPayload();
937
938 /**
939 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand <em>Transceiver Band</em>}' enum.
940 * <!-- begin-user-doc -->
941 * <!-- end-user-doc -->
942 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand
943 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getTransceiverBand()
944 * @generated
945 */
946 EEnum TRANSCEIVER_BAND = eINSTANCE.getTransceiverBand();
947
948 /**
949 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain <em>Antenna Gain</em>}' enum.
950 * <!-- begin-user-doc -->
951 * <!-- end-user-doc -->
952 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.AntennaGain
953 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getAntennaGain()
954 * @generated
955 */
956 EEnum ANTENNA_GAIN = eINSTANCE.getAntennaGain();
957
958 /**
959 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind <em>Spacecraft Kind</em>}' enum.
960 * <!-- begin-user-doc -->
961 * <!-- end-user-doc -->
962 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
963 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.impl.SatellitePackageImpl#getSpacecraftKind()
964 * @generated
965 */
966 EEnum SPACECRAFT_KIND = eINSTANCE.getSpacecraftKind();
967
968 }
969
970} //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..cc4b85a1
--- /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,78 @@
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 #setKind(SpacecraftKind)
61 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#getSpacecraft_Kind()
62 * @model required="true"
63 * @generated
64 */
65 SpacecraftKind getKind();
66
67 /**
68 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft#getKind <em>Kind</em>}' attribute.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Kind</em>' attribute.
72 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind
73 * @see #getKind()
74 * @generated
75 */
76 void setKind(SpacecraftKind value);
77
78} // 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..8be6abc1
--- /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/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..0cb07cfa
--- /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,255 @@
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 default:
71 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
72 }
73 }
74
75 /**
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @generated
79 */
80 @Override
81 public Object createFromString(EDataType eDataType, String initialValue) {
82 switch (eDataType.getClassifierID()) {
83 case SatellitePackage.TRANSCEIVER_BAND:
84 return createTransceiverBandFromString(eDataType, initialValue);
85 case SatellitePackage.ANTENNA_GAIN:
86 return createAntennaGainFromString(eDataType, initialValue);
87 case SatellitePackage.SPACECRAFT_KIND:
88 return createSpacecraftKindFromString(eDataType, initialValue);
89 default:
90 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
91 }
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public String convertToString(EDataType eDataType, Object instanceValue) {
101 switch (eDataType.getClassifierID()) {
102 case SatellitePackage.TRANSCEIVER_BAND:
103 return convertTransceiverBandToString(eDataType, instanceValue);
104 case SatellitePackage.ANTENNA_GAIN:
105 return convertAntennaGainToString(eDataType, instanceValue);
106 case SatellitePackage.SPACECRAFT_KIND:
107 return convertSpacecraftKindToString(eDataType, instanceValue);
108 default:
109 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
110 }
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public InterferometryMission createInterferometryMission() {
120 InterferometryMissionImpl interferometryMission = new InterferometryMissionImpl();
121 return interferometryMission;
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @Override
130 public GroundStationNetwork createGroundStationNetwork() {
131 GroundStationNetworkImpl groundStationNetwork = new GroundStationNetworkImpl();
132 return groundStationNetwork;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public CommSubsystem createCommSubsystem() {
142 CommSubsystemImpl commSubsystem = new CommSubsystemImpl();
143 return commSubsystem;
144 }
145
146 /**
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @generated
150 */
151 @Override
152 public DirectedCommunicationLink createDirectedCommunicationLink() {
153 DirectedCommunicationLinkImpl directedCommunicationLink = new DirectedCommunicationLinkImpl();
154 return directedCommunicationLink;
155 }
156
157 /**
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 @Override
163 public InterferometryPayload createInterferometryPayload() {
164 InterferometryPayloadImpl interferometryPayload = new InterferometryPayloadImpl();
165 return interferometryPayload;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 public TransceiverBand createTransceiverBandFromString(EDataType eDataType, String initialValue) {
174 TransceiverBand result = TransceiverBand.get(initialValue);
175 if (result == null)
176 throw new IllegalArgumentException(
177 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
178 return result;
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 public String convertTransceiverBandToString(EDataType eDataType, Object instanceValue) {
187 return instanceValue == null ? null : instanceValue.toString();
188 }
189
190 /**
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 public AntennaGain createAntennaGainFromString(EDataType eDataType, String initialValue) {
196 AntennaGain result = AntennaGain.get(initialValue);
197 if (result == null)
198 throw new IllegalArgumentException(
199 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
200 return result;
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 public String convertAntennaGainToString(EDataType eDataType, Object instanceValue) {
209 return instanceValue == null ? null : instanceValue.toString();
210 }
211
212 /**
213 * <!-- begin-user-doc -->
214 * <!-- end-user-doc -->
215 * @generated
216 */
217 public SpacecraftKind createSpacecraftKindFromString(EDataType eDataType, String initialValue) {
218 SpacecraftKind result = SpacecraftKind.get(initialValue);
219 if (result == null)
220 throw new IllegalArgumentException(
221 "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
222 return result;
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 public String convertSpacecraftKindToString(EDataType eDataType, Object instanceValue) {
231 return instanceValue == null ? null : instanceValue.toString();
232 }
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 @Override
240 public SatellitePackage getSatellitePackage() {
241 return (SatellitePackage) getEPackage();
242 }
243
244 /**
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @deprecated
248 * @generated
249 */
250 @Deprecated
251 public static SatellitePackage getPackage() {
252 return SatellitePackage.eINSTANCE;
253 }
254
255} //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..48ba32b8
--- /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,589 @@
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.DirectedCommunicationLink;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.Payload;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.SatelliteFactory;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind;
18import hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand;
19
20import org.eclipse.emf.ecore.EAttribute;
21import org.eclipse.emf.ecore.EClass;
22import org.eclipse.emf.ecore.EEnum;
23import org.eclipse.emf.ecore.EPackage;
24import org.eclipse.emf.ecore.EReference;
25
26import org.eclipse.emf.ecore.impl.EPackageImpl;
27
28/**
29 * <!-- begin-user-doc -->
30 * An implementation of the model <b>Package</b>.
31 * <!-- end-user-doc -->
32 * @generated
33 */
34public class SatellitePackageImpl extends EPackageImpl implements SatellitePackage {
35 /**
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 private EClass constellationMissionEClass = null;
41
42 /**
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 private EClass interferometryMissionEClass = null;
48
49 /**
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @generated
53 */
54 private EClass communicatingElementEClass = null;
55
56 /**
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @generated
60 */
61 private EClass groundStationNetworkEClass = null;
62
63 /**
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 private EClass spacecraftEClass = null;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 private EClass commSubsystemEClass = null;
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 private EClass directedCommunicationLinkEClass = null;
83
84 /**
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @generated
88 */
89 private EClass payloadEClass = null;
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 private EClass interferometryPayloadEClass = null;
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 private EEnum transceiverBandEEnum = null;
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 private EEnum antennaGainEEnum = null;
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 private EEnum spacecraftKindEEnum = null;
118
119 /**
120 * Creates an instance of the model <b>Package</b>, registered with
121 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
122 * package URI value.
123 * <p>Note: the correct way to create the package is via the static
124 * factory method {@link #init init()}, which also performs
125 * initialization of the package, or returns the registered package,
126 * if one already exists.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see org.eclipse.emf.ecore.EPackage.Registry
130 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage#eNS_URI
131 * @see #init()
132 * @generated
133 */
134 private SatellitePackageImpl() {
135 super(eNS_URI, SatelliteFactory.eINSTANCE);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 private static boolean isInited = false;
144
145 /**
146 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
147 *
148 * <p>This method is used to initialize {@link SatellitePackage#eINSTANCE} when that field is accessed.
149 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @see #eNS_URI
153 * @see #createPackageContents()
154 * @see #initializePackageContents()
155 * @generated
156 */
157 public static SatellitePackage init() {
158 if (isInited)
159 return (SatellitePackage) EPackage.Registry.INSTANCE.getEPackage(SatellitePackage.eNS_URI);
160
161 // Obtain or create and register package
162 Object registeredSatellitePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
163 SatellitePackageImpl theSatellitePackage = registeredSatellitePackage instanceof SatellitePackageImpl
164 ? (SatellitePackageImpl) registeredSatellitePackage
165 : new SatellitePackageImpl();
166
167 isInited = true;
168
169 // Create package meta-data objects
170 theSatellitePackage.createPackageContents();
171
172 // Initialize created meta-data
173 theSatellitePackage.initializePackageContents();
174
175 // Mark meta-data to indicate it can't be changed
176 theSatellitePackage.freeze();
177
178 // Update the registry and return the package
179 EPackage.Registry.INSTANCE.put(SatellitePackage.eNS_URI, theSatellitePackage);
180 return theSatellitePackage;
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @Override
189 public EClass getConstellationMission() {
190 return constellationMissionEClass;
191 }
192
193 /**
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @generated
197 */
198 @Override
199 public EReference getConstellationMission_GroundStationNetwork() {
200 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(0);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public EReference getConstellationMission_Spacecraft() {
210 return (EReference) constellationMissionEClass.getEStructuralFeatures().get(1);
211 }
212
213 /**
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @generated
217 */
218 @Override
219 public EClass getInterferometryMission() {
220 return interferometryMissionEClass;
221 }
222
223 /**
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @generated
227 */
228 @Override
229 public EAttribute getInterferometryMission_ObservationTime() {
230 return (EAttribute) interferometryMissionEClass.getEStructuralFeatures().get(0);
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public EClass getCommunicatingElement() {
240 return communicatingElementEClass;
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 @Override
249 public EReference getCommunicatingElement_CommSubsystem() {
250 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(0);
251 }
252
253 /**
254 * <!-- begin-user-doc -->
255 * <!-- end-user-doc -->
256 * @generated
257 */
258 @Override
259 public EReference getCommunicatingElement_CommunicationLink() {
260 return (EReference) communicatingElementEClass.getEStructuralFeatures().get(1);
261 }
262
263 /**
264 * <!-- begin-user-doc -->
265 * <!-- end-user-doc -->
266 * @generated
267 */
268 @Override
269 public EClass getGroundStationNetwork() {
270 return groundStationNetworkEClass;
271 }
272
273 /**
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 */
278 @Override
279 public EClass getSpacecraft() {
280 return spacecraftEClass;
281 }
282
283 /**
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @generated
287 */
288 @Override
289 public EReference getSpacecraft_Payload() {
290 return (EReference) spacecraftEClass.getEStructuralFeatures().get(0);
291 }
292
293 /**
294 * <!-- begin-user-doc -->
295 * <!-- end-user-doc -->
296 * @generated
297 */
298 @Override
299 public EAttribute getSpacecraft_Kind() {
300 return (EAttribute) spacecraftEClass.getEStructuralFeatures().get(1);
301 }
302
303 /**
304 * <!-- begin-user-doc -->
305 * <!-- end-user-doc -->
306 * @generated
307 */
308 @Override
309 public EClass getCommSubsystem() {
310 return commSubsystemEClass;
311 }
312
313 /**
314 * <!-- begin-user-doc -->
315 * <!-- end-user-doc -->
316 * @generated
317 */
318 @Override
319 public EAttribute getCommSubsystem_Band() {
320 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(0);
321 }
322
323 /**
324 * <!-- begin-user-doc -->
325 * <!-- end-user-doc -->
326 * @generated
327 */
328 @Override
329 public EAttribute getCommSubsystem_Gain() {
330 return (EAttribute) commSubsystemEClass.getEStructuralFeatures().get(1);
331 }
332
333 /**
334 * <!-- begin-user-doc -->
335 * <!-- end-user-doc -->
336 * @generated
337 */
338 @Override
339 public EClass getDirectedCommunicationLink() {
340 return directedCommunicationLinkEClass;
341 }
342
343 /**
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 */
348 @Override
349 public EReference getDirectedCommunicationLink_Source() {
350 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(0);
351 }
352
353 /**
354 * <!-- begin-user-doc -->
355 * <!-- end-user-doc -->
356 * @generated
357 */
358 @Override
359 public EReference getDirectedCommunicationLink_Target() {
360 return (EReference) directedCommunicationLinkEClass.getEStructuralFeatures().get(1);
361 }
362
363 /**
364 * <!-- begin-user-doc -->
365 * <!-- end-user-doc -->
366 * @generated
367 */
368 @Override
369 public EClass getPayload() {
370 return payloadEClass;
371 }
372
373 /**
374 * <!-- begin-user-doc -->
375 * <!-- end-user-doc -->
376 * @generated
377 */
378 @Override
379 public EClass getInterferometryPayload() {
380 return interferometryPayloadEClass;
381 }
382
383 /**
384 * <!-- begin-user-doc -->
385 * <!-- end-user-doc -->
386 * @generated
387 */
388 @Override
389 public EEnum getTransceiverBand() {
390 return transceiverBandEEnum;
391 }
392
393 /**
394 * <!-- begin-user-doc -->
395 * <!-- end-user-doc -->
396 * @generated
397 */
398 @Override
399 public EEnum getAntennaGain() {
400 return antennaGainEEnum;
401 }
402
403 /**
404 * <!-- begin-user-doc -->
405 * <!-- end-user-doc -->
406 * @generated
407 */
408 @Override
409 public EEnum getSpacecraftKind() {
410 return spacecraftKindEEnum;
411 }
412
413 /**
414 * <!-- begin-user-doc -->
415 * <!-- end-user-doc -->
416 * @generated
417 */
418 @Override
419 public SatelliteFactory getSatelliteFactory() {
420 return (SatelliteFactory) getEFactoryInstance();
421 }
422
423 /**
424 * <!-- begin-user-doc -->
425 * <!-- end-user-doc -->
426 * @generated
427 */
428 private boolean isCreated = false;
429
430 /**
431 * Creates the meta-model objects for the package. This method is
432 * guarded to have no affect on any invocation but its first.
433 * <!-- begin-user-doc -->
434 * <!-- end-user-doc -->
435 * @generated
436 */
437 public void createPackageContents() {
438 if (isCreated)
439 return;
440 isCreated = true;
441
442 // Create classes and their features
443 constellationMissionEClass = createEClass(CONSTELLATION_MISSION);
444 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__GROUND_STATION_NETWORK);
445 createEReference(constellationMissionEClass, CONSTELLATION_MISSION__SPACECRAFT);
446
447 interferometryMissionEClass = createEClass(INTERFEROMETRY_MISSION);
448 createEAttribute(interferometryMissionEClass, INTERFEROMETRY_MISSION__OBSERVATION_TIME);
449
450 communicatingElementEClass = createEClass(COMMUNICATING_ELEMENT);
451 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMM_SUBSYSTEM);
452 createEReference(communicatingElementEClass, COMMUNICATING_ELEMENT__COMMUNICATION_LINK);
453
454 groundStationNetworkEClass = createEClass(GROUND_STATION_NETWORK);
455
456 spacecraftEClass = createEClass(SPACECRAFT);
457 createEReference(spacecraftEClass, SPACECRAFT__PAYLOAD);
458 createEAttribute(spacecraftEClass, SPACECRAFT__KIND);
459
460 commSubsystemEClass = createEClass(COMM_SUBSYSTEM);
461 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__BAND);
462 createEAttribute(commSubsystemEClass, COMM_SUBSYSTEM__GAIN);
463
464 directedCommunicationLinkEClass = createEClass(DIRECTED_COMMUNICATION_LINK);
465 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__SOURCE);
466 createEReference(directedCommunicationLinkEClass, DIRECTED_COMMUNICATION_LINK__TARGET);
467
468 payloadEClass = createEClass(PAYLOAD);
469
470 interferometryPayloadEClass = createEClass(INTERFEROMETRY_PAYLOAD);
471
472 // Create enums
473 transceiverBandEEnum = createEEnum(TRANSCEIVER_BAND);
474 antennaGainEEnum = createEEnum(ANTENNA_GAIN);
475 spacecraftKindEEnum = createEEnum(SPACECRAFT_KIND);
476 }
477
478 /**
479 * <!-- begin-user-doc -->
480 * <!-- end-user-doc -->
481 * @generated
482 */
483 private boolean isInitialized = false;
484
485 /**
486 * Complete the initialization of the package and its meta-model. This
487 * method is guarded to have no affect on any invocation but its first.
488 * <!-- begin-user-doc -->
489 * <!-- end-user-doc -->
490 * @generated
491 */
492 public void initializePackageContents() {
493 if (isInitialized)
494 return;
495 isInitialized = true;
496
497 // Initialize package
498 setName(eNAME);
499 setNsPrefix(eNS_PREFIX);
500 setNsURI(eNS_URI);
501
502 // Create type parameters
503
504 // Set bounds for type parameters
505
506 // Add supertypes to classes
507 interferometryMissionEClass.getESuperTypes().add(this.getConstellationMission());
508 groundStationNetworkEClass.getESuperTypes().add(this.getCommunicatingElement());
509 spacecraftEClass.getESuperTypes().add(this.getCommunicatingElement());
510 interferometryPayloadEClass.getESuperTypes().add(this.getPayload());
511
512 // Initialize classes, features, and operations; add parameters
513 initEClass(constellationMissionEClass, ConstellationMission.class, "ConstellationMission", IS_ABSTRACT,
514 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
515 initEReference(getConstellationMission_GroundStationNetwork(), this.getGroundStationNetwork(), null,
516 "groundStationNetwork", null, 1, 1, ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE,
517 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
518 initEReference(getConstellationMission_Spacecraft(), this.getSpacecraft(), null, "spacecraft", null, 2, 50,
519 ConstellationMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
520 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
521
522 initEClass(interferometryMissionEClass, InterferometryMission.class, "InterferometryMission", !IS_ABSTRACT,
523 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
524 initEAttribute(getInterferometryMission_ObservationTime(), ecorePackage.getEFloat(), "observationTime", "2.0",
525 1, 1, InterferometryMission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
526 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
527
528 initEClass(communicatingElementEClass, CommunicatingElement.class, "CommunicatingElement", IS_ABSTRACT,
529 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
530 initEReference(getCommunicatingElement_CommSubsystem(), this.getCommSubsystem(), null, "commSubsystem", null, 1,
531 2, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
532 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
533 initEReference(getCommunicatingElement_CommunicationLink(), this.getDirectedCommunicationLink(), null,
534 "communicationLink", null, 0, 1, CommunicatingElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
535 IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
536
537 initEClass(groundStationNetworkEClass, GroundStationNetwork.class, "GroundStationNetwork", !IS_ABSTRACT,
538 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
539
540 initEClass(spacecraftEClass, Spacecraft.class, "Spacecraft", IS_ABSTRACT, !IS_INTERFACE,
541 IS_GENERATED_INSTANCE_CLASS);
542 initEReference(getSpacecraft_Payload(), this.getPayload(), null, "payload", null, 0, 1, Spacecraft.class,
543 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
544 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
545 initEAttribute(getSpacecraft_Kind(), this.getSpacecraftKind(), "kind", null, 1, 1, Spacecraft.class,
546 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
547
548 initEClass(commSubsystemEClass, CommSubsystem.class, "CommSubsystem", !IS_ABSTRACT, !IS_INTERFACE,
549 IS_GENERATED_INSTANCE_CLASS);
550 initEAttribute(getCommSubsystem_Band(), this.getTransceiverBand(), "band", null, 1, 1, CommSubsystem.class,
551 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
552 initEAttribute(getCommSubsystem_Gain(), this.getAntennaGain(), "gain", null, 1, 1, CommSubsystem.class,
553 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
554
555 initEClass(directedCommunicationLinkEClass, DirectedCommunicationLink.class, "DirectedCommunicationLink",
556 !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
557 initEReference(getDirectedCommunicationLink_Source(), this.getCommSubsystem(), null, "source", null, 1, 1,
558 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
559 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
560 initEReference(getDirectedCommunicationLink_Target(), this.getCommSubsystem(), null, "target", null, 1, 1,
561 DirectedCommunicationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
562 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
563
564 initEClass(payloadEClass, Payload.class, "Payload", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
565
566 initEClass(interferometryPayloadEClass, InterferometryPayload.class, "InterferometryPayload", !IS_ABSTRACT,
567 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
568
569 // Initialize enums and add enum literals
570 initEEnum(transceiverBandEEnum, TransceiverBand.class, "TransceiverBand");
571 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.UHF);
572 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.X);
573 addEEnumLiteral(transceiverBandEEnum, TransceiverBand.KA);
574
575 initEEnum(antennaGainEEnum, AntennaGain.class, "AntennaGain");
576 addEEnumLiteral(antennaGainEEnum, AntennaGain.LOW);
577 addEEnumLiteral(antennaGainEEnum, AntennaGain.MEDIUM);
578 addEEnumLiteral(antennaGainEEnum, AntennaGain.HIGH);
579
580 initEEnum(spacecraftKindEEnum, SpacecraftKind.class, "SpacecraftKind");
581 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT3_U);
582 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.CUBE_SAT6_U);
583 addEEnumLiteral(spacecraftKindEEnum, SpacecraftKind.SMALL_SAT);
584
585 // Create resource
586 createResource(eNS_URI);
587 }
588
589} //SatellitePackageImpl
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..2135af2c
--- /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,255 @@
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 * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #getKind()
57 * @generated
58 * @ordered
59 */
60 protected SpacecraftKind kind = KIND_EDEFAULT;
61
62 /**
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @generated
66 */
67 protected SpacecraftImpl() {
68 super();
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 @Override
77 protected EClass eStaticClass() {
78 return SatellitePackage.Literals.SPACECRAFT;
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 @Override
87 public Payload getPayload() {
88 return payload;
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 public NotificationChain basicSetPayload(Payload newPayload, NotificationChain msgs) {
97 Payload oldPayload = payload;
98 payload = newPayload;
99 if (eNotificationRequired()) {
100 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
101 SatellitePackage.SPACECRAFT__PAYLOAD, oldPayload, newPayload);
102 if (msgs == null)
103 msgs = notification;
104 else
105 msgs.add(notification);
106 }
107 return msgs;
108 }
109
110 /**
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @generated
114 */
115 @Override
116 public void setPayload(Payload newPayload) {
117 if (newPayload != payload) {
118 NotificationChain msgs = null;
119 if (payload != null)
120 msgs = ((InternalEObject) payload).eInverseRemove(this,
121 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
122 if (newPayload != null)
123 msgs = ((InternalEObject) newPayload).eInverseAdd(this,
124 EOPPOSITE_FEATURE_BASE - SatellitePackage.SPACECRAFT__PAYLOAD, null, msgs);
125 msgs = basicSetPayload(newPayload, msgs);
126 if (msgs != null)
127 msgs.dispatch();
128 } else if (eNotificationRequired())
129 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.SPACECRAFT__PAYLOAD, newPayload,
130 newPayload));
131 }
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 @Override
139 public SpacecraftKind getKind() {
140 return kind;
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @Override
149 public void setKind(SpacecraftKind newKind) {
150 SpacecraftKind oldKind = kind;
151 kind = newKind == null ? KIND_EDEFAULT : newKind;
152 if (eNotificationRequired())
153 eNotify(new ENotificationImpl(this, Notification.SET, SatellitePackage.SPACECRAFT__KIND, oldKind, kind));
154 }
155
156 /**
157 * <!-- begin-user-doc -->
158 * <!-- end-user-doc -->
159 * @generated
160 */
161 @Override
162 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
163 switch (featureID) {
164 case SatellitePackage.SPACECRAFT__PAYLOAD:
165 return basicSetPayload(null, msgs);
166 }
167 return super.eInverseRemove(otherEnd, featureID, msgs);
168 }
169
170 /**
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 */
175 @Override
176 public Object eGet(int featureID, boolean resolve, boolean coreType) {
177 switch (featureID) {
178 case SatellitePackage.SPACECRAFT__PAYLOAD:
179 return getPayload();
180 case SatellitePackage.SPACECRAFT__KIND:
181 return getKind();
182 }
183 return super.eGet(featureID, resolve, coreType);
184 }
185
186 /**
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @generated
190 */
191 @Override
192 public void eSet(int featureID, Object newValue) {
193 switch (featureID) {
194 case SatellitePackage.SPACECRAFT__PAYLOAD:
195 setPayload((Payload) newValue);
196 return;
197 case SatellitePackage.SPACECRAFT__KIND:
198 setKind((SpacecraftKind) newValue);
199 return;
200 }
201 super.eSet(featureID, newValue);
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 @Override
210 public void eUnset(int featureID) {
211 switch (featureID) {
212 case SatellitePackage.SPACECRAFT__PAYLOAD:
213 setPayload((Payload) null);
214 return;
215 case SatellitePackage.SPACECRAFT__KIND:
216 setKind(KIND_EDEFAULT);
217 return;
218 }
219 super.eUnset(featureID);
220 }
221
222 /**
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public boolean eIsSet(int featureID) {
229 switch (featureID) {
230 case SatellitePackage.SPACECRAFT__PAYLOAD:
231 return payload != null;
232 case SatellitePackage.SPACECRAFT__KIND:
233 return kind != KIND_EDEFAULT;
234 }
235 return super.eIsSet(featureID);
236 }
237
238 /**
239 * <!-- begin-user-doc -->
240 * <!-- end-user-doc -->
241 * @generated
242 */
243 @Override
244 public String toString() {
245 if (eIsProxy())
246 return super.toString();
247
248 StringBuilder result = new StringBuilder(super.toString());
249 result.append(" (kind: ");
250 result.append(kind);
251 result.append(')');
252 return result.toString();
253 }
254
255} //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..639a40b7
--- /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,271 @@
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 defaultCase(EObject object) {
116 return createEObjectAdapter();
117 }
118 };
119
120 /**
121 * Creates an adapter for the <code>target</code>.
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @param target the object to adapt.
125 * @return the adapter for the <code>target</code>.
126 * @generated
127 */
128 @Override
129 public Adapter createAdapter(Notifier target) {
130 return modelSwitch.doSwitch((EObject) target);
131 }
132
133 /**
134 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission <em>Constellation Mission</em>}'.
135 * <!-- begin-user-doc -->
136 * This default implementation returns null so that we can easily ignore cases;
137 * it's useful to ignore a case when inheritance will catch all the cases anyway.
138 * <!-- end-user-doc -->
139 * @return the new adapter.
140 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission
141 * @generated
142 */
143 public Adapter createConstellationMissionAdapter() {
144 return null;
145 }
146
147 /**
148 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission <em>Interferometry Mission</em>}'.
149 * <!-- begin-user-doc -->
150 * This default implementation returns null so that we can easily ignore cases;
151 * it's useful to ignore a case when inheritance will catch all the cases anyway.
152 * <!-- end-user-doc -->
153 * @return the new adapter.
154 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission
155 * @generated
156 */
157 public Adapter createInterferometryMissionAdapter() {
158 return null;
159 }
160
161 /**
162 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement <em>Communicating Element</em>}'.
163 * <!-- begin-user-doc -->
164 * This default implementation returns null so that we can easily ignore cases;
165 * it's useful to ignore a case when inheritance will catch all the cases anyway.
166 * <!-- end-user-doc -->
167 * @return the new adapter.
168 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement
169 * @generated
170 */
171 public Adapter createCommunicatingElementAdapter() {
172 return null;
173 }
174
175 /**
176 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork <em>Ground Station Network</em>}'.
177 * <!-- begin-user-doc -->
178 * This default implementation returns null so that we can easily ignore cases;
179 * it's useful to ignore a case when inheritance will catch all the cases anyway.
180 * <!-- end-user-doc -->
181 * @return the new adapter.
182 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.GroundStationNetwork
183 * @generated
184 */
185 public Adapter createGroundStationNetworkAdapter() {
186 return null;
187 }
188
189 /**
190 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft <em>Spacecraft</em>}'.
191 * <!-- begin-user-doc -->
192 * This default implementation returns null so that we can easily ignore cases;
193 * it's useful to ignore a case when inheritance will catch all the cases anyway.
194 * <!-- end-user-doc -->
195 * @return the new adapter.
196 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft
197 * @generated
198 */
199 public Adapter createSpacecraftAdapter() {
200 return null;
201 }
202
203 /**
204 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem <em>Comm Subsystem</em>}'.
205 * <!-- begin-user-doc -->
206 * This default implementation returns null so that we can easily ignore cases;
207 * it's useful to ignore a case when inheritance will catch all the cases anyway.
208 * <!-- end-user-doc -->
209 * @return the new adapter.
210 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem
211 * @generated
212 */
213 public Adapter createCommSubsystemAdapter() {
214 return null;
215 }
216
217 /**
218 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink <em>Directed Communication Link</em>}'.
219 * <!-- begin-user-doc -->
220 * This default implementation returns null so that we can easily ignore cases;
221 * it's useful to ignore a case when inheritance will catch all the cases anyway.
222 * <!-- end-user-doc -->
223 * @return the new adapter.
224 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink
225 * @generated
226 */
227 public Adapter createDirectedCommunicationLinkAdapter() {
228 return null;
229 }
230
231 /**
232 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.Payload <em>Payload</em>}'.
233 * <!-- begin-user-doc -->
234 * This default implementation returns null so that we can easily ignore cases;
235 * it's useful to ignore a case when inheritance will catch all the cases anyway.
236 * <!-- end-user-doc -->
237 * @return the new adapter.
238 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.Payload
239 * @generated
240 */
241 public Adapter createPayloadAdapter() {
242 return null;
243 }
244
245 /**
246 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload <em>Interferometry Payload</em>}'.
247 * <!-- begin-user-doc -->
248 * This default implementation returns null so that we can easily ignore cases;
249 * it's useful to ignore a case when inheritance will catch all the cases anyway.
250 * <!-- end-user-doc -->
251 * @return the new adapter.
252 * @see hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryPayload
253 * @generated
254 */
255 public Adapter createInterferometryPayloadAdapter() {
256 return null;
257 }
258
259 /**
260 * Creates a new adapter for the default case.
261 * <!-- begin-user-doc -->
262 * This default implementation returns null.
263 * <!-- end-user-doc -->
264 * @return the new adapter.
265 * @generated
266 */
267 public Adapter createEObjectAdapter() {
268 return null;
269 }
270
271} //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..e78a1cd2
--- /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,296 @@
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 default:
141 return defaultCase(theEObject);
142 }
143 }
144
145 /**
146 * Returns the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
147 * <!-- begin-user-doc -->
148 * This implementation returns null;
149 * returning a non-null result will terminate the switch.
150 * <!-- end-user-doc -->
151 * @param object the target of the switch.
152 * @return the result of interpreting the object as an instance of '<em>Constellation Mission</em>'.
153 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
154 * @generated
155 */
156 public T caseConstellationMission(ConstellationMission object) {
157 return null;
158 }
159
160 /**
161 * Returns the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
162 * <!-- begin-user-doc -->
163 * This implementation returns null;
164 * returning a non-null result will terminate the switch.
165 * <!-- end-user-doc -->
166 * @param object the target of the switch.
167 * @return the result of interpreting the object as an instance of '<em>Interferometry Mission</em>'.
168 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
169 * @generated
170 */
171 public T caseInterferometryMission(InterferometryMission object) {
172 return null;
173 }
174
175 /**
176 * Returns the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
177 * <!-- begin-user-doc -->
178 * This implementation returns null;
179 * returning a non-null result will terminate the switch.
180 * <!-- end-user-doc -->
181 * @param object the target of the switch.
182 * @return the result of interpreting the object as an instance of '<em>Communicating Element</em>'.
183 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
184 * @generated
185 */
186 public T caseCommunicatingElement(CommunicatingElement object) {
187 return null;
188 }
189
190 /**
191 * Returns the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
192 * <!-- begin-user-doc -->
193 * This implementation returns null;
194 * returning a non-null result will terminate the switch.
195 * <!-- end-user-doc -->
196 * @param object the target of the switch.
197 * @return the result of interpreting the object as an instance of '<em>Ground Station Network</em>'.
198 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
199 * @generated
200 */
201 public T caseGroundStationNetwork(GroundStationNetwork object) {
202 return null;
203 }
204
205 /**
206 * Returns the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
207 * <!-- begin-user-doc -->
208 * This implementation returns null;
209 * returning a non-null result will terminate the switch.
210 * <!-- end-user-doc -->
211 * @param object the target of the switch.
212 * @return the result of interpreting the object as an instance of '<em>Spacecraft</em>'.
213 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
214 * @generated
215 */
216 public T caseSpacecraft(Spacecraft object) {
217 return null;
218 }
219
220 /**
221 * Returns the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
222 * <!-- begin-user-doc -->
223 * This implementation returns null;
224 * returning a non-null result will terminate the switch.
225 * <!-- end-user-doc -->
226 * @param object the target of the switch.
227 * @return the result of interpreting the object as an instance of '<em>Comm Subsystem</em>'.
228 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
229 * @generated
230 */
231 public T caseCommSubsystem(CommSubsystem object) {
232 return null;
233 }
234
235 /**
236 * Returns the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
237 * <!-- begin-user-doc -->
238 * This implementation returns null;
239 * returning a non-null result will terminate the switch.
240 * <!-- end-user-doc -->
241 * @param object the target of the switch.
242 * @return the result of interpreting the object as an instance of '<em>Directed Communication Link</em>'.
243 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
244 * @generated
245 */
246 public T caseDirectedCommunicationLink(DirectedCommunicationLink object) {
247 return null;
248 }
249
250 /**
251 * Returns the result of interpreting the object as an instance of '<em>Payload</em>'.
252 * <!-- begin-user-doc -->
253 * This implementation returns null;
254 * returning a non-null result will terminate the switch.
255 * <!-- end-user-doc -->
256 * @param object the target of the switch.
257 * @return the result of interpreting the object as an instance of '<em>Payload</em>'.
258 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
259 * @generated
260 */
261 public T casePayload(Payload object) {
262 return null;
263 }
264
265 /**
266 * Returns the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
267 * <!-- begin-user-doc -->
268 * This implementation returns null;
269 * returning a non-null result will terminate the switch.
270 * <!-- end-user-doc -->
271 * @param object the target of the switch.
272 * @return the result of interpreting the object as an instance of '<em>Interferometry Payload</em>'.
273 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
274 * @generated
275 */
276 public T caseInterferometryPayload(InterferometryPayload object) {
277 return null;
278 }
279
280 /**
281 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
282 * <!-- begin-user-doc -->
283 * This implementation returns null;
284 * returning a non-null result will terminate the switch, but this is the last case anyway.
285 * <!-- end-user-doc -->
286 * @param object the target of the switch.
287 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
288 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
289 * @generated
290 */
291 @Override
292 public T defaultCase(EObject object) {
293 return null;
294 }
295
296} //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..569089d8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.aird
@@ -0,0 +1,2074 @@
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 <ownedViews xmi:type="viewpoint:DView" uid="_reOHEF0qEemRYLyXht2IrQ">
1310 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
1311 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_re1yIF0qEemRYLyXht2IrQ" name="satellite" repPath="#_rel6gF0qEemRYLyXht2IrQ">
1312 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
1313 <target xmi:type="ecore:EPackage" href="satellite.ecore#/"/>
1314 </ownedRepresentationDescriptors>
1315 </ownedViews>
1316 </viewpoint:DAnalysis>
1317 <diagram:DSemanticDiagram uid="_rel6gF0qEemRYLyXht2IrQ" name="satellite">
1318 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_rew5oF0qEemRYLyXht2IrQ" source="DANNOTATION_CUSTOMIZATION_KEY">
1319 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_rexgsF0qEemRYLyXht2IrQ">
1320 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_028-wF0vEemRYLyXht2IrQ" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
1321 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1322 <labelFormat>bold</labelFormat>
1323 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1324 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1325 </computedStyleDescriptions>
1326 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan">
1327 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1328 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6kODkV0vEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1329 <labelFormat>bold</labelFormat>
1330 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1331 </centerLabelStyleDescription>
1332 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6kODkl0vEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1333 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1334 </endLabelStyleDescription>
1335 </computedStyleDescriptions>
1336 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan">
1337 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1338 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ccHLEV0wEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1339 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1340 </centerLabelStyleDescription>
1341 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ccHLEl0wEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1342 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1343 </endLabelStyleDescription>
1344 </computedStyleDescriptions>
1345 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan">
1346 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1347 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_fDAfYV0xEemRYLyXht2IrQ" showIcon="false" labelExpression="service:render">
1348 <labelFormat>bold</labelFormat>
1349 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1350 </centerLabelStyleDescription>
1351 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_fDAfYl0xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1352 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1353 </endLabelStyleDescription>
1354 </computedStyleDescriptions>
1355 </data>
1356 </ownedAnnotationEntries>
1357 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_rfAxQF0qEemRYLyXht2IrQ" source="GMF_DIAGRAMS">
1358 <data xmi:type="notation:Diagram" xmi:id="_rfAxQV0qEemRYLyXht2IrQ" type="Sirius" element="_rel6gF0qEemRYLyXht2IrQ" measurementUnit="Pixel">
1359 <children xmi:type="notation:Node" xmi:id="_tNH44F0qEemRYLyXht2IrQ" type="2003" element="_tM4oUF0qEemRYLyXht2IrQ">
1360 <children xmi:type="notation:Node" xmi:id="_tNK8MF0qEemRYLyXht2IrQ" type="5007"/>
1361 <children xmi:type="notation:Node" xmi:id="_tNLjQF0qEemRYLyXht2IrQ" type="7004">
1362 <styles xmi:type="notation:SortingStyle" xmi:id="_tNLjQV0qEemRYLyXht2IrQ"/>
1363 <styles xmi:type="notation:FilteringStyle" xmi:id="_tNLjQl0qEemRYLyXht2IrQ"/>
1364 </children>
1365 <styles xmi:type="notation:ShapeStyle" xmi:id="_tNH44V0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1366 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNH44l0qEemRYLyXht2IrQ" x="39" y="39" width="146" height="100"/>
1367 </children>
1368 <children xmi:type="notation:Node" xmi:id="_vlcbIF0qEemRYLyXht2IrQ" type="2003" element="_vlPm0F0qEemRYLyXht2IrQ">
1369 <children xmi:type="notation:Node" xmi:id="_vldpQF0qEemRYLyXht2IrQ" type="5007"/>
1370 <children xmi:type="notation:Node" xmi:id="_vldpQV0qEemRYLyXht2IrQ" type="7004">
1371 <children xmi:type="notation:Node" xmi:id="_zCslIF0qEemRYLyXht2IrQ" type="3010" element="_zChmAF0qEemRYLyXht2IrQ">
1372 <styles xmi:type="notation:FontStyle" xmi:id="_zCslIV0qEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1373 <layoutConstraint xmi:type="notation:Location" xmi:id="_zCslIl0qEemRYLyXht2IrQ"/>
1374 </children>
1375 <styles xmi:type="notation:SortingStyle" xmi:id="_vldpQl0qEemRYLyXht2IrQ"/>
1376 <styles xmi:type="notation:FilteringStyle" xmi:id="_vldpQ10qEemRYLyXht2IrQ"/>
1377 </children>
1378 <styles xmi:type="notation:ShapeStyle" xmi:id="_vlcbIV0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1379 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vlcbIl0qEemRYLyXht2IrQ" x="39" y="182" width="146" height="100"/>
1380 </children>
1381 <children xmi:type="notation:Node" xmi:id="_3UIIoF0rEemRYLyXht2IrQ" type="2003" element="_3T7UUF0rEemRYLyXht2IrQ">
1382 <children xmi:type="notation:Node" xmi:id="_3UJWwF0rEemRYLyXht2IrQ" type="5007"/>
1383 <children xmi:type="notation:Node" xmi:id="_3UJWwV0rEemRYLyXht2IrQ" type="7004">
1384 <styles xmi:type="notation:SortingStyle" xmi:id="_3UJWwl0rEemRYLyXht2IrQ"/>
1385 <styles xmi:type="notation:FilteringStyle" xmi:id="_3UJWw10rEemRYLyXht2IrQ"/>
1386 </children>
1387 <styles xmi:type="notation:ShapeStyle" xmi:id="_3UIIoV0rEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1388 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3UIIol0rEemRYLyXht2IrQ" x="390" y="182" width="172" height="100"/>
1389 </children>
1390 <children xmi:type="notation:Node" xmi:id="__OldwF0rEemRYLyXht2IrQ" type="2003" element="__OYCYF0rEemRYLyXht2IrQ">
1391 <children xmi:type="notation:Node" xmi:id="__OmE0F0rEemRYLyXht2IrQ" type="5007"/>
1392 <children xmi:type="notation:Node" xmi:id="__Omr4F0rEemRYLyXht2IrQ" type="7004">
1393 <styles xmi:type="notation:SortingStyle" xmi:id="__Omr4V0rEemRYLyXht2IrQ"/>
1394 <styles xmi:type="notation:FilteringStyle" xmi:id="__Omr4l0rEemRYLyXht2IrQ"/>
1395 </children>
1396 <styles xmi:type="notation:ShapeStyle" xmi:id="__OldwV0rEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1397 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Oldwl0rEemRYLyXht2IrQ" x="507" y="325" width="159" height="100"/>
1398 </children>
1399 <children xmi:type="notation:Node" xmi:id="_Aq3OgF0sEemRYLyXht2IrQ" type="2003" element="_AqsPYF0sEemRYLyXht2IrQ">
1400 <children xmi:type="notation:Node" xmi:id="_Aq31kF0sEemRYLyXht2IrQ" type="5007"/>
1401 <children xmi:type="notation:Node" xmi:id="_Aq31kV0sEemRYLyXht2IrQ" type="7004">
1402 <children xmi:type="notation:Node" xmi:id="_-9pX8G60Eem3gIPdAp40Tw" type="3010" element="_-9TZsG60Eem3gIPdAp40Tw">
1403 <styles xmi:type="notation:FontStyle" xmi:id="_-9pX8W60Eem3gIPdAp40Tw" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1404 <layoutConstraint xmi:type="notation:Location" xmi:id="_-9pX8m60Eem3gIPdAp40Tw"/>
1405 </children>
1406 <styles xmi:type="notation:SortingStyle" xmi:id="_Aq31kl0sEemRYLyXht2IrQ"/>
1407 <styles xmi:type="notation:FilteringStyle" xmi:id="_Aq31k10sEemRYLyXht2IrQ"/>
1408 </children>
1409 <styles xmi:type="notation:ShapeStyle" xmi:id="_Aq3OgV0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1410 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aq3Ogl0sEemRYLyXht2IrQ" x="338" y="325" width="120" height="100"/>
1411 </children>
1412 <children xmi:type="notation:Node" xmi:id="_j0vs4F0tEemRYLyXht2IrQ" type="2003" element="_j0eAEF0tEemRYLyXht2IrQ">
1413 <children xmi:type="notation:Node" xmi:id="_j0wT8F0tEemRYLyXht2IrQ" type="5007"/>
1414 <children xmi:type="notation:Node" xmi:id="_j0wT8V0tEemRYLyXht2IrQ" type="7004">
1415 <children xmi:type="notation:Node" xmi:id="_zugwAF0vEemRYLyXht2IrQ" type="3010" element="_zuaCUF0vEemRYLyXht2IrQ">
1416 <styles xmi:type="notation:FontStyle" xmi:id="_zugwAV0vEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1417 <layoutConstraint xmi:type="notation:Location" xmi:id="_zugwAl0vEemRYLyXht2IrQ"/>
1418 </children>
1419 <children xmi:type="notation:Node" xmi:id="_Q89nMF0wEemRYLyXht2IrQ" type="3010" element="_Q8yBAF0wEemRYLyXht2IrQ">
1420 <styles xmi:type="notation:FontStyle" xmi:id="_Q89nMV0wEemRYLyXht2IrQ" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
1421 <layoutConstraint xmi:type="notation:Location" xmi:id="_Q89nMl0wEemRYLyXht2IrQ"/>
1422 </children>
1423 <styles xmi:type="notation:SortingStyle" xmi:id="_j0wT8l0tEemRYLyXht2IrQ"/>
1424 <styles xmi:type="notation:FilteringStyle" xmi:id="_j0wT810tEemRYLyXht2IrQ"/>
1425 </children>
1426 <styles xmi:type="notation:ShapeStyle" xmi:id="_j0vs4V0tEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1427 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j0vs4l0tEemRYLyXht2IrQ" x="754" y="182" width="198" height="100"/>
1428 </children>
1429 <children xmi:type="notation:Node" xmi:id="_vyrzoF0vEemRYLyXht2IrQ" type="2003" element="_vyhbkF0vEemRYLyXht2IrQ">
1430 <children xmi:type="notation:Node" xmi:id="_vysasF0vEemRYLyXht2IrQ" type="5007"/>
1431 <children xmi:type="notation:Node" xmi:id="_vysasV0vEemRYLyXht2IrQ" type="7004">
1432 <children xmi:type="notation:Node" xmi:id="_x32JUF0vEemRYLyXht2IrQ" type="3010" element="_x3rKMF0vEemRYLyXht2IrQ">
1433 <styles xmi:type="notation:FontStyle" xmi:id="_x32JUV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1434 <layoutConstraint xmi:type="notation:Location" xmi:id="_x32JUl0vEemRYLyXht2IrQ"/>
1435 </children>
1436 <children xmi:type="notation:Node" xmi:id="_yhHIwF0vEemRYLyXht2IrQ" type="3010" element="_yg2DAF0vEemRYLyXht2IrQ">
1437 <styles xmi:type="notation:FontStyle" xmi:id="_yhHIwV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1438 <layoutConstraint xmi:type="notation:Location" xmi:id="_yhHIwl0vEemRYLyXht2IrQ"/>
1439 </children>
1440 <children xmi:type="notation:Node" xmi:id="_zAX3oF0vEemRYLyXht2IrQ" type="3010" element="_zAInEF0vEemRYLyXht2IrQ">
1441 <styles xmi:type="notation:FontStyle" xmi:id="_zAX3oV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1442 <layoutConstraint xmi:type="notation:Location" xmi:id="_zAX3ol0vEemRYLyXht2IrQ"/>
1443 </children>
1444 <styles xmi:type="notation:SortingStyle" xmi:id="_vysasl0vEemRYLyXht2IrQ"/>
1445 <styles xmi:type="notation:FilteringStyle" xmi:id="_vysas10vEemRYLyXht2IrQ"/>
1446 </children>
1447 <styles xmi:type="notation:ShapeStyle" xmi:id="_vyrzoV0vEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1448 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyrzol0vEemRYLyXht2IrQ" x="988" y="39" width="120" height="100"/>
1449 </children>
1450 <children xmi:type="notation:Node" xmi:id="_Ct-Y8F0wEemRYLyXht2IrQ" type="2003" element="_Ctw9kF0wEemRYLyXht2IrQ">
1451 <children xmi:type="notation:Node" xmi:id="_Ct_AAF0wEemRYLyXht2IrQ" type="5007"/>
1452 <children xmi:type="notation:Node" xmi:id="_Ct_nEF0wEemRYLyXht2IrQ" type="7004">
1453 <styles xmi:type="notation:SortingStyle" xmi:id="_Ct_nEV0wEemRYLyXht2IrQ"/>
1454 <styles xmi:type="notation:FilteringStyle" xmi:id="_Ct_nEl0wEemRYLyXht2IrQ"/>
1455 </children>
1456 <styles xmi:type="notation:ShapeStyle" xmi:id="_Ct-Y8V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1457 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ct-Y8l0wEemRYLyXht2IrQ" x="754" y="325" width="198" height="100"/>
1458 </children>
1459 <children xmi:type="notation:Node" xmi:id="_M5X18F0wEemRYLyXht2IrQ" type="2003" element="_M5OsAF0wEemRYLyXht2IrQ">
1460 <children xmi:type="notation:Node" xmi:id="_M5YdAF0wEemRYLyXht2IrQ" type="5007"/>
1461 <children xmi:type="notation:Node" xmi:id="_M5YdAV0wEemRYLyXht2IrQ" type="7004">
1462 <children xmi:type="notation:Node" xmi:id="_OBrh0F0wEemRYLyXht2IrQ" type="3010" element="_OBacEF0wEemRYLyXht2IrQ">
1463 <styles xmi:type="notation:FontStyle" xmi:id="_OBrh0V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1464 <layoutConstraint xmi:type="notation:Location" xmi:id="_OBrh0l0wEemRYLyXht2IrQ"/>
1465 </children>
1466 <children xmi:type="notation:Node" xmi:id="_Oca9EF0wEemRYLyXht2IrQ" type="3010" element="_OcLsgF0wEemRYLyXht2IrQ">
1467 <styles xmi:type="notation:FontStyle" xmi:id="_Oca9EV0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1468 <layoutConstraint xmi:type="notation:Location" xmi:id="_Oca9El0wEemRYLyXht2IrQ"/>
1469 </children>
1470 <children xmi:type="notation:Node" xmi:id="_O9880F0wEemRYLyXht2IrQ" type="3010" element="_O9wIgF0wEemRYLyXht2IrQ">
1471 <styles xmi:type="notation:FontStyle" xmi:id="_O9880V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1472 <layoutConstraint xmi:type="notation:Location" xmi:id="_O9880l0wEemRYLyXht2IrQ"/>
1473 </children>
1474 <styles xmi:type="notation:SortingStyle" xmi:id="_M5YdAl0wEemRYLyXht2IrQ"/>
1475 <styles xmi:type="notation:FilteringStyle" xmi:id="_M5YdA10wEemRYLyXht2IrQ"/>
1476 </children>
1477 <styles xmi:type="notation:ShapeStyle" xmi:id="_M5X18V0wEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1478 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M5X18l0wEemRYLyXht2IrQ" x="988" y="182" width="120" height="100"/>
1479 </children>
1480 <children xmi:type="notation:Node" xmi:id="_0aeMMF0xEemRYLyXht2IrQ" type="2003" element="_0aW3cF0xEemRYLyXht2IrQ">
1481 <children xmi:type="notation:Node" xmi:id="_0aeMM10xEemRYLyXht2IrQ" type="5007"/>
1482 <children xmi:type="notation:Node" xmi:id="_0aezQF0xEemRYLyXht2IrQ" type="7004">
1483 <styles xmi:type="notation:SortingStyle" xmi:id="_0aezQV0xEemRYLyXht2IrQ"/>
1484 <styles xmi:type="notation:FilteringStyle" xmi:id="_0aezQl0xEemRYLyXht2IrQ"/>
1485 </children>
1486 <styles xmi:type="notation:ShapeStyle" xmi:id="_0aeMMV0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1487 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0aeMMl0xEemRYLyXht2IrQ" x="52" y="325" width="120" height="100"/>
1488 </children>
1489 <children xmi:type="notation:Node" xmi:id="_45PdkF0xEemRYLyXht2IrQ" type="2003" element="_45FskF0xEemRYLyXht2IrQ">
1490 <children xmi:type="notation:Node" xmi:id="_45QEoF0xEemRYLyXht2IrQ" type="5007"/>
1491 <children xmi:type="notation:Node" xmi:id="_45QEoV0xEemRYLyXht2IrQ" type="7004">
1492 <styles xmi:type="notation:SortingStyle" xmi:id="_45QEol0xEemRYLyXht2IrQ"/>
1493 <styles xmi:type="notation:FilteringStyle" xmi:id="_45QEo10xEemRYLyXht2IrQ"/>
1494 </children>
1495 <styles xmi:type="notation:ShapeStyle" xmi:id="_45PdkV0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1496 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_45Pdkl0xEemRYLyXht2IrQ" x="39" y="481" width="146" height="100"/>
1497 </children>
1498 <children xmi:type="notation:Node" xmi:id="_2omYkG60Eem3gIPdAp40Tw" type="2003" element="_2oBw0G60Eem3gIPdAp40Tw">
1499 <children xmi:type="notation:Node" xmi:id="_2orREG60Eem3gIPdAp40Tw" type="5007"/>
1500 <children xmi:type="notation:Node" xmi:id="_2or4IG60Eem3gIPdAp40Tw" type="7004">
1501 <children xmi:type="notation:Node" xmi:id="_5QV24G60Eem3gIPdAp40Tw" type="3010" element="_5P_4oG60Eem3gIPdAp40Tw">
1502 <styles xmi:type="notation:FontStyle" xmi:id="_5QV24W60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1503 <layoutConstraint xmi:type="notation:Location" xmi:id="_5QV24m60Eem3gIPdAp40Tw"/>
1504 </children>
1505 <children xmi:type="notation:Node" xmi:id="_6f0hwG60Eem3gIPdAp40Tw" type="3010" element="_6fjcAG60Eem3gIPdAp40Tw">
1506 <styles xmi:type="notation:FontStyle" xmi:id="_6f0hwW60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1507 <layoutConstraint xmi:type="notation:Location" xmi:id="_6f0hwm60Eem3gIPdAp40Tw"/>
1508 </children>
1509 <children xmi:type="notation:Node" xmi:id="_7SZ1QG60Eem3gIPdAp40Tw" type="3010" element="_7R9JUG60Eem3gIPdAp40Tw">
1510 <styles xmi:type="notation:FontStyle" xmi:id="_7SZ1QW60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1511 <layoutConstraint xmi:type="notation:Location" xmi:id="_7SZ1Qm60Eem3gIPdAp40Tw"/>
1512 </children>
1513 <styles xmi:type="notation:SortingStyle" xmi:id="_2or4IW60Eem3gIPdAp40Tw"/>
1514 <styles xmi:type="notation:FilteringStyle" xmi:id="_2or4Im60Eem3gIPdAp40Tw"/>
1515 </children>
1516 <styles xmi:type="notation:ShapeStyle" xmi:id="_2omYkW60Eem3gIPdAp40Tw" fontName="Noto Sans" fontHeight="8"/>
1517 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2omYkm60Eem3gIPdAp40Tw" x="990" y="325" width="120" height="100"/>
1518 </children>
1519 <styles xmi:type="notation:DiagramStyle" xmi:id="_rfAxQl0qEemRYLyXht2IrQ"/>
1520 <edges xmi:type="notation:Edge" xmi:id="_0jV4gF0qEemRYLyXht2IrQ" type="4001" element="_0jIdIF0qEemRYLyXht2IrQ" source="_vlcbIF0qEemRYLyXht2IrQ" target="_tNH44F0qEemRYLyXht2IrQ">
1521 <children xmi:type="notation:Node" xmi:id="_0jXGoF0qEemRYLyXht2IrQ" type="6001">
1522 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jXGoV0qEemRYLyXht2IrQ" y="-10"/>
1523 </children>
1524 <children xmi:type="notation:Node" xmi:id="_0jXtsF0qEemRYLyXht2IrQ" type="6002">
1525 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jXtsV0qEemRYLyXht2IrQ" y="10"/>
1526 </children>
1527 <children xmi:type="notation:Node" xmi:id="_0jYUwF0qEemRYLyXht2IrQ" type="6003">
1528 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0jYUwV0qEemRYLyXht2IrQ" y="10"/>
1529 </children>
1530 <styles xmi:type="notation:ConnectorStyle" xmi:id="_0jV4gV0qEemRYLyXht2IrQ" routing="Tree"/>
1531 <styles xmi:type="notation:FontStyle" xmi:id="_0jV4gl0qEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1532 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0jV4g10qEemRYLyXht2IrQ" points="[0, 0, 0, 45]$[0, -45, 0, 0]"/>
1533 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0jaxAF0qEemRYLyXht2IrQ" id="(0.410958904109589,0.01)"/>
1534 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0jaxAV0qEemRYLyXht2IrQ" id="(0.4548611111111111,0.5)"/>
1535 </edges>
1536 <edges xmi:type="notation:Edge" xmi:id="_Npck0F0sEemRYLyXht2IrQ" type="4001" element="_NpQ-pl0sEemRYLyXht2IrQ" source="__OldwF0rEemRYLyXht2IrQ" target="_3UIIoF0rEemRYLyXht2IrQ">
1537 <children xmi:type="notation:Node" xmi:id="_NpdL4F0sEemRYLyXht2IrQ" type="6001">
1538 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL4V0sEemRYLyXht2IrQ" y="-10"/>
1539 </children>
1540 <children xmi:type="notation:Node" xmi:id="_NpdL4l0sEemRYLyXht2IrQ" type="6002">
1541 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL410sEemRYLyXht2IrQ" y="10"/>
1542 </children>
1543 <children xmi:type="notation:Node" xmi:id="_NpdL5F0sEemRYLyXht2IrQ" type="6003">
1544 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpdL5V0sEemRYLyXht2IrQ" y="10"/>
1545 </children>
1546 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Npck0V0sEemRYLyXht2IrQ" routing="Tree"/>
1547 <styles xmi:type="notation:FontStyle" xmi:id="_Npck0l0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1548 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Npck010sEemRYLyXht2IrQ" points="[0, 0, -103, 45]$[103, -45, 0, 0]"/>
1549 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpdL5l0sEemRYLyXht2IrQ" id="(0.5031847133757962,0.0)"/>
1550 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpdL510sEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1551 </edges>
1552 <edges xmi:type="notation:Edge" xmi:id="_PE8ScF0sEemRYLyXht2IrQ" type="4001" element="_PEp-k10sEemRYLyXht2IrQ" source="_Aq3OgF0sEemRYLyXht2IrQ" target="_3UIIoF0rEemRYLyXht2IrQ">
1553 <children xmi:type="notation:Node" xmi:id="_PE8SdF0sEemRYLyXht2IrQ" type="6001">
1554 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE8SdV0sEemRYLyXht2IrQ" y="-10"/>
1555 </children>
1556 <children xmi:type="notation:Node" xmi:id="_PE8Sdl0sEemRYLyXht2IrQ" type="6002">
1557 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE8Sd10sEemRYLyXht2IrQ" y="10"/>
1558 </children>
1559 <children xmi:type="notation:Node" xmi:id="_PE85gF0sEemRYLyXht2IrQ" type="6003">
1560 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PE85gV0sEemRYLyXht2IrQ" y="10"/>
1561 </children>
1562 <styles xmi:type="notation:ConnectorStyle" xmi:id="_PE8ScV0sEemRYLyXht2IrQ" routing="Tree"/>
1563 <styles xmi:type="notation:FontStyle" xmi:id="_PE8Scl0sEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1564 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PE8Sc10sEemRYLyXht2IrQ" points="[0, 0, 97, 45]$[-97, -45, 0, 0]"/>
1565 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PE85gl0sEemRYLyXht2IrQ" id="(0.5508474576271186,0.0)"/>
1566 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PE85g10sEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1567 </edges>
1568 <edges xmi:type="notation:Edge" xmi:id="_4CEP4F0vEemRYLyXht2IrQ" type="4001" element="_4B9iMF0vEemRYLyXht2IrQ" source="_3UIIoF0rEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1569 <children xmi:type="notation:Node" xmi:id="_4CEP5F0vEemRYLyXht2IrQ" type="6001">
1570 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CEP5V0vEemRYLyXht2IrQ" x="13" y="-18"/>
1571 </children>
1572 <children xmi:type="notation:Node" xmi:id="_4CE28F0vEemRYLyXht2IrQ" type="6002">
1573 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CE28V0vEemRYLyXht2IrQ" x="54" y="10"/>
1574 </children>
1575 <children xmi:type="notation:Node" xmi:id="_4CE28l0vEemRYLyXht2IrQ" type="6003">
1576 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CE2810vEemRYLyXht2IrQ" x="28" y="10"/>
1577 </children>
1578 <styles xmi:type="notation:ConnectorStyle" xmi:id="_4CEP4V0vEemRYLyXht2IrQ" routing="Rectilinear"/>
1579 <styles xmi:type="notation:FontStyle" xmi:id="_4CEP4l0vEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1580 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4CEP410vEemRYLyXht2IrQ" points="[0, -26, -194, -52]$[194, -26, 0, -52]"/>
1581 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CE29F0vEemRYLyXht2IrQ" id="(1.0,0.5306122448979592)"/>
1582 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CE29V0vEemRYLyXht2IrQ" id="(0.0,0.7959183673469388)"/>
1583 </edges>
1584 <edges xmi:type="notation:Edge" xmi:id="_ccT_YF0wEemRYLyXht2IrQ" type="4001" element="_ccF89l0wEemRYLyXht2IrQ" source="_3UIIoF0rEemRYLyXht2IrQ" target="_Ct-Y8F0wEemRYLyXht2IrQ">
1585 <children xmi:type="notation:Node" xmi:id="_ccT_ZF0wEemRYLyXht2IrQ" type="6001">
1586 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccT_ZV0wEemRYLyXht2IrQ" x="-32" y="39"/>
1587 </children>
1588 <children xmi:type="notation:Node" xmi:id="_ccUmcF0wEemRYLyXht2IrQ" type="6002">
1589 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUmcV0wEemRYLyXht2IrQ" x="48" y="10"/>
1590 </children>
1591 <children xmi:type="notation:Node" xmi:id="_ccUmcl0wEemRYLyXht2IrQ" type="6003">
1592 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUmc10wEemRYLyXht2IrQ" x="22" y="-8"/>
1593 </children>
1594 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccT_YV0wEemRYLyXht2IrQ" routing="Rectilinear"/>
1595 <styles xmi:type="notation:FontStyle" xmi:id="_ccT_Yl0wEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1596 <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]"/>
1597 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUmdF0wEemRYLyXht2IrQ" id="(0.8411764705882353,1.0)"/>
1598 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUmdV0wEemRYLyXht2IrQ" id="(0.0,0.6632653061224489)"/>
1599 </edges>
1600 <edges xmi:type="notation:Edge" xmi:id="_db1tQF0xEemRYLyXht2IrQ" type="4001" element="_dbuYhl0xEemRYLyXht2IrQ" source="_Ct-Y8F0wEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1601 <children xmi:type="notation:Node" xmi:id="_db2UUF0xEemRYLyXht2IrQ" type="6001">
1602 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UUV0xEemRYLyXht2IrQ" x="-5" y="-44"/>
1603 </children>
1604 <children xmi:type="notation:Node" xmi:id="_db2UUl0xEemRYLyXht2IrQ" type="6002">
1605 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UU10xEemRYLyXht2IrQ" y="10"/>
1606 </children>
1607 <children xmi:type="notation:Node" xmi:id="_db2UVF0xEemRYLyXht2IrQ" type="6003">
1608 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_db2UVV0xEemRYLyXht2IrQ" y="10"/>
1609 </children>
1610 <styles xmi:type="notation:ConnectorStyle" xmi:id="_db1tQV0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1611 <styles xmi:type="notation:FontStyle" xmi:id="_db1tQl0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1612 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_db1tQ10xEemRYLyXht2IrQ" points="[14, 0, 14, 45]$[14, -45, 14, 0]"/>
1613 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_db2UVl0xEemRYLyXht2IrQ" id="(0.19387755102040816,0.0)"/>
1614 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_db2UV10xEemRYLyXht2IrQ" id="(0.19387755102040816,1.0)"/>
1615 </edges>
1616 <edges xmi:type="notation:Edge" xmi:id="_i2ZRcF0xEemRYLyXht2IrQ" type="4001" element="_i2PgeV0xEemRYLyXht2IrQ" source="_Ct-Y8F0wEemRYLyXht2IrQ" target="_j0vs4F0tEemRYLyXht2IrQ">
1617 <children xmi:type="notation:Node" xmi:id="_i2ZRdF0xEemRYLyXht2IrQ" type="6001">
1618 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZRdV0xEemRYLyXht2IrQ" x="-5" y="46"/>
1619 </children>
1620 <children xmi:type="notation:Node" xmi:id="_i2ZRdl0xEemRYLyXht2IrQ" type="6002">
1621 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZRd10xEemRYLyXht2IrQ" y="10"/>
1622 </children>
1623 <children xmi:type="notation:Node" xmi:id="_i2ZReF0xEemRYLyXht2IrQ" type="6003">
1624 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i2ZReV0xEemRYLyXht2IrQ" y="10"/>
1625 </children>
1626 <styles xmi:type="notation:ConnectorStyle" xmi:id="_i2ZRcV0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1627 <styles xmi:type="notation:FontStyle" xmi:id="_i2ZRcl0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1628 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_i2ZRc10xEemRYLyXht2IrQ" points="[0, 0, 0, 45]$[0, -45, 0, 0]"/>
1629 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_i2ZRel0xEemRYLyXht2IrQ" id="(0.7193877551020408,0.0)"/>
1630 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_i2ZRe10xEemRYLyXht2IrQ" id="(0.7193877551020408,1.0)"/>
1631 </edges>
1632 <edges xmi:type="notation:Edge" xmi:id="_3HAq8F0xEemRYLyXht2IrQ" type="4001" element="_3GzPll0xEemRYLyXht2IrQ" source="_Aq3OgF0sEemRYLyXht2IrQ" target="_0aeMMF0xEemRYLyXht2IrQ">
1633 <children xmi:type="notation:Node" xmi:id="_3HBSAF0xEemRYLyXht2IrQ" type="6001">
1634 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HBSAV0xEemRYLyXht2IrQ" y="-10"/>
1635 </children>
1636 <children xmi:type="notation:Node" xmi:id="_3HBSAl0xEemRYLyXht2IrQ" type="6002">
1637 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HBSA10xEemRYLyXht2IrQ" y="10"/>
1638 </children>
1639 <children xmi:type="notation:Node" xmi:id="_3HB5EF0xEemRYLyXht2IrQ" type="6003">
1640 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3HB5EV0xEemRYLyXht2IrQ" y="10"/>
1641 </children>
1642 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3HAq8V0xEemRYLyXht2IrQ" routing="Rectilinear"/>
1643 <styles xmi:type="notation:FontStyle" xmi:id="_3HAq8l0xEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1644 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3HAq810xEemRYLyXht2IrQ" points="[0, 0, 168, 0]$[-168, 0, 0, 0]"/>
1645 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3HB5El0xEemRYLyXht2IrQ" id="(0.0,0.5)"/>
1646 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3HB5E10xEemRYLyXht2IrQ" id="(1.0,0.5)"/>
1647 </edges>
1648 <edges xmi:type="notation:Edge" xmi:id="_8iOWcF0xEemRYLyXht2IrQ" type="4001" element="_8iFzll0xEemRYLyXht2IrQ" source="_45PdkF0xEemRYLyXht2IrQ" target="_0aeMMF0xEemRYLyXht2IrQ">
1649 <children xmi:type="notation:Node" xmi:id="_8iOWdF0xEemRYLyXht2IrQ" type="6001">
1650 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iOWdV0xEemRYLyXht2IrQ" y="-10"/>
1651 </children>
1652 <children xmi:type="notation:Node" xmi:id="_8iO9gF0xEemRYLyXht2IrQ" type="6002">
1653 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iO9gV0xEemRYLyXht2IrQ" y="10"/>
1654 </children>
1655 <children xmi:type="notation:Node" xmi:id="_8iO9gl0xEemRYLyXht2IrQ" type="6003">
1656 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8iO9g10xEemRYLyXht2IrQ" y="10"/>
1657 </children>
1658 <styles xmi:type="notation:ConnectorStyle" xmi:id="_8iOWcV0xEemRYLyXht2IrQ" routing="Tree"/>
1659 <styles xmi:type="notation:FontStyle" xmi:id="_8iOWcl0xEemRYLyXht2IrQ" fontName="Noto Sans" fontHeight="8"/>
1660 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8iOWc10xEemRYLyXht2IrQ" points="[0, 0, 0, 58]$[0, -58, 0, 0]"/>
1661 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8iO9hF0xEemRYLyXht2IrQ" id="(0.4246575342465753,0.01)"/>
1662 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8iO9hV0xEemRYLyXht2IrQ" id="(0.5,0.5)"/>
1663 </edges>
1664 <edges xmi:type="notation:Edge" xmi:id="_Kzrp4F0yEemRYLyXht2IrQ" type="4001" element="_KzljXl0yEemRYLyXht2IrQ" source="_tNH44F0qEemRYLyXht2IrQ" target="__OldwF0rEemRYLyXht2IrQ">
1665 <children xmi:type="notation:Node" xmi:id="_Kzrp5F0yEemRYLyXht2IrQ" type="6001">
1666 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp5V0yEemRYLyXht2IrQ" x="-11" y="-10"/>
1667 </children>
1668 <children xmi:type="notation:Node" xmi:id="_Kzrp5l0yEemRYLyXht2IrQ" type="6002">
1669 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp510yEemRYLyXht2IrQ" x="-3" y="10"/>
1670 </children>
1671 <children xmi:type="notation:Node" xmi:id="_Kzrp6F0yEemRYLyXht2IrQ" type="6003">
1672 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kzrp6V0yEemRYLyXht2IrQ" x="3" y="10"/>
1673 </children>
1674 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Kzrp4V0yEemRYLyXht2IrQ" routing="Rectilinear"/>
1675 <styles xmi:type="notation:FontStyle" xmi:id="_Kzrp4l0yEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1676 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kzrp410yEemRYLyXht2IrQ" points="[0, -57, -419, -265]$[418, -57, -1, -265]$[418, 208, -1, 0]"/>
1677 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kzrp6l0yEemRYLyXht2IrQ" id="(1.0,0.7959183673469388)"/>
1678 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kzrp610yEemRYLyXht2IrQ" id="(0.610062893081761,0.0)"/>
1679 </edges>
1680 <edges xmi:type="notation:Edge" xmi:id="_PdUugF0yEemRYLyXht2IrQ" type="4001" element="_PdH6PF0yEemRYLyXht2IrQ" source="_tNH44F0qEemRYLyXht2IrQ" target="_Aq3OgF0sEemRYLyXht2IrQ">
1681 <children xmi:type="notation:Node" xmi:id="_PdUuhF0yEemRYLyXht2IrQ" type="6001">
1682 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdUuhV0yEemRYLyXht2IrQ" x="-30" y="104"/>
1683 </children>
1684 <children xmi:type="notation:Node" xmi:id="_PdUuhl0yEemRYLyXht2IrQ" type="6002">
1685 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdUuh10yEemRYLyXht2IrQ" y="10"/>
1686 </children>
1687 <children xmi:type="notation:Node" xmi:id="_PdVVkF0yEemRYLyXht2IrQ" type="6003">
1688 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PdVVkV0yEemRYLyXht2IrQ" x="-4" y="10"/>
1689 </children>
1690 <styles xmi:type="notation:ConnectorStyle" xmi:id="_PdUugV0yEemRYLyXht2IrQ" routing="Rectilinear"/>
1691 <styles xmi:type="notation:FontStyle" xmi:id="_PdUugl0yEemRYLyXht2IrQ" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1692 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PdUug10yEemRYLyXht2IrQ" points="[40, -32, -194, -220]$[221, -32, -13, -220]$[221, 188, -13, 0]"/>
1693 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PdVVkl0yEemRYLyXht2IrQ" id="(0.7222222222222222,1.0)"/>
1694 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PdVVk10yEemRYLyXht2IrQ" id="(0.3305084745762712,0.0)"/>
1695 </edges>
1696 </data>
1697 </ownedAnnotationEntries>
1698 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tM4oUF0qEemRYLyXht2IrQ" name="ConstellationMission" tooltipText="" outgoingEdges="_KzljXl0yEemRYLyXht2IrQ _PdH6PF0yEemRYLyXht2IrQ" incomingEdges="_0jIdIF0qEemRYLyXht2IrQ" width="12" height="10">
1699 <target xmi:type="ecore:EClass" href="satellite.ecore#//ConstellationMission"/>
1700 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//ConstellationMission"/>
1701 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1702 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1703 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1704 <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">
1705 <labelFormat>italic</labelFormat>
1706 <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"/>
1707 </ownedStyle>
1708 <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']"/>
1709 </ownedDiagramElements>
1710 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vlPm0F0qEemRYLyXht2IrQ" name="InterferometryMission" tooltipText="" outgoingEdges="_0jIdIF0qEemRYLyXht2IrQ" width="12" height="10">
1711 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1712 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1713 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1714 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1715 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1716 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_0ECtY10qEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1717 <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"/>
1718 </ownedStyle>
1719 <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']"/>
1720 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zChmAF0qEemRYLyXht2IrQ" name="observationTime : EFloat = 2.0" tooltipText="">
1721 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//InterferometryMission/observationTime"/>
1722 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//InterferometryMission/observationTime"/>
1723 <ownedStyle xmi:type="diagram:BundledImage" uid="_1awPYV0vEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1724 <labelFormat>bold</labelFormat>
1725 </ownedStyle>
1726 <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']"/>
1727 </ownedElements>
1728 </ownedDiagramElements>
1729 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_0jIdIF0qEemRYLyXht2IrQ" sourceNode="_vlPm0F0qEemRYLyXht2IrQ" targetNode="_tM4oUF0qEemRYLyXht2IrQ">
1730 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1731 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryMission"/>
1732 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_0jK5YF0qEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
1733 <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"/>
1734 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_0jK5YV0qEemRYLyXht2IrQ" showIcon="false">
1735 <labelFormat>italic</labelFormat>
1736 </beginLabelStyle>
1737 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_0jK5Yl0qEemRYLyXht2IrQ" showIcon="false"/>
1738 </ownedStyle>
1739 <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']"/>
1740 </ownedDiagramElements>
1741 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_3T7UUF0rEemRYLyXht2IrQ" name="CommunicatingElement" tooltipText="" outgoingEdges="_4B9iMF0vEemRYLyXht2IrQ _ccF89l0wEemRYLyXht2IrQ" incomingEdges="_NpQ-pl0sEemRYLyXht2IrQ _PEp-k10sEemRYLyXht2IrQ" width="12" height="10">
1742 <target xmi:type="ecore:EClass" href="satellite.ecore#//CommunicatingElement"/>
1743 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CommunicatingElement"/>
1744 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1745 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1746 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1747 <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">
1748 <labelFormat>italic</labelFormat>
1749 <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"/>
1750 </ownedStyle>
1751 <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']"/>
1752 </ownedDiagramElements>
1753 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="__OYCYF0rEemRYLyXht2IrQ" name="GroundStationNetwork" tooltipText="" outgoingEdges="_NpQ-pl0sEemRYLyXht2IrQ" incomingEdges="_KzljXl0yEemRYLyXht2IrQ" width="12" height="10">
1754 <target xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1755 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1756 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1757 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1758 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1759 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="__B6W510vEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1760 <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"/>
1761 </ownedStyle>
1762 <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']"/>
1763 </ownedDiagramElements>
1764 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_AqsPYF0sEemRYLyXht2IrQ" name="Spacecraft" tooltipText="" outgoingEdges="_PEp-k10sEemRYLyXht2IrQ _3GzPll0xEemRYLyXht2IrQ" incomingEdges="_PdH6PF0yEemRYLyXht2IrQ" width="12" height="10">
1765 <target xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1766 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1767 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1768 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1769 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1770 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ApvGVG61Eem3gIPdAp40Tw" 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">
1771 <labelFormat>italic</labelFormat>
1772 <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"/>
1773 </ownedStyle>
1774 <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']"/>
1775 <ownedElements xmi:type="diagram:DNodeListElement" uid="_-9TZsG60Eem3gIPdAp40Tw" name="kind : SpacecraftKind = CubeSat3U" tooltipText="">
1776 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//Spacecraft/kind"/>
1777 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//Spacecraft/kind"/>
1778 <ownedStyle xmi:type="diagram:BundledImage" uid="_BUQqAW61Eem3gIPdAp40Tw" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1779 <labelFormat>bold</labelFormat>
1780 </ownedStyle>
1781 <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']"/>
1782 </ownedElements>
1783 </ownedDiagramElements>
1784 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_NpQ-pl0sEemRYLyXht2IrQ" sourceNode="__OYCYF0rEemRYLyXht2IrQ" targetNode="_3T7UUF0rEemRYLyXht2IrQ">
1785 <target xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1786 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//GroundStationNetwork"/>
1787 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_NpRlsF0sEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
1788 <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"/>
1789 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NpRlsV0sEemRYLyXht2IrQ" showIcon="false">
1790 <labelFormat>italic</labelFormat>
1791 </beginLabelStyle>
1792 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_NpRlsl0sEemRYLyXht2IrQ" showIcon="false"/>
1793 </ownedStyle>
1794 <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']"/>
1795 </ownedDiagramElements>
1796 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PEp-k10sEemRYLyXht2IrQ" sourceNode="_AqsPYF0sEemRYLyXht2IrQ" targetNode="_3T7UUF0rEemRYLyXht2IrQ">
1797 <target xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1798 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Spacecraft"/>
1799 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Ap43UG61Eem3gIPdAp40Tw" targetArrow="InputClosedArrow" routingStyle="tree">
1800 <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"/>
1801 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Ap43UW61Eem3gIPdAp40Tw" showIcon="false">
1802 <labelFormat>italic</labelFormat>
1803 </beginLabelStyle>
1804 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Ap43Um61Eem3gIPdAp40Tw" showIcon="false"/>
1805 </ownedStyle>
1806 <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']"/>
1807 </ownedDiagramElements>
1808 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_j0eAEF0tEemRYLyXht2IrQ" name="CommSubsystem" tooltipText="" incomingEdges="_4B9iMF0vEemRYLyXht2IrQ _dbuYhl0xEemRYLyXht2IrQ _i2PgeV0xEemRYLyXht2IrQ" width="12" height="10">
1809 <target xmi:type="ecore:EClass" href="satellite.ecore#//CommSubsystem"/>
1810 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//CommSubsystem"/>
1811 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1812 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1813 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1814 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UMdpIV0wEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1815 <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"/>
1816 </ownedStyle>
1817 <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']"/>
1818 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zuaCUF0vEemRYLyXht2IrQ" name="band : TransceiverBand = UHF" tooltipText="">
1819 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/band"/>
1820 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/band"/>
1821 <ownedStyle xmi:type="diagram:BundledImage" uid="_028-wl0vEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1822 <labelFormat>bold</labelFormat>
1823 </ownedStyle>
1824 <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']"/>
1825 </ownedElements>
1826 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Q8yBAF0wEemRYLyXht2IrQ" name="gain : AntennaGain = LOW" tooltipText="">
1827 <target xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/gain"/>
1828 <semanticElements xmi:type="ecore:EAttribute" href="satellite.ecore#//CommSubsystem/gain"/>
1829 <ownedStyle xmi:type="diagram:BundledImage" uid="_UgHk4l0wEemRYLyXht2IrQ" labelAlignment="LEFT" description="_028-wF0vEemRYLyXht2IrQ">
1830 <labelFormat>bold</labelFormat>
1831 </ownedStyle>
1832 <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']"/>
1833 </ownedElements>
1834 </ownedDiagramElements>
1835 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vyhbkF0vEemRYLyXht2IrQ" name="TransceiverBand" tooltipText="" width="12" height="10">
1836 <target xmi:type="ecore:EEnum" href="satellite.ecore#//TransceiverBand"/>
1837 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//TransceiverBand"/>
1838 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1839 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1840 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1841 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_vyj30F0vEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
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%20EEnum']/@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%20EEnum']"/>
1845 <ownedElements xmi:type="diagram:DNodeListElement" uid="_x3rKMF0vEemRYLyXht2IrQ" name="UHF" tooltipText="">
1846 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/UHF"/>
1847 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/UHF"/>
1848 <ownedStyle xmi:type="diagram:BundledImage" uid="_x3rKMV0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1849 <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"/>
1850 </ownedStyle>
1851 <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']"/>
1852 </ownedElements>
1853 <ownedElements xmi:type="diagram:DNodeListElement" uid="_yg2DAF0vEemRYLyXht2IrQ" name="X" tooltipText="">
1854 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/X"/>
1855 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/X"/>
1856 <ownedStyle xmi:type="diagram:BundledImage" uid="_yg2qEF0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1857 <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"/>
1858 </ownedStyle>
1859 <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']"/>
1860 </ownedElements>
1861 <ownedElements xmi:type="diagram:DNodeListElement" uid="_zAInEF0vEemRYLyXht2IrQ" name="Ka" tooltipText="">
1862 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/Ka"/>
1863 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//TransceiverBand/Ka"/>
1864 <ownedStyle xmi:type="diagram:BundledImage" uid="_zAInEV0vEemRYLyXht2IrQ" labelAlignment="LEFT">
1865 <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"/>
1866 </ownedStyle>
1867 <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']"/>
1868 </ownedElements>
1869 </ownedDiagramElements>
1870 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_4B9iMF0vEemRYLyXht2IrQ" name="[1..2] commSubsystem" sourceNode="_3T7UUF0rEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
1871 <target xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/commSubsystem"/>
1872 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/commSubsystem"/>
1873 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_6kODk10vEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1874 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_6kODlV0vEemRYLyXht2IrQ" showIcon="false">
1875 <labelFormat>bold</labelFormat>
1876 </centerLabelStyle>
1877 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_6kODlF0vEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1878 </ownedStyle>
1879 <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']"/>
1880 </ownedDiagramElements>
1881 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ctw9kF0wEemRYLyXht2IrQ" name="DirectedCommunicationLink" tooltipText="" outgoingEdges="_dbuYhl0xEemRYLyXht2IrQ _i2PgeV0xEemRYLyXht2IrQ" incomingEdges="_ccF89l0wEemRYLyXht2IrQ" width="12" height="10">
1882 <target xmi:type="ecore:EClass" href="satellite.ecore#//DirectedCommunicationLink"/>
1883 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//DirectedCommunicationLink"/>
1884 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1885 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1886 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1887 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fC-qQ10xEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1888 <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"/>
1889 </ownedStyle>
1890 <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']"/>
1891 </ownedDiagramElements>
1892 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_M5OsAF0wEemRYLyXht2IrQ" name="AntennaGain" tooltipText="" width="12" height="10">
1893 <target xmi:type="ecore:EEnum" href="satellite.ecore#//AntennaGain"/>
1894 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//AntennaGain"/>
1895 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1896 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1897 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1898 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_M5OsAV0wEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
1899 <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"/>
1900 </ownedStyle>
1901 <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']"/>
1902 <ownedElements xmi:type="diagram:DNodeListElement" uid="_OBacEF0wEemRYLyXht2IrQ" name="LOW" tooltipText="">
1903 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/LOW"/>
1904 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/LOW"/>
1905 <ownedStyle xmi:type="diagram:BundledImage" uid="_OBbDIF0wEemRYLyXht2IrQ" labelAlignment="LEFT">
1906 <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"/>
1907 </ownedStyle>
1908 <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']"/>
1909 </ownedElements>
1910 <ownedElements xmi:type="diagram:DNodeListElement" uid="_OcLsgF0wEemRYLyXht2IrQ" name="MEDIUM" tooltipText="">
1911 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/MEDIUM"/>
1912 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/MEDIUM"/>
1913 <ownedStyle xmi:type="diagram:BundledImage" uid="_OcLsgV0wEemRYLyXht2IrQ" labelAlignment="LEFT">
1914 <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"/>
1915 </ownedStyle>
1916 <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']"/>
1917 </ownedElements>
1918 <ownedElements xmi:type="diagram:DNodeListElement" uid="_O9wIgF0wEemRYLyXht2IrQ" name="HIGH" tooltipText="">
1919 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/HIGH"/>
1920 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//AntennaGain/HIGH"/>
1921 <ownedStyle xmi:type="diagram:BundledImage" uid="_O9wvkF0wEemRYLyXht2IrQ" labelAlignment="LEFT">
1922 <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"/>
1923 </ownedStyle>
1924 <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']"/>
1925 </ownedElements>
1926 </ownedDiagramElements>
1927 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ccF89l0wEemRYLyXht2IrQ" name="[0..1] communicationLink" sourceNode="_3T7UUF0rEemRYLyXht2IrQ" targetNode="_Ctw9kF0wEemRYLyXht2IrQ">
1928 <target xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/communicationLink"/>
1929 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//CommunicatingElement/communicationLink"/>
1930 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ccHLE10wEemRYLyXht2IrQ" description="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1931 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ccHLFV0wEemRYLyXht2IrQ" showIcon="false">
1932 <customFeatures>labelSize</customFeatures>
1933 </centerLabelStyle>
1934 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ccHLFF0wEemRYLyXht2IrQ" showIcon="false" labelColor="39,76,114">
1935 <customFeatures>labelSize</customFeatures>
1936 </endLabelStyle>
1937 </ownedStyle>
1938 <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']"/>
1939 </ownedDiagramElements>
1940 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dbuYhl0xEemRYLyXht2IrQ" name="[1..1] source" sourceNode="_Ctw9kF0wEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
1941 <target xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/source"/>
1942 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/source"/>
1943 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fDAfY10xEemRYLyXht2IrQ" description="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan" strokeColor="0,0,0">
1944 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fDAfZV0xEemRYLyXht2IrQ" showIcon="false">
1945 <labelFormat>bold</labelFormat>
1946 </centerLabelStyle>
1947 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fDAfZF0xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1948 </ownedStyle>
1949 <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']"/>
1950 </ownedDiagramElements>
1951 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_i2PgeV0xEemRYLyXht2IrQ" name="[1..1] target" sourceNode="_Ctw9kF0wEemRYLyXht2IrQ" targetNode="_j0eAEF0tEemRYLyXht2IrQ">
1952 <target xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/target"/>
1953 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//DirectedCommunicationLink/target"/>
1954 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jrg7ll0xEemRYLyXht2IrQ" description="_fDAfYF0xEemRYLyXht2IrQ" routingStyle="manhattan" strokeColor="0,0,0">
1955 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jrg7mF0xEemRYLyXht2IrQ" showIcon="false">
1956 <labelFormat>bold</labelFormat>
1957 </centerLabelStyle>
1958 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jrg7l10xEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1959 </ownedStyle>
1960 <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']"/>
1961 </ownedDiagramElements>
1962 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_0aW3cF0xEemRYLyXht2IrQ" name="Payload" tooltipText="" incomingEdges="_3GzPll0xEemRYLyXht2IrQ _8iFzll0xEemRYLyXht2IrQ" width="12" height="10">
1963 <target xmi:type="ecore:EClass" href="satellite.ecore#//Payload"/>
1964 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//Payload"/>
1965 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1966 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1967 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1968 <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">
1969 <labelFormat>italic</labelFormat>
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']/@conditionnalStyles.1/@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:DEdge" uid="_3GzPll0xEemRYLyXht2IrQ" name="[0..1] payload" sourceNode="_AqsPYF0sEemRYLyXht2IrQ" targetNode="_0aW3cF0xEemRYLyXht2IrQ">
1975 <target xmi:type="ecore:EReference" href="satellite.ecore#//Spacecraft/payload"/>
1976 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//Spacecraft/payload"/>
1977 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3G0dsF0xEemRYLyXht2IrQ" description="_ccHLEF0wEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1978 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3G0dsl0xEemRYLyXht2IrQ" showIcon="false">
1979 <customFeatures>labelSize</customFeatures>
1980 </centerLabelStyle>
1981 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_3G0dsV0xEemRYLyXht2IrQ" showIcon="false" labelColor="39,76,114">
1982 <customFeatures>labelSize</customFeatures>
1983 </endLabelStyle>
1984 </ownedStyle>
1985 <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']"/>
1986 </ownedDiagramElements>
1987 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_45FskF0xEemRYLyXht2IrQ" name="InterferometryPayload" tooltipText="" outgoingEdges="_8iFzll0xEemRYLyXht2IrQ" width="12" height="10">
1988 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
1989 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
1990 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1991 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1992 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1993 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_IHvBB10yEemRYLyXht2IrQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1994 <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"/>
1995 </ownedStyle>
1996 <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']"/>
1997 </ownedDiagramElements>
1998 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_8iFzll0xEemRYLyXht2IrQ" sourceNode="_45FskF0xEemRYLyXht2IrQ" targetNode="_0aW3cF0xEemRYLyXht2IrQ">
1999 <target xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2000 <semanticElements xmi:type="ecore:EClass" href="satellite.ecore#//InterferometryPayload"/>
2001 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_IH284l0yEemRYLyXht2IrQ" targetArrow="InputClosedArrow" routingStyle="tree">
2002 <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"/>
2003 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_IH28410yEemRYLyXht2IrQ" showIcon="false">
2004 <labelFormat>italic</labelFormat>
2005 </beginLabelStyle>
2006 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_IH285F0yEemRYLyXht2IrQ" showIcon="false"/>
2007 </ownedStyle>
2008 <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']"/>
2009 </ownedDiagramElements>
2010 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_KzljXl0yEemRYLyXht2IrQ" name="[1..1] groundStationNetwork" sourceNode="_tM4oUF0qEemRYLyXht2IrQ" targetNode="__OYCYF0rEemRYLyXht2IrQ">
2011 <target xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/groundStationNetwork"/>
2012 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/groundStationNetwork"/>
2013 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_MI6-gF0yEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2014 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_MI6-gl0yEemRYLyXht2IrQ" showIcon="false">
2015 <labelFormat>bold</labelFormat>
2016 </centerLabelStyle>
2017 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_MI6-gV0yEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2018 </ownedStyle>
2019 <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']"/>
2020 </ownedDiagramElements>
2021 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PdH6PF0yEemRYLyXht2IrQ" name="[2..50] spacecraft" sourceNode="_tM4oUF0qEemRYLyXht2IrQ" targetNode="_AqsPYF0sEemRYLyXht2IrQ">
2022 <target xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/spacecraft"/>
2023 <semanticElements xmi:type="ecore:EReference" href="satellite.ecore#//ConstellationMission/spacecraft"/>
2024 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_SRBlMF0yEemRYLyXht2IrQ" description="_6kODkF0vEemRYLyXht2IrQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2025 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_SRBlMl0yEemRYLyXht2IrQ" showIcon="false">
2026 <labelFormat>bold</labelFormat>
2027 </centerLabelStyle>
2028 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_SRBlMV0yEemRYLyXht2IrQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2029 </ownedStyle>
2030 <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']"/>
2031 </ownedDiagramElements>
2032 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_2oBw0G60Eem3gIPdAp40Tw" name="SpacecraftKind" tooltipText="" width="12" height="10">
2033 <target xmi:type="ecore:EEnum" href="satellite.ecore#//SpacecraftKind"/>
2034 <semanticElements xmi:type="ecore:EEnum" href="satellite.ecore#//SpacecraftKind"/>
2035 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2036 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2037 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2038 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2oC-8G60Eem3gIPdAp40Tw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
2039 <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"/>
2040 </ownedStyle>
2041 <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']"/>
2042 <ownedElements xmi:type="diagram:DNodeListElement" uid="_5P_4oG60Eem3gIPdAp40Tw" name="CubeSat3U" tooltipText="">
2043 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
2044 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
2045 <ownedStyle xmi:type="diagram:BundledImage" uid="_5QAfsG60Eem3gIPdAp40Tw" labelAlignment="LEFT">
2046 <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"/>
2047 </ownedStyle>
2048 <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']"/>
2049 </ownedElements>
2050 <ownedElements xmi:type="diagram:DNodeListElement" uid="_6fjcAG60Eem3gIPdAp40Tw" name="SubeSat6U" tooltipText="">
2051 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SubeSat6U"/>
2052 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SubeSat6U"/>
2053 <ownedStyle xmi:type="diagram:BundledImage" uid="_6fjcAW60Eem3gIPdAp40Tw" labelAlignment="LEFT">
2054 <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"/>
2055 </ownedStyle>
2056 <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']"/>
2057 </ownedElements>
2058 <ownedElements xmi:type="diagram:DNodeListElement" uid="_7R9JUG60Eem3gIPdAp40Tw" name="SmallSat" tooltipText="">
2059 <target xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SmallSat"/>
2060 <semanticElements xmi:type="ecore:EEnumLiteral" href="satellite.ecore#//SpacecraftKind/SmallSat"/>
2061 <ownedStyle xmi:type="diagram:BundledImage" uid="_7R-XcG60Eem3gIPdAp40Tw" labelAlignment="LEFT">
2062 <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"/>
2063 </ownedStyle>
2064 <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']"/>
2065 </ownedElements>
2066 </ownedDiagramElements>
2067 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
2068 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_reoWwF0qEemRYLyXht2IrQ"/>
2069 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
2070 <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']"/>
2071 <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']"/>
2072 <target xmi:type="ecore:EPackage" href="satellite.ecore#/"/>
2073 </diagram:DSemanticDiagram>
2074</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..99766ab7
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore
@@ -0,0 +1,53 @@
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 <eClassifiers xsi:type="ecore:EClass" name="ConstellationMission" abstract="true">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="groundStationNetwork" lowerBound="1"
6 eType="#//GroundStationNetwork" containment="true"/>
7 <eStructuralFeatures xsi:type="ecore:EReference" name="spacecraft" lowerBound="2"
8 upperBound="50" eType="#//Spacecraft" containment="true"/>
9 </eClassifiers>
10 <eClassifiers xsi:type="ecore:EClass" name="InterferometryMission" eSuperTypes="#//ConstellationMission">
11 <eStructuralFeatures xsi:type="ecore:EAttribute" name="observationTime" lowerBound="1"
12 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" defaultValueLiteral="2.0"/>
13 </eClassifiers>
14 <eClassifiers xsi:type="ecore:EClass" name="CommunicatingElement" abstract="true">
15 <eStructuralFeatures xsi:type="ecore:EReference" name="commSubsystem" lowerBound="1"
16 upperBound="2" eType="#//CommSubsystem" containment="true"/>
17 <eStructuralFeatures xsi:type="ecore:EReference" name="communicationLink" eType="#//DirectedCommunicationLink"
18 containment="true"/>
19 </eClassifiers>
20 <eClassifiers xsi:type="ecore:EClass" name="GroundStationNetwork" eSuperTypes="#//CommunicatingElement"/>
21 <eClassifiers xsi:type="ecore:EClass" name="Spacecraft" abstract="true" eSuperTypes="#//CommunicatingElement">
22 <eStructuralFeatures xsi:type="ecore:EReference" name="payload" eType="#//Payload"
23 containment="true"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//SpacecraftKind"/>
25 </eClassifiers>
26 <eClassifiers xsi:type="ecore:EClass" name="CommSubsystem">
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="band" lowerBound="1" eType="#//TransceiverBand"/>
28 <eStructuralFeatures xsi:type="ecore:EAttribute" name="gain" lowerBound="1" eType="#//AntennaGain"/>
29 </eClassifiers>
30 <eClassifiers xsi:type="ecore:EEnum" name="TransceiverBand">
31 <eLiterals name="UHF"/>
32 <eLiterals name="X" value="1"/>
33 <eLiterals name="Ka" value="2"/>
34 </eClassifiers>
35 <eClassifiers xsi:type="ecore:EClass" name="DirectedCommunicationLink">
36 <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
37 eType="#//CommSubsystem"/>
38 <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
39 eType="#//CommSubsystem"/>
40 </eClassifiers>
41 <eClassifiers xsi:type="ecore:EEnum" name="AntennaGain">
42 <eLiterals name="LOW"/>
43 <eLiterals name="MEDIUM" value="1"/>
44 <eLiterals name="HIGH" value="2"/>
45 </eClassifiers>
46 <eClassifiers xsi:type="ecore:EClass" name="Payload" abstract="true"/>
47 <eClassifiers xsi:type="ecore:EClass" name="InterferometryPayload" eSuperTypes="#//Payload"/>
48 <eClassifiers xsi:type="ecore:EEnum" name="SpacecraftKind">
49 <eLiterals name="CubeSat3U"/>
50 <eLiterals name="CubeSat6U" value="1"/>
51 <eLiterals name="SmallSat" value="2"/>
52 </eClassifiers>
53</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..61a4104a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.genmodel
@@ -0,0 +1,57 @@
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" basePackage="hu.bme.mit.inf.dslreasoner.domains"
14 disposableProviderFactory="true" ecorePackage="satellite.ecore#/">
15 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//TransceiverBand">
16 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/UHF"/>
17 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/X"/>
18 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//TransceiverBand/Ka"/>
19 </genEnums>
20 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//AntennaGain">
21 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/LOW"/>
22 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/MEDIUM"/>
23 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//AntennaGain/HIGH"/>
24 </genEnums>
25 <genEnums typeSafeEnumCompatible="false" ecoreEnum="satellite.ecore#//SpacecraftKind">
26 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/CubeSat3U"/>
27 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/CubeSat6U"/>
28 <genEnumLiterals ecoreEnumLiteral="satellite.ecore#//SpacecraftKind/SmallSat"/>
29 </genEnums>
30 <genClasses ecoreClass="satellite.ecore#//ConstellationMission">
31 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//ConstellationMission/groundStationNetwork"/>
32 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//ConstellationMission/spacecraft"/>
33 </genClasses>
34 <genClasses ecoreClass="satellite.ecore#//InterferometryMission">
35 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//InterferometryMission/observationTime"/>
36 </genClasses>
37 <genClasses ecoreClass="satellite.ecore#//CommunicatingElement">
38 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//CommunicatingElement/commSubsystem"/>
39 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//CommunicatingElement/communicationLink"/>
40 </genClasses>
41 <genClasses ecoreClass="satellite.ecore#//GroundStationNetwork"/>
42 <genClasses ecoreClass="satellite.ecore#//Spacecraft">
43 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference satellite.ecore#//Spacecraft/payload"/>
44 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//Spacecraft/kind"/>
45 </genClasses>
46 <genClasses ecoreClass="satellite.ecore#//CommSubsystem">
47 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//CommSubsystem/band"/>
48 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute satellite.ecore#//CommSubsystem/gain"/>
49 </genClasses>
50 <genClasses ecoreClass="satellite.ecore#//DirectedCommunicationLink">
51 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference satellite.ecore#//DirectedCommunicationLink/source"/>
52 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference satellite.ecore#//DirectedCommunicationLink/target"/>
53 </genClasses>
54 <genClasses ecoreClass="satellite.ecore#//Payload"/>
55 <genClasses ecoreClass="satellite.ecore#//InterferometryPayload"/>
56 </genPackages>
57</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..b7530140
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generated3valued.vql_deactivated
@@ -0,0 +1,3021 @@
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}
48
49////////////////////////
50// 0.3 Required Patterns by TypeIndexer
51////////////////////////
52private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
53 find interpretation(problem,interpretation);
54 LogicProblem.types(problem,type);
55 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57}
58
59private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
60 find interpretation(problem,interpretation);
61 LogicProblem.types(problem,type);
62 TypeDefinition.elements(type,element);
63} or {
64 find interpretation(problem,interpretation);
65 find typeInterpretation(problem,interpretation,type,typeInterpretation);
66 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
67}
68
69private pattern isPrimitive(element: PrimitiveElement) {
70 PrimitiveElement(element);
71}
72
73//////////
74// 1. Problem-Specific Base Indexers
75//////////
76// 1.1 Type Indexers
77//////////
78// 1.1.1 primitive Type Indexers
79//////////
80
81//////////
82// 1.1.2 domain-specific Type Indexers
83//////////
84/**
85 * An element must be an instance of type "ConstellationMission class".
86 */
87private pattern mustInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
88 Type.name(type,"ConstellationMission class");
89 find directInstanceOf(problem,interpretation,element,type);
90}
91private pattern scopeDisallowsNewConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation) {
92 find interpretation(problem,interpretation);
93 PartialInterpretation.scopes(interpretation,scope);
94 Scope.targetTypeInterpretation(scope,typeInterpretation);
95 Scope.maxNewElements(scope,0);
96 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
97 Type.name(type,"ConstellationMission class");
98}
99
100/**
101 * An element may be an instance of type "ConstellationMission class".
102 */
103private pattern mayInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
104{
105 find interpretation(problem,interpretation);
106 PartialInterpretation.newElements(interpretation,element);
107 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
108 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
109 neg find mustInstanceOfPayload_class(problem,interpretation,element);
110 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
111 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
112 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
113 neg find scopeDisallowsNewConstellationMission_class(problem, interpretation);
114 neg find isPrimitive(element);
115} or {
116 find interpretation(problem,interpretation);
117 PartialInterpretation.openWorldElements(interpretation,element);
118 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
119 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
120 neg find mustInstanceOfPayload_class(problem,interpretation,element);
121 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
122 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
123 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
124 neg find scopeDisallowsNewConstellationMission_class(problem, interpretation);
125 neg find isPrimitive(element);
126} or
127{ find mustInstanceOfConstellationMission_class(problem,interpretation,element); }
128/**
129 * An element must be an instance of type "InterferometryMission class".
130 */
131private pattern mustInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
132 Type.name(type,"InterferometryMission class");
133 find directInstanceOf(problem,interpretation,element,type);
134}
135private pattern scopeDisallowsNewInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation) {
136 find interpretation(problem,interpretation);
137 PartialInterpretation.scopes(interpretation,scope);
138 Scope.targetTypeInterpretation(scope,typeInterpretation);
139 Scope.maxNewElements(scope,0);
140 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
141 Type.name(type,"InterferometryMission class");
142}
143
144/**
145 * An element may be an instance of type "InterferometryMission class".
146 */
147private pattern mayInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
148{
149 find interpretation(problem,interpretation);
150 PartialInterpretation.newElements(interpretation,element);
151 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
152 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
153 neg find mustInstanceOfPayload_class(problem,interpretation,element);
154 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
155 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
156 neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation);
157 neg find isPrimitive(element);
158} or {
159 find interpretation(problem,interpretation);
160 PartialInterpretation.openWorldElements(interpretation,element);
161 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
162 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
163 neg find mustInstanceOfPayload_class(problem,interpretation,element);
164 neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element);
165 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
166 neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation);
167 neg find isPrimitive(element);
168} or
169{ find mustInstanceOfInterferometryMission_class(problem,interpretation,element); }
170/**
171 * An element must be an instance of type "CommunicatingElement class".
172 */
173private pattern mustInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
174 Type.name(type,"CommunicatingElement class");
175 find directInstanceOf(problem,interpretation,element,type);
176}
177private pattern scopeDisallowsNewCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
178 find interpretation(problem,interpretation);
179 PartialInterpretation.scopes(interpretation,scope);
180 Scope.targetTypeInterpretation(scope,typeInterpretation);
181 Scope.maxNewElements(scope,0);
182 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
183 Type.name(type,"CommunicatingElement class");
184}
185
186/**
187 * An element may be an instance of type "CommunicatingElement class".
188 */
189private pattern mayInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
190{
191 find interpretation(problem,interpretation);
192 PartialInterpretation.newElements(interpretation,element);
193 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
194 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
195 neg find mustInstanceOfPayload_class(problem,interpretation,element);
196 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
197 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
198 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
199 neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation);
200 neg find isPrimitive(element);
201} or {
202 find interpretation(problem,interpretation);
203 PartialInterpretation.openWorldElements(interpretation,element);
204 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
205 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
206 neg find mustInstanceOfPayload_class(problem,interpretation,element);
207 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
208 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
209 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
210 neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation);
211 neg find isPrimitive(element);
212} or
213{ find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); }
214/**
215 * An element must be an instance of type "GroundStationNetwork class".
216 */
217private pattern mustInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
218 Type.name(type,"GroundStationNetwork class");
219 find directInstanceOf(problem,interpretation,element,type);
220}
221private pattern scopeDisallowsNewGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation) {
222 find interpretation(problem,interpretation);
223 PartialInterpretation.scopes(interpretation,scope);
224 Scope.targetTypeInterpretation(scope,typeInterpretation);
225 Scope.maxNewElements(scope,0);
226 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
227 Type.name(type,"GroundStationNetwork class");
228}
229
230/**
231 * An element may be an instance of type "GroundStationNetwork class".
232 */
233private pattern mayInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
234{
235 find interpretation(problem,interpretation);
236 PartialInterpretation.newElements(interpretation,element);
237 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
238 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
239 neg find mustInstanceOfPayload_class(problem,interpretation,element);
240 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
241 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
242 neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation);
243 neg find isPrimitive(element);
244} or {
245 find interpretation(problem,interpretation);
246 PartialInterpretation.openWorldElements(interpretation,element);
247 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
248 neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element);
249 neg find mustInstanceOfPayload_class(problem,interpretation,element);
250 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
251 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
252 neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation);
253 neg find isPrimitive(element);
254} or
255{ find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); }
256/**
257 * An element must be an instance of type "Spacecraft class".
258 */
259private pattern mustInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
260 Type.name(type,"Spacecraft class");
261 find directInstanceOf(problem,interpretation,element,type);
262}
263private pattern scopeDisallowsNewSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation) {
264 find interpretation(problem,interpretation);
265 PartialInterpretation.scopes(interpretation,scope);
266 Scope.targetTypeInterpretation(scope,typeInterpretation);
267 Scope.maxNewElements(scope,0);
268 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
269 Type.name(type,"Spacecraft class");
270}
271
272/**
273 * An element may be an instance of type "Spacecraft class".
274 */
275private pattern mayInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
276{
277 find interpretation(problem,interpretation);
278 PartialInterpretation.newElements(interpretation,element);
279 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
280 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
281 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
282 neg find mustInstanceOfPayload_class(problem,interpretation,element);
283 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
284 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
285 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
286 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
287 neg find scopeDisallowsNewSpacecraft_class(problem, interpretation);
288 neg find isPrimitive(element);
289} or {
290 find interpretation(problem,interpretation);
291 PartialInterpretation.openWorldElements(interpretation,element);
292 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
293 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
294 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
295 neg find mustInstanceOfPayload_class(problem,interpretation,element);
296 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
297 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
298 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
299 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
300 neg find scopeDisallowsNewSpacecraft_class(problem, interpretation);
301 neg find isPrimitive(element);
302} or
303{ find mustInstanceOfSpacecraft_class(problem,interpretation,element); }
304/**
305 * An element must be an instance of type "CubeSat3U class".
306 */
307private pattern mustInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
308 Type.name(type,"CubeSat3U class");
309 find directInstanceOf(problem,interpretation,element,type);
310}
311private pattern scopeDisallowsNewCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation) {
312 find interpretation(problem,interpretation);
313 PartialInterpretation.scopes(interpretation,scope);
314 Scope.targetTypeInterpretation(scope,typeInterpretation);
315 Scope.maxNewElements(scope,0);
316 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
317 Type.name(type,"CubeSat3U class");
318}
319
320/**
321 * An element may be an instance of type "CubeSat3U class".
322 */
323private pattern mayInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
324{
325 find interpretation(problem,interpretation);
326 PartialInterpretation.newElements(interpretation,element);
327 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
328 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
329 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
330 neg find mustInstanceOfPayload_class(problem,interpretation,element);
331 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
332 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
333 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
334 neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation);
335 neg find isPrimitive(element);
336} or {
337 find interpretation(problem,interpretation);
338 PartialInterpretation.openWorldElements(interpretation,element);
339 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
340 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
341 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
342 neg find mustInstanceOfPayload_class(problem,interpretation,element);
343 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
344 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
345 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
346 neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation);
347 neg find isPrimitive(element);
348} or
349{ find mustInstanceOfCubeSat3U_class(problem,interpretation,element); }
350/**
351 * An element must be an instance of type "CubeSat6U class".
352 */
353private pattern mustInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
354 Type.name(type,"CubeSat6U class");
355 find directInstanceOf(problem,interpretation,element,type);
356}
357private pattern scopeDisallowsNewCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation) {
358 find interpretation(problem,interpretation);
359 PartialInterpretation.scopes(interpretation,scope);
360 Scope.targetTypeInterpretation(scope,typeInterpretation);
361 Scope.maxNewElements(scope,0);
362 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
363 Type.name(type,"CubeSat6U class");
364}
365
366/**
367 * An element may be an instance of type "CubeSat6U class".
368 */
369private pattern mayInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
370{
371 find interpretation(problem,interpretation);
372 PartialInterpretation.newElements(interpretation,element);
373 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
374 neg find mustInstanceOfPayload_class(problem,interpretation,element);
375 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
376 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
377 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
378 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
379 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
380 neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation);
381 neg find isPrimitive(element);
382} or {
383 find interpretation(problem,interpretation);
384 PartialInterpretation.openWorldElements(interpretation,element);
385 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
386 neg find mustInstanceOfPayload_class(problem,interpretation,element);
387 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
388 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
389 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
390 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
391 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
392 neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation);
393 neg find isPrimitive(element);
394} or
395{ find mustInstanceOfCubeSat6U_class(problem,interpretation,element); }
396/**
397 * An element must be an instance of type "SmallSat class".
398 */
399private pattern mustInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
400 Type.name(type,"SmallSat class");
401 find directInstanceOf(problem,interpretation,element,type);
402}
403private pattern scopeDisallowsNewSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation) {
404 find interpretation(problem,interpretation);
405 PartialInterpretation.scopes(interpretation,scope);
406 Scope.targetTypeInterpretation(scope,typeInterpretation);
407 Scope.maxNewElements(scope,0);
408 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
409 Type.name(type,"SmallSat class");
410}
411
412/**
413 * An element may be an instance of type "SmallSat class".
414 */
415private pattern mayInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
416{
417 find interpretation(problem,interpretation);
418 PartialInterpretation.newElements(interpretation,element);
419 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
420 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
421 neg find mustInstanceOfPayload_class(problem,interpretation,element);
422 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
423 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
424 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
425 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
426 neg find scopeDisallowsNewSmallSat_class(problem, interpretation);
427 neg find isPrimitive(element);
428} or {
429 find interpretation(problem,interpretation);
430 PartialInterpretation.openWorldElements(interpretation,element);
431 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
432 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
433 neg find mustInstanceOfPayload_class(problem,interpretation,element);
434 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
435 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
436 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
437 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
438 neg find scopeDisallowsNewSmallSat_class(problem, interpretation);
439 neg find isPrimitive(element);
440} or
441{ find mustInstanceOfSmallSat_class(problem,interpretation,element); }
442/**
443 * An element must be an instance of type "CommSubsystem class".
444 */
445private pattern mustInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
446 Type.name(type,"CommSubsystem class");
447 find directInstanceOf(problem,interpretation,element,type);
448}
449private pattern scopeDisallowsNewCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) {
450 find interpretation(problem,interpretation);
451 PartialInterpretation.scopes(interpretation,scope);
452 Scope.targetTypeInterpretation(scope,typeInterpretation);
453 Scope.maxNewElements(scope,0);
454 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
455 Type.name(type,"CommSubsystem class");
456}
457
458/**
459 * An element may be an instance of type "CommSubsystem class".
460 */
461private pattern mayInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
462{
463 find interpretation(problem,interpretation);
464 PartialInterpretation.newElements(interpretation,element);
465 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
466 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
467 neg find mustInstanceOfPayload_class(problem,interpretation,element);
468 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
469 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
470 neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation);
471 neg find isPrimitive(element);
472} or {
473 find interpretation(problem,interpretation);
474 PartialInterpretation.openWorldElements(interpretation,element);
475 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
476 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
477 neg find mustInstanceOfPayload_class(problem,interpretation,element);
478 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
479 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
480 neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation);
481 neg find isPrimitive(element);
482} or
483{ find mustInstanceOfCommSubsystem_class(problem,interpretation,element); }
484/**
485 * An element must be an instance of type "DirectedCommunicationLink class".
486 */
487private pattern mustInstanceOfDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
488 Type.name(type,"DirectedCommunicationLink class");
489 find directInstanceOf(problem,interpretation,element,type);
490}
491private pattern scopeDisallowsNewDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
492 find interpretation(problem,interpretation);
493 PartialInterpretation.scopes(interpretation,scope);
494 Scope.targetTypeInterpretation(scope,typeInterpretation);
495 Scope.maxNewElements(scope,0);
496 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
497 Type.name(type,"DirectedCommunicationLink class");
498}
499
500/**
501 * An element may be an instance of type "DirectedCommunicationLink class".
502 */
503private pattern mayInstanceOfDirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
504{
505 find interpretation(problem,interpretation);
506 PartialInterpretation.newElements(interpretation,element);
507 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
508 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
509 neg find mustInstanceOfPayload_class(problem,interpretation,element);
510 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
511 neg find scopeDisallowsNewDirectedCommunicationLink_class(problem, interpretation);
512 neg find isPrimitive(element);
513} or {
514 find interpretation(problem,interpretation);
515 PartialInterpretation.openWorldElements(interpretation,element);
516 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
517 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
518 neg find mustInstanceOfPayload_class(problem,interpretation,element);
519 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
520 neg find scopeDisallowsNewDirectedCommunicationLink_class(problem, interpretation);
521 neg find isPrimitive(element);
522} or
523{ find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element); }
524/**
525 * An element must be an instance of type "Payload class".
526 */
527private pattern mustInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
528 Type.name(type,"Payload class");
529 find directInstanceOf(problem,interpretation,element,type);
530}
531private pattern scopeDisallowsNewPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) {
532 find interpretation(problem,interpretation);
533 PartialInterpretation.scopes(interpretation,scope);
534 Scope.targetTypeInterpretation(scope,typeInterpretation);
535 Scope.maxNewElements(scope,0);
536 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
537 Type.name(type,"Payload class");
538}
539
540/**
541 * An element may be an instance of type "Payload class".
542 */
543private pattern mayInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
544{
545 find interpretation(problem,interpretation);
546 PartialInterpretation.newElements(interpretation,element);
547 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
548 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
549 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
550 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
551 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
552 neg find scopeDisallowsNewPayload_class(problem, interpretation);
553 neg find isPrimitive(element);
554} or {
555 find interpretation(problem,interpretation);
556 PartialInterpretation.openWorldElements(interpretation,element);
557 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
558 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
559 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
560 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
561 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
562 neg find scopeDisallowsNewPayload_class(problem, interpretation);
563 neg find isPrimitive(element);
564} or
565{ find mustInstanceOfPayload_class(problem,interpretation,element); }
566/**
567 * An element must be an instance of type "InterferometryPayload class".
568 */
569private pattern mustInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
570 Type.name(type,"InterferometryPayload class");
571 find directInstanceOf(problem,interpretation,element,type);
572}
573private pattern scopeDisallowsNewInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) {
574 find interpretation(problem,interpretation);
575 PartialInterpretation.scopes(interpretation,scope);
576 Scope.targetTypeInterpretation(scope,typeInterpretation);
577 Scope.maxNewElements(scope,0);
578 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
579 Type.name(type,"InterferometryPayload class");
580}
581
582/**
583 * An element may be an instance of type "InterferometryPayload class".
584 */
585private pattern mayInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
586{
587 find interpretation(problem,interpretation);
588 PartialInterpretation.newElements(interpretation,element);
589 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
590 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
591 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
592 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
593 neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation);
594 neg find isPrimitive(element);
595} or {
596 find interpretation(problem,interpretation);
597 PartialInterpretation.openWorldElements(interpretation,element);
598 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
599 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
600 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
601 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
602 neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation);
603 neg find isPrimitive(element);
604} or
605{ find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); }
606/**
607 * An element must be an instance of type "TransceiverBand enum".
608 */
609private pattern mustInstanceOfTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
610 Type.name(type,"TransceiverBand enum");
611 find directInstanceOf(problem,interpretation,element,type);
612}
613private pattern scopeDisallowsNewTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
614 find interpretation(problem,interpretation);
615 PartialInterpretation.scopes(interpretation,scope);
616 Scope.targetTypeInterpretation(scope,typeInterpretation);
617 Scope.maxNewElements(scope,0);
618 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
619 Type.name(type,"TransceiverBand enum");
620}
621
622/**
623 * An element may be an instance of type "TransceiverBand enum".
624 */
625private pattern mayInstanceOfTransceiverBand_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
626{ find mustInstanceOfTransceiverBand_enum(problem,interpretation,element); }
627/**
628 * An element must be an instance of type "AntennaGain enum".
629 */
630private pattern mustInstanceOfAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
631 Type.name(type,"AntennaGain enum");
632 find directInstanceOf(problem,interpretation,element,type);
633}
634private pattern scopeDisallowsNewAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
635 find interpretation(problem,interpretation);
636 PartialInterpretation.scopes(interpretation,scope);
637 Scope.targetTypeInterpretation(scope,typeInterpretation);
638 Scope.maxNewElements(scope,0);
639 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
640 Type.name(type,"AntennaGain enum");
641}
642
643/**
644 * An element may be an instance of type "AntennaGain enum".
645 */
646private pattern mayInstanceOfAntennaGain_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
647{ find mustInstanceOfAntennaGain_enum(problem,interpretation,element); }
648/**
649 * An element must be an instance of type "ConstellationMission class DefinedPart".
650 */
651private pattern mustInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
652 Type.name(type,"ConstellationMission class DefinedPart");
653 find directInstanceOf(problem,interpretation,element,type);
654}
655private pattern scopeDisallowsNewConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
656 find interpretation(problem,interpretation);
657 PartialInterpretation.scopes(interpretation,scope);
658 Scope.targetTypeInterpretation(scope,typeInterpretation);
659 Scope.maxNewElements(scope,0);
660 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
661 Type.name(type,"ConstellationMission class DefinedPart");
662}
663
664/**
665 * An element may be an instance of type "ConstellationMission class DefinedPart".
666 */
667private pattern mayInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
668{ find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,element); }
669/**
670 * An element must be an instance of type "ConstellationMission class UndefinedPart".
671 */
672private pattern mustInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
673 Type.name(type,"ConstellationMission class UndefinedPart");
674 find directInstanceOf(problem,interpretation,element,type);
675}
676private pattern scopeDisallowsNewConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
677 find interpretation(problem,interpretation);
678 PartialInterpretation.scopes(interpretation,scope);
679 Scope.targetTypeInterpretation(scope,typeInterpretation);
680 Scope.maxNewElements(scope,0);
681 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
682 Type.name(type,"ConstellationMission class UndefinedPart");
683}
684
685/**
686 * An element may be an instance of type "ConstellationMission class UndefinedPart".
687 */
688private pattern mayInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
689{
690 find interpretation(problem,interpretation);
691 PartialInterpretation.newElements(interpretation,element);
692 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
693 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
694 neg find mustInstanceOfPayload_class(problem,interpretation,element);
695 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
696 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
697 neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation);
698 neg find isPrimitive(element);
699} or {
700 find interpretation(problem,interpretation);
701 PartialInterpretation.openWorldElements(interpretation,element);
702 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
703 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
704 neg find mustInstanceOfPayload_class(problem,interpretation,element);
705 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
706 neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element);
707 neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation);
708 neg find isPrimitive(element);
709} or
710{ find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); }
711/**
712 * An element must be an instance of type "InterferometryMission class DefinedPart".
713 */
714private pattern mustInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
715 Type.name(type,"InterferometryMission class DefinedPart");
716 find directInstanceOf(problem,interpretation,element,type);
717}
718private pattern scopeDisallowsNewInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
719 find interpretation(problem,interpretation);
720 PartialInterpretation.scopes(interpretation,scope);
721 Scope.targetTypeInterpretation(scope,typeInterpretation);
722 Scope.maxNewElements(scope,0);
723 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
724 Type.name(type,"InterferometryMission class DefinedPart");
725}
726
727/**
728 * An element may be an instance of type "InterferometryMission class DefinedPart".
729 */
730private pattern mayInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
731{ find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,element); }
732/**
733 * An element must be an instance of type "InterferometryMission class UndefinedPart".
734 */
735private pattern mustInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
736 Type.name(type,"InterferometryMission class UndefinedPart");
737 find directInstanceOf(problem,interpretation,element,type);
738}
739private pattern scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
740 find interpretation(problem,interpretation);
741 PartialInterpretation.scopes(interpretation,scope);
742 Scope.targetTypeInterpretation(scope,typeInterpretation);
743 Scope.maxNewElements(scope,0);
744 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
745 Type.name(type,"InterferometryMission class UndefinedPart");
746}
747
748/**
749 * An element may be an instance of type "InterferometryMission class UndefinedPart".
750 */
751private pattern mayInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
752{
753 find interpretation(problem,interpretation);
754 PartialInterpretation.newElements(interpretation,element);
755 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
756 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
757 neg find mustInstanceOfPayload_class(problem,interpretation,element);
758 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
759 neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation);
760 neg find isPrimitive(element);
761} or {
762 find interpretation(problem,interpretation);
763 PartialInterpretation.openWorldElements(interpretation,element);
764 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
765 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
766 neg find mustInstanceOfPayload_class(problem,interpretation,element);
767 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
768 neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation);
769 neg find isPrimitive(element);
770} or
771{ find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element); }
772/**
773 * An element must be an instance of type "CommunicatingElement class DefinedPart".
774 */
775private pattern mustInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
776 Type.name(type,"CommunicatingElement class DefinedPart");
777 find directInstanceOf(problem,interpretation,element,type);
778}
779private pattern scopeDisallowsNewCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
780 find interpretation(problem,interpretation);
781 PartialInterpretation.scopes(interpretation,scope);
782 Scope.targetTypeInterpretation(scope,typeInterpretation);
783 Scope.maxNewElements(scope,0);
784 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
785 Type.name(type,"CommunicatingElement class DefinedPart");
786}
787
788/**
789 * An element may be an instance of type "CommunicatingElement class DefinedPart".
790 */
791private pattern mayInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
792{ find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,element); }
793/**
794 * An element must be an instance of type "CommunicatingElement class UndefinedPart".
795 */
796private pattern mustInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
797 Type.name(type,"CommunicatingElement class UndefinedPart");
798 find directInstanceOf(problem,interpretation,element,type);
799}
800private pattern scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
801 find interpretation(problem,interpretation);
802 PartialInterpretation.scopes(interpretation,scope);
803 Scope.targetTypeInterpretation(scope,typeInterpretation);
804 Scope.maxNewElements(scope,0);
805 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
806 Type.name(type,"CommunicatingElement class UndefinedPart");
807}
808
809/**
810 * An element may be an instance of type "CommunicatingElement class UndefinedPart".
811 */
812private pattern mayInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
813{
814 find interpretation(problem,interpretation);
815 PartialInterpretation.newElements(interpretation,element);
816 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
817 neg find mustInstanceOfPayload_class(problem,interpretation,element);
818 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
819 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
820 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
821 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
822 neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation);
823 neg find isPrimitive(element);
824} or {
825 find interpretation(problem,interpretation);
826 PartialInterpretation.openWorldElements(interpretation,element);
827 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
828 neg find mustInstanceOfPayload_class(problem,interpretation,element);
829 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
830 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
831 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
832 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
833 neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation);
834 neg find isPrimitive(element);
835} or
836{ find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); }
837/**
838 * An element must be an instance of type "GroundStationNetwork class DefinedPart".
839 */
840private pattern mustInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
841 Type.name(type,"GroundStationNetwork class DefinedPart");
842 find directInstanceOf(problem,interpretation,element,type);
843}
844private pattern scopeDisallowsNewGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
845 find interpretation(problem,interpretation);
846 PartialInterpretation.scopes(interpretation,scope);
847 Scope.targetTypeInterpretation(scope,typeInterpretation);
848 Scope.maxNewElements(scope,0);
849 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
850 Type.name(type,"GroundStationNetwork class DefinedPart");
851}
852
853/**
854 * An element may be an instance of type "GroundStationNetwork class DefinedPart".
855 */
856private pattern mayInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
857{ find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,element); }
858/**
859 * An element must be an instance of type "GroundStationNetwork class UndefinedPart".
860 */
861private pattern mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
862 Type.name(type,"GroundStationNetwork class UndefinedPart");
863 find directInstanceOf(problem,interpretation,element,type);
864}
865private pattern scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
866 find interpretation(problem,interpretation);
867 PartialInterpretation.scopes(interpretation,scope);
868 Scope.targetTypeInterpretation(scope,typeInterpretation);
869 Scope.maxNewElements(scope,0);
870 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
871 Type.name(type,"GroundStationNetwork class UndefinedPart");
872}
873
874/**
875 * An element may be an instance of type "GroundStationNetwork class UndefinedPart".
876 */
877private pattern mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
878{
879 find interpretation(problem,interpretation);
880 PartialInterpretation.newElements(interpretation,element);
881 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
882 neg find mustInstanceOfPayload_class(problem,interpretation,element);
883 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
884 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
885 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
886 neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation);
887 neg find isPrimitive(element);
888} or {
889 find interpretation(problem,interpretation);
890 PartialInterpretation.openWorldElements(interpretation,element);
891 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
892 neg find mustInstanceOfPayload_class(problem,interpretation,element);
893 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
894 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
895 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
896 neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation);
897 neg find isPrimitive(element);
898} or
899{ find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element); }
900/**
901 * An element must be an instance of type "CommSubsystem class DefinedPart".
902 */
903private pattern mustInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
904 Type.name(type,"CommSubsystem class DefinedPart");
905 find directInstanceOf(problem,interpretation,element,type);
906}
907private pattern scopeDisallowsNewCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
908 find interpretation(problem,interpretation);
909 PartialInterpretation.scopes(interpretation,scope);
910 Scope.targetTypeInterpretation(scope,typeInterpretation);
911 Scope.maxNewElements(scope,0);
912 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
913 Type.name(type,"CommSubsystem class DefinedPart");
914}
915
916/**
917 * An element may be an instance of type "CommSubsystem class DefinedPart".
918 */
919private pattern mayInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
920{ find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,element); }
921/**
922 * An element must be an instance of type "CommSubsystem class UndefinedPart".
923 */
924private pattern mustInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
925 Type.name(type,"CommSubsystem class UndefinedPart");
926 find directInstanceOf(problem,interpretation,element,type);
927}
928private pattern scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
929 find interpretation(problem,interpretation);
930 PartialInterpretation.scopes(interpretation,scope);
931 Scope.targetTypeInterpretation(scope,typeInterpretation);
932 Scope.maxNewElements(scope,0);
933 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
934 Type.name(type,"CommSubsystem class UndefinedPart");
935}
936
937/**
938 * An element may be an instance of type "CommSubsystem class UndefinedPart".
939 */
940private pattern mayInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
941{
942 find interpretation(problem,interpretation);
943 PartialInterpretation.newElements(interpretation,element);
944 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
945 neg find mustInstanceOfPayload_class(problem,interpretation,element);
946 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
947 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
948 neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation);
949 neg find isPrimitive(element);
950} or {
951 find interpretation(problem,interpretation);
952 PartialInterpretation.openWorldElements(interpretation,element);
953 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
954 neg find mustInstanceOfPayload_class(problem,interpretation,element);
955 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
956 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
957 neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation);
958 neg find isPrimitive(element);
959} or
960{ find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); }
961
962//////////
963// 1.2 Relation Declaration Indexers
964//////////
965/**
966 * Matcher for detecting tuples t where []groundStationNetwork reference ConstellationMission(source,target)
967 */
968private pattern mustInRelationgroundStationNetwork_reference_ConstellationMission(
969 problem:LogicProblem, interpretation:PartialInterpretation,
970 source: DefinedElement, target:DefinedElement)
971{
972 find interpretation(problem,interpretation);
973 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
974 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission");
975 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
976 BinaryElementRelationLink.param1(link,source);
977 BinaryElementRelationLink.param2(link,target);
978}
979/**
980 * Matcher for detecting tuples t where <>groundStationNetwork reference ConstellationMission(source,target)
981 */
982private pattern mayInRelationgroundStationNetwork_reference_ConstellationMission(
983 problem:LogicProblem, interpretation:PartialInterpretation,
984 source: DefinedElement, target:DefinedElement)
985{
986 find interpretation(problem,interpretation);
987 // The two endpoint of the link have to exist
988 find mayExist(problem, interpretation, source);
989 find mayExist(problem, interpretation, target);
990 // Type consistency
991 find mayInstanceOfConstellationMission_class(problem,interpretation,source);
992 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,target);
993 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
994 // the upper bound of the multiplicity should be considered.
995 numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,_);
996 check(numberOfExistingReferences < 1);
997 // The reference is containment, then a new reference cannot be create if:
998 // 1. Multiple parents
999 neg find mustContains4(problem,interpretation,_,target);
1000 // 2. Circle in the containment hierarchy
1001 neg find mustTransitiveContains(source,target);
1002} or {
1003 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target);
1004}
1005/**
1006 * Matcher for detecting tuples t where []spacecraft reference ConstellationMission(source,target)
1007 */
1008private pattern mustInRelationspacecraft_reference_ConstellationMission(
1009 problem:LogicProblem, interpretation:PartialInterpretation,
1010 source: DefinedElement, target:DefinedElement)
1011{
1012 find interpretation(problem,interpretation);
1013 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1014 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission");
1015 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1016 BinaryElementRelationLink.param1(link,source);
1017 BinaryElementRelationLink.param2(link,target);
1018}
1019/**
1020 * Matcher for detecting tuples t where <>spacecraft reference ConstellationMission(source,target)
1021 */
1022private pattern mayInRelationspacecraft_reference_ConstellationMission(
1023 problem:LogicProblem, interpretation:PartialInterpretation,
1024 source: DefinedElement, target:DefinedElement)
1025{
1026 find interpretation(problem,interpretation);
1027 // The two endpoint of the link have to exist
1028 find mayExist(problem, interpretation, source);
1029 find mayExist(problem, interpretation, target);
1030 // Type consistency
1031 find mayInstanceOfConstellationMission_class(problem,interpretation,source);
1032 find mayInstanceOfSpacecraft_class(problem,interpretation,target);
1033 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1034 // the upper bound of the multiplicity should be considered.
1035 numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,_);
1036 check(numberOfExistingReferences < 50);
1037 // The reference is containment, then a new reference cannot be create if:
1038 // 1. Multiple parents
1039 neg find mustContains4(problem,interpretation,_,target);
1040 // 2. Circle in the containment hierarchy
1041 neg find mustTransitiveContains(source,target);
1042} or {
1043 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target);
1044}
1045/**
1046 * Matcher for detecting tuples t where []commSubsystem reference CommunicatingElement(source,target)
1047 */
1048private pattern mustInRelationcommSubsystem_reference_CommunicatingElement(
1049 problem:LogicProblem, interpretation:PartialInterpretation,
1050 source: DefinedElement, target:DefinedElement)
1051{
1052 find interpretation(problem,interpretation);
1053 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1054 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement");
1055 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1056 BinaryElementRelationLink.param1(link,source);
1057 BinaryElementRelationLink.param2(link,target);
1058}
1059/**
1060 * Matcher for detecting tuples t where <>commSubsystem reference CommunicatingElement(source,target)
1061 */
1062private pattern mayInRelationcommSubsystem_reference_CommunicatingElement(
1063 problem:LogicProblem, interpretation:PartialInterpretation,
1064 source: DefinedElement, target:DefinedElement)
1065{
1066 find interpretation(problem,interpretation);
1067 // The two endpoint of the link have to exist
1068 find mayExist(problem, interpretation, source);
1069 find mayExist(problem, interpretation, target);
1070 // Type consistency
1071 find mayInstanceOfCommunicatingElement_class(problem,interpretation,source);
1072 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1073 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1074 // the upper bound of the multiplicity should be considered.
1075 numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,_);
1076 check(numberOfExistingReferences < 2);
1077 // The reference is containment, then a new reference cannot be create if:
1078 // 1. Multiple parents
1079 neg find mustContains4(problem,interpretation,_,target);
1080 // 2. Circle in the containment hierarchy
1081 neg find mustTransitiveContains(source,target);
1082} or {
1083 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target);
1084}
1085/**
1086 * Matcher for detecting tuples t where []communicationLink reference CommunicatingElement(source,target)
1087 */
1088private pattern mustInRelationcommunicationLink_reference_CommunicatingElement(
1089 problem:LogicProblem, interpretation:PartialInterpretation,
1090 source: DefinedElement, target:DefinedElement)
1091{
1092 find interpretation(problem,interpretation);
1093 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1094 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"communicationLink reference CommunicatingElement");
1095 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1096 BinaryElementRelationLink.param1(link,source);
1097 BinaryElementRelationLink.param2(link,target);
1098}
1099/**
1100 * Matcher for detecting tuples t where <>communicationLink reference CommunicatingElement(source,target)
1101 */
1102private pattern mayInRelationcommunicationLink_reference_CommunicatingElement(
1103 problem:LogicProblem, interpretation:PartialInterpretation,
1104 source: DefinedElement, target:DefinedElement)
1105{
1106 find interpretation(problem,interpretation);
1107 // The two endpoint of the link have to exist
1108 find mayExist(problem, interpretation, source);
1109 find mayExist(problem, interpretation, target);
1110 // Type consistency
1111 find mayInstanceOfCommunicatingElement_class(problem,interpretation,source);
1112 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,target);
1113 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1114 // the upper bound of the multiplicity should be considered.
1115 numberOfExistingReferences == count find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,_);
1116 check(numberOfExistingReferences < 1);
1117 // The reference is containment, then a new reference cannot be create if:
1118 // 1. Multiple parents
1119 neg find mustContains4(problem,interpretation,_,target);
1120 // 2. Circle in the containment hierarchy
1121 neg find mustTransitiveContains(source,target);
1122} or {
1123 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,target);
1124}
1125/**
1126 * Matcher for detecting tuples t where []payload reference Spacecraft(source,target)
1127 */
1128private pattern mustInRelationpayload_reference_Spacecraft(
1129 problem:LogicProblem, interpretation:PartialInterpretation,
1130 source: DefinedElement, target:DefinedElement)
1131{
1132 find interpretation(problem,interpretation);
1133 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1134 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"payload reference Spacecraft");
1135 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1136 BinaryElementRelationLink.param1(link,source);
1137 BinaryElementRelationLink.param2(link,target);
1138}
1139/**
1140 * Matcher for detecting tuples t where <>payload reference Spacecraft(source,target)
1141 */
1142private pattern mayInRelationpayload_reference_Spacecraft(
1143 problem:LogicProblem, interpretation:PartialInterpretation,
1144 source: DefinedElement, target:DefinedElement)
1145{
1146 find interpretation(problem,interpretation);
1147 // The two endpoint of the link have to exist
1148 find mayExist(problem, interpretation, source);
1149 find mayExist(problem, interpretation, target);
1150 // Type consistency
1151 find mayInstanceOfSpacecraft_class(problem,interpretation,source);
1152 find mayInstanceOfPayload_class(problem,interpretation,target);
1153 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1154 // the upper bound of the multiplicity should be considered.
1155 numberOfExistingReferences == count find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,_);
1156 check(numberOfExistingReferences < 1);
1157 // The reference is containment, then a new reference cannot be create if:
1158 // 1. Multiple parents
1159 neg find mustContains4(problem,interpretation,_,target);
1160 // 2. Circle in the containment hierarchy
1161 neg find mustTransitiveContains(source,target);
1162} or {
1163 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target);
1164}
1165/**
1166 * Matcher for detecting tuples t where []source reference DirectedCommunicationLink(source,target)
1167 */
1168private pattern mustInRelationsource_reference_DirectedCommunicationLink(
1169 problem:LogicProblem, interpretation:PartialInterpretation,
1170 source: DefinedElement, target:DefinedElement)
1171{
1172 find interpretation(problem,interpretation);
1173 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1174 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
1175 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1176 BinaryElementRelationLink.param1(link,source);
1177 BinaryElementRelationLink.param2(link,target);
1178}
1179/**
1180 * Matcher for detecting tuples t where <>source reference DirectedCommunicationLink(source,target)
1181 */
1182private pattern mayInRelationsource_reference_DirectedCommunicationLink(
1183 problem:LogicProblem, interpretation:PartialInterpretation,
1184 source: DefinedElement, target:DefinedElement)
1185{
1186 find interpretation(problem,interpretation);
1187 // The two endpoint of the link have to exist
1188 find mayExist(problem, interpretation, source);
1189 find mayExist(problem, interpretation, target);
1190 // Type consistency
1191 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,source);
1192 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1193 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1194 // the upper bound of the multiplicity should be considered.
1195 numberOfExistingReferences == count find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,source,_);
1196 check(numberOfExistingReferences < 1);
1197} or {
1198 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,source,target);
1199}
1200/**
1201 * Matcher for detecting tuples t where []target reference DirectedCommunicationLink(source,target)
1202 */
1203private pattern mustInRelationtarget_reference_DirectedCommunicationLink(
1204 problem:LogicProblem, interpretation:PartialInterpretation,
1205 source: DefinedElement, target:DefinedElement)
1206{
1207 find interpretation(problem,interpretation);
1208 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1209 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
1210 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1211 BinaryElementRelationLink.param1(link,source);
1212 BinaryElementRelationLink.param2(link,target);
1213}
1214/**
1215 * Matcher for detecting tuples t where <>target reference DirectedCommunicationLink(source,target)
1216 */
1217private pattern mayInRelationtarget_reference_DirectedCommunicationLink(
1218 problem:LogicProblem, interpretation:PartialInterpretation,
1219 source: DefinedElement, target:DefinedElement)
1220{
1221 find interpretation(problem,interpretation);
1222 // The two endpoint of the link have to exist
1223 find mayExist(problem, interpretation, source);
1224 find mayExist(problem, interpretation, target);
1225 // Type consistency
1226 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,source);
1227 find mayInstanceOfCommSubsystem_class(problem,interpretation,target);
1228 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1229 // the upper bound of the multiplicity should be considered.
1230 numberOfExistingReferences == count find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,source,_);
1231 check(numberOfExistingReferences < 1);
1232} or {
1233 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,source,target);
1234}
1235/**
1236 * Matcher for detecting tuples t where []band attribute CommSubsystem(source,target)
1237 */
1238private pattern mustInRelationband_attribute_CommSubsystem(
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,"band attribute CommSubsystem");
1245 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1246 BinaryElementRelationLink.param1(link,source);
1247 BinaryElementRelationLink.param2(link,target);
1248}
1249/**
1250 * Matcher for detecting tuples t where <>band attribute CommSubsystem(source,target)
1251 */
1252private pattern mayInRelationband_attribute_CommSubsystem(
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 mayInstanceOfCommSubsystem_class(problem,interpretation,source);
1262 find mayInstanceOfTransceiverBand_enum(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 mustInRelationband_attribute_CommSubsystem(problem,interpretation,source,_);
1266 check(numberOfExistingReferences < 1);
1267} or {
1268 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,source,target);
1269}
1270/**
1271 * Matcher for detecting tuples t where []gain attribute CommSubsystem(source,target)
1272 */
1273private pattern mustInRelationgain_attribute_CommSubsystem(
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,"gain attribute CommSubsystem");
1280 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1281 BinaryElementRelationLink.param1(link,source);
1282 BinaryElementRelationLink.param2(link,target);
1283}
1284/**
1285 * Matcher for detecting tuples t where <>gain attribute CommSubsystem(source,target)
1286 */
1287private pattern mayInRelationgain_attribute_CommSubsystem(
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 mayInstanceOfCommSubsystem_class(problem,interpretation,source);
1297 find mayInstanceOfAntennaGain_enum(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 mustInRelationgain_attribute_CommSubsystem(problem,interpretation,source,_);
1301 check(numberOfExistingReferences < 1);
1302} or {
1303 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,source,target);
1304}
1305
1306//////////
1307// 1.3 Relation Definition Indexers
1308//////////
1309// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement
1310private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1311 problem:LogicProblem, interpretation:PartialInterpretation,
1312 var_Link)
1313{
1314 find interpretation(problem,interpretation);
1315 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1316 // Link is exported
1317 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1318 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1319 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1320 var_virtual0 == var_Link;
1321 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1322 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1323 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1324 var_virtual1 == var_SourceComm;
1325 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1326 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1327 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1328 var_virtual2 == var_SourceComm;
1329 neg find mayEquivalent(problem, interpretation, var_Element, var_SourceElement);
1330}
1331private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1332 problem:LogicProblem, interpretation:PartialInterpretation,
1333 var_Link)
1334{
1335 find interpretation(problem,interpretation);
1336 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1337 // Link is exported
1338 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1339 find mayInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1340 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1341 find mayEquivalent(problem, interpretation, var_virtual0, var_Link);
1342 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1343 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1344 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1345 find mayEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
1346 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1347 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1348 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1349 find mayEquivalent(problem, interpretation, var_virtual2, var_SourceComm);
1350 var_Element != var_SourceElement;
1351}
1352private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(
1353 problem:LogicProblem, interpretation:PartialInterpretation,
1354 var_Link)
1355{
1356 find interpretation(problem,interpretation);
1357 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1358 // Link is exported
1359 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1360 find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0);
1361 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_virtual0);
1362 var_virtual0 == var_Link;
1363 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1364 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1365 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1366 var_virtual1 == var_SourceComm;
1367 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_SourceElement);
1368 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_SourceElement,var_virtual2);
1369 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1370 var_virtual2 == var_SourceComm;
1371 var_Element != var_SourceElement;
1372}
1373// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads
1374private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1375 problem:LogicProblem, interpretation:PartialInterpretation,
1376 var_Mission)
1377{
1378 find interpretation(problem,interpretation);
1379 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1380 // Mission is exported
1381 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1382 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1383}
1384private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1385 problem:LogicProblem, interpretation:PartialInterpretation,
1386 var_Mission)
1387{
1388 find interpretation(problem,interpretation);
1389 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1390 // Mission is exported
1391 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1392 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1393}
1394private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(
1395 problem:LogicProblem, interpretation:PartialInterpretation,
1396 var_Mission)
1397{
1398 find interpretation(problem,interpretation);
1399 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1400 // Mission is exported
1401 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1402 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission);
1403}
1404// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries atLeastTwoInterferometryPayloads
1405private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1406 problem:LogicProblem, interpretation:PartialInterpretation,
1407 var_Mission)
1408{
1409 find interpretation(problem,interpretation);
1410 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1411 // Mission is exported
1412 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1413 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1414 neg find mayEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2);
1415}
1416private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1417 problem:LogicProblem, interpretation:PartialInterpretation,
1418 var_Mission)
1419{
1420 find interpretation(problem,interpretation);
1421 find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1422 // Mission is exported
1423 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1424 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1425 var_Spacecraft1 != var_Spacecraft2;
1426}
1427private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(
1428 problem:LogicProblem, interpretation:PartialInterpretation,
1429 var_Mission)
1430{
1431 find interpretation(problem,interpretation);
1432 find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission);
1433 // Mission is exported
1434 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1);
1435 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2);
1436 var_Spacecraft1 != var_Spacecraft2;
1437}
1438// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries spacecraftWithInterferometryPayload
1439private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1440 problem:LogicProblem, interpretation:PartialInterpretation,
1441 var_Mission, var_Spacecraft)
1442{
1443 find interpretation(problem,interpretation);
1444 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1445 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1446 // Mission is exported
1447 // Spacecraft is exported
1448 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1449 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1450 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1451 var_virtual0 == var_Spacecraft;
1452 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1453 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1454 find mustInstanceOfPayload_class(problem,interpretation,var_virtual1);
1455 var_virtual1 == var_Payload;
1456 find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1457}
1458private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1459 problem:LogicProblem, interpretation:PartialInterpretation,
1460 var_Mission, var_Spacecraft)
1461{
1462 find interpretation(problem,interpretation);
1463 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1464 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1465 // Mission is exported
1466 // Spacecraft is exported
1467 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1468 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1469 find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1470 find mayEquivalent(problem, interpretation, var_virtual0, var_Spacecraft);
1471 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1472 find mayInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1473 find mayInstanceOfPayload_class(problem,interpretation,var_virtual1);
1474 find mayEquivalent(problem, interpretation, var_virtual1, var_Payload);
1475 find mayInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1476}
1477private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(
1478 problem:LogicProblem, interpretation:PartialInterpretation,
1479 var_Mission, var_Spacecraft)
1480{
1481 find interpretation(problem,interpretation);
1482 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1483 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1484 // Mission is exported
1485 // Spacecraft is exported
1486 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1487 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1488 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0);
1489 var_virtual0 == var_Spacecraft;
1490 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1491 find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1);
1492 find mustInstanceOfPayload_class(problem,interpretation,var_virtual1);
1493 var_virtual1 == var_Payload;
1494 find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload);
1495}
1496// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation
1497private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1498 problem:LogicProblem, interpretation:PartialInterpretation,
1499 var_Spacecraft)
1500{
1501 find interpretation(problem,interpretation);
1502 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1503 // Spacecraft is exported
1504 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1505 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1506 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1507 var_virtual0 == var_GroundStation;
1508 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1509 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1510 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1511 var_virtual1 == var_Spacecraft;
1512 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1513}
1514private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1515 problem:LogicProblem, interpretation:PartialInterpretation,
1516 var_Spacecraft)
1517{
1518 find interpretation(problem,interpretation);
1519 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1520 // Spacecraft is exported
1521 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1522 find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1523 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1524 find mayEquivalent(problem, interpretation, var_virtual0, var_GroundStation);
1525 find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1526 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1527 find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1528 find mayEquivalent(problem, interpretation, var_virtual1, var_Spacecraft);
1529 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1530}
1531private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(
1532 problem:LogicProblem, interpretation:PartialInterpretation,
1533 var_Spacecraft)
1534{
1535 find interpretation(problem,interpretation);
1536 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
1537 // Spacecraft is exported
1538 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1539 find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0);
1540 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0);
1541 var_virtual0 == var_GroundStation;
1542 find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission);
1543 find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1);
1544 find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1);
1545 var_virtual1 == var_Spacecraft;
1546 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation);
1547}
1548// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLoop
1549private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1550 problem:LogicProblem, interpretation:PartialInterpretation,
1551 var_Element)
1552{
1553 find interpretation(problem,interpretation);
1554 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1555 // Element is exported
1556 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1557}
1558private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1559 problem:LogicProblem, interpretation:PartialInterpretation,
1560 var_Element)
1561{
1562 find interpretation(problem,interpretation);
1563 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1564 // Element is exported
1565 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1566}
1567private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(
1568 problem:LogicProblem, interpretation:PartialInterpretation,
1569 var_Element)
1570{
1571 find interpretation(problem,interpretation);
1572 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element);
1573 // Element is exported
1574 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element);
1575}
1576// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries indirectCommunicationLink
1577private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
1578 problem:LogicProblem, interpretation:PartialInterpretation,
1579 var_Source, var_Target)
1580{
1581 find interpretation(problem,interpretation);
1582 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1583 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1584 // Source is exported
1585 // Target is exported
1586 find twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
1587}
1588private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
1589 problem:LogicProblem, interpretation:PartialInterpretation,
1590 var_Source, var_Target)
1591{
1592 find interpretation(problem,interpretation);
1593 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1594 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1595 // Source is exported
1596 // Target is exported
1597 find twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
1598}
1599private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(
1600 problem:LogicProblem, interpretation:PartialInterpretation,
1601 var_Source, var_Target)
1602{
1603 find interpretation(problem,interpretation);
1604 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1605 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1606 // Source is exported
1607 // Target is exported
1608 find twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target);
1609}
1610// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries directCommunicationLink
1611private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
1612 problem:LogicProblem, interpretation:PartialInterpretation,
1613 var_Source, var_Target)
1614{
1615 find interpretation(problem,interpretation);
1616 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1617 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1618 // Source is exported
1619 // Target is exported
1620 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1621 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1622 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1623 var_virtual0 == var_SourceSubsystem;
1624 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1625 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1626 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1627 var_virtual1 == var_TargetSubsystem;
1628 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1629 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
1630 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1631 var_virtual2 == var_SourceSubsystem;
1632 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1633 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
1634 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
1635 var_virtual3 == var_TargetSubsystem;
1636}
1637private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
1638 problem:LogicProblem, interpretation:PartialInterpretation,
1639 var_Source, var_Target)
1640{
1641 find interpretation(problem,interpretation);
1642 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1643 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1644 // Source is exported
1645 // Target is exported
1646 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1647 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1648 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1649 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
1650 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1651 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1652 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1653 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
1654 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1655 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
1656 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1657 find mayEquivalent(problem, interpretation, var_virtual2, var_SourceSubsystem);
1658 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1659 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
1660 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
1661 find mayEquivalent(problem, interpretation, var_virtual3, var_TargetSubsystem);
1662}
1663private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(
1664 problem:LogicProblem, interpretation:PartialInterpretation,
1665 var_Source, var_Target)
1666{
1667 find interpretation(problem,interpretation);
1668 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1669 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1670 // Source is exported
1671 // Target is exported
1672 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1673 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1674 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1675 var_virtual0 == var_SourceSubsystem;
1676 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1677 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1678 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1679 var_virtual1 == var_TargetSubsystem;
1680 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source);
1681 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual2);
1682 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
1683 var_virtual2 == var_SourceSubsystem;
1684 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
1685 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
1686 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
1687 var_virtual3 == var_TargetSubsystem;
1688}
1689private pattern twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
1690 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
1691}
1692private pattern twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
1693 find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
1694}
1695private pattern twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) {
1696 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target);
1697}
1698// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand
1699private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
1700 problem:LogicProblem, interpretation:PartialInterpretation,
1701 var_Link)
1702{
1703 find interpretation(problem,interpretation);
1704 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1705 // Link is exported
1706 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1707 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1708 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1709 var_virtual0 == var_SourceSubsystem;
1710 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1711 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1712 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1713 var_virtual1 == var_TargetSubsystem;
1714 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1715 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1716 // type constraint is enforced by construction
1717 var_virtual2 == var_Band;
1718 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
1719}
1720private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
1721 problem:LogicProblem, interpretation:PartialInterpretation,
1722 var_Link)
1723{
1724 find interpretation(problem,interpretation);
1725 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1726 // Link is exported
1727 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1728 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1729 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1730 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
1731 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1732 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1733 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1734 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
1735 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1736 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1737 // type constraint is enforced by construction
1738 find mayEquivalent(problem, interpretation, var_virtual2, var_Band);
1739 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
1740}
1741private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(
1742 problem:LogicProblem, interpretation:PartialInterpretation,
1743 var_Link)
1744{
1745 find interpretation(problem,interpretation);
1746 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1747 // Link is exported
1748 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1749 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1750 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1751 var_virtual0 == var_SourceSubsystem;
1752 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1753 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1754 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1755 var_virtual1 == var_TargetSubsystem;
1756 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1757 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1758 // type constraint is enforced by construction
1759 var_virtual2 == var_Band;
1760 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(problem,interpretation,var_TargetSubsystem,var_Band);
1761}
1762// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBand
1763private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
1764 problem:LogicProblem, interpretation:PartialInterpretation,
1765 var_Comm, var_Band)
1766{
1767 find interpretation(problem,interpretation);
1768 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1769 // type constraint is enforced by construction
1770 // Comm is exported
1771 // Band is exported
1772 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1773 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1774 // type constraint is enforced by construction
1775 var_virtual0 == var_Band;
1776}
1777private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
1778 problem:LogicProblem, interpretation:PartialInterpretation,
1779 var_Comm, var_Band)
1780{
1781 find interpretation(problem,interpretation);
1782 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1783 // type constraint is enforced by construction
1784 // Comm is exported
1785 // Band is exported
1786 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1787 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1788 // type constraint is enforced by construction
1789 find mayEquivalent(problem, interpretation, var_virtual0, var_Band);
1790}
1791private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBand(
1792 problem:LogicProblem, interpretation:PartialInterpretation,
1793 var_Comm, var_Band)
1794{
1795 find interpretation(problem,interpretation);
1796 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1797 // type constraint is enforced by construction
1798 // Comm is exported
1799 // Band is exported
1800 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1801 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1802 // type constraint is enforced by construction
1803 var_virtual0 == var_Band;
1804}
1805// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain
1806private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
1807 problem:LogicProblem, interpretation:PartialInterpretation,
1808 var_Link)
1809{
1810 find interpretation(problem,interpretation);
1811 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1812 // Link is exported
1813 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1814 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1815 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1816 var_virtual0 == var_SourceSubsystem;
1817 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1818 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1819 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1820 var_virtual1 == var_TargetSubsystem;
1821 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1822 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1823 // type constraint is enforced by construction
1824 var_virtual2 == var_Gain;
1825 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
1826}
1827private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
1828 problem:LogicProblem, interpretation:PartialInterpretation,
1829 var_Link)
1830{
1831 find interpretation(problem,interpretation);
1832 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1833 // Link is exported
1834 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1835 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1836 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1837 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceSubsystem);
1838 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1839 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1840 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1841 find mayEquivalent(problem, interpretation, var_virtual1, var_TargetSubsystem);
1842 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1843 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1844 // type constraint is enforced by construction
1845 find mayEquivalent(problem, interpretation, var_virtual2, var_Gain);
1846 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
1847}
1848private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(
1849 problem:LogicProblem, interpretation:PartialInterpretation,
1850 var_Link)
1851{
1852 find interpretation(problem,interpretation);
1853 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1854 // Link is exported
1855 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1856 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual0);
1857 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
1858 var_virtual0 == var_SourceSubsystem;
1859 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
1860 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
1861 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
1862 var_virtual1 == var_TargetSubsystem;
1863 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem);
1864 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual2);
1865 // type constraint is enforced by construction
1866 var_virtual2 == var_Gain;
1867 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(problem,interpretation,var_TargetSubsystem,var_Gain);
1868}
1869// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGain
1870private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
1871 problem:LogicProblem, interpretation:PartialInterpretation,
1872 var_Comm, var_Gain)
1873{
1874 find interpretation(problem,interpretation);
1875 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1876 // type constraint is enforced by construction
1877 // Comm is exported
1878 // Gain is exported
1879 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1880 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1881 // type constraint is enforced by construction
1882 var_virtual0 == var_Gain;
1883}
1884private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
1885 problem:LogicProblem, interpretation:PartialInterpretation,
1886 var_Comm, var_Gain)
1887{
1888 find interpretation(problem,interpretation);
1889 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1890 // type constraint is enforced by construction
1891 // Comm is exported
1892 // Gain is exported
1893 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1894 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1895 // type constraint is enforced by construction
1896 find mayEquivalent(problem, interpretation, var_virtual0, var_Gain);
1897}
1898private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGain(
1899 problem:LogicProblem, interpretation:PartialInterpretation,
1900 var_Comm, var_Gain)
1901{
1902 find interpretation(problem,interpretation);
1903 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1904 // type constraint is enforced by construction
1905 // Comm is exported
1906 // Gain is exported
1907 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1908 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual0);
1909 // type constraint is enforced by construction
1910 var_virtual0 == var_Gain;
1911}
1912// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow
1913private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
1914 problem:LogicProblem, interpretation:PartialInterpretation,
1915 var_Comm)
1916{
1917 find interpretation(problem,interpretation);
1918 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1919 // Comm is exported
1920 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1921 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1922 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1923 // type constraint is enforced by construction
1924 var_virtual1 == var_virtual0;
1925 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
1926}
1927private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
1928 problem:LogicProblem, interpretation:PartialInterpretation,
1929 var_Comm)
1930{
1931 find interpretation(problem,interpretation);
1932 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1933 // Comm is exported
1934 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1935 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1936 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1937 // type constraint is enforced by construction
1938 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
1939 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
1940}
1941private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(
1942 problem:LogicProblem, interpretation:PartialInterpretation,
1943 var_Comm)
1944{
1945 find interpretation(problem,interpretation);
1946 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1947 // Comm is exported
1948 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
1949 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1950 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1951 // type constraint is enforced by construction
1952 var_virtual1 == var_virtual0;
1953 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(problem,interpretation,var_Comm);
1954}
1955// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainLow
1956private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
1957 problem:LogicProblem, interpretation:PartialInterpretation,
1958 var_Comm)
1959{
1960 find interpretation(problem,interpretation);
1961 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1962 // Comm is exported
1963 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
1964 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1965 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1966 // type constraint is enforced by construction
1967 var_virtual1 == var_virtual0;
1968}
1969private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
1970 problem:LogicProblem, interpretation:PartialInterpretation,
1971 var_Comm)
1972{
1973 find interpretation(problem,interpretation);
1974 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1975 // Comm is exported
1976 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
1977 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1978 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1979 // type constraint is enforced by construction
1980 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
1981}
1982private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainLow(
1983 problem:LogicProblem, interpretation:PartialInterpretation,
1984 var_Comm)
1985{
1986 find interpretation(problem,interpretation);
1987 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1988 // Comm is exported
1989 var_virtual0 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
1990 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
1991 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
1992 // type constraint is enforced by construction
1993 var_virtual1 == var_virtual0;
1994}
1995// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium
1996private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
1997 problem:LogicProblem, interpretation:PartialInterpretation,
1998 var_Comm)
1999{
2000 find interpretation(problem,interpretation);
2001 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2002 // Comm is exported
2003 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2004 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2005 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2006 // type constraint is enforced by construction
2007 var_virtual1 == var_virtual0;
2008 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2009}
2010private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
2011 problem:LogicProblem, interpretation:PartialInterpretation,
2012 var_Comm)
2013{
2014 find interpretation(problem,interpretation);
2015 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2016 // Comm is exported
2017 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2018 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2019 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2020 // type constraint is enforced by construction
2021 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2022 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2023}
2024private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(
2025 problem:LogicProblem, interpretation:PartialInterpretation,
2026 var_Comm)
2027{
2028 find interpretation(problem,interpretation);
2029 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2030 // Comm is exported
2031 var_virtual0 == const_X_TransceiverBand;DefinedElement.name(const_X_TransceiverBand,"X TransceiverBand"); //LogicProblem.elements(problem,const_X_TransceiverBand);
2032 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2033 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2034 // type constraint is enforced by construction
2035 var_virtual1 == var_virtual0;
2036 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(problem,interpretation,var_Comm);
2037}
2038// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainMedium
2039private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2040 problem:LogicProblem, interpretation:PartialInterpretation,
2041 var_Comm)
2042{
2043 find interpretation(problem,interpretation);
2044 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2045 // Comm is exported
2046 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2047 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2048 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2049 // type constraint is enforced by construction
2050 var_virtual1 == var_virtual0;
2051}
2052private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2053 problem:LogicProblem, interpretation:PartialInterpretation,
2054 var_Comm)
2055{
2056 find interpretation(problem,interpretation);
2057 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2058 // Comm is exported
2059 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2060 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2061 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2062 // type constraint is enforced by construction
2063 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2064}
2065private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemGainMedium(
2066 problem:LogicProblem, interpretation:PartialInterpretation,
2067 var_Comm)
2068{
2069 find interpretation(problem,interpretation);
2070 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2071 // Comm is exported
2072 var_virtual0 == const_MEDIUM_AntennaGain;DefinedElement.name(const_MEDIUM_AntennaGain,"MEDIUM AntennaGain"); //LogicProblem.elements(problem,const_MEDIUM_AntennaGain);
2073 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2074 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2075 // type constraint is enforced by construction
2076 var_virtual1 == var_virtual0;
2077}
2078// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow
2079private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2080 problem:LogicProblem, interpretation:PartialInterpretation,
2081 var_Comm)
2082{
2083 find interpretation(problem,interpretation);
2084 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2085 // Comm is exported
2086 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2087 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2088 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2089 // type constraint is enforced by construction
2090 var_virtual1 == var_virtual0;
2091 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2092 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2093 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2094 // type constraint is enforced by construction
2095 var_virtual3 == var_virtual2;
2096}
2097private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2098 problem:LogicProblem, interpretation:PartialInterpretation,
2099 var_Comm)
2100{
2101 find interpretation(problem,interpretation);
2102 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2103 // Comm is exported
2104 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2105 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2106 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2107 // type constraint is enforced by construction
2108 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2109 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2110 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2111 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2112 // type constraint is enforced by construction
2113 find mayEquivalent(problem, interpretation, var_virtual3, var_virtual2);
2114}
2115private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(
2116 problem:LogicProblem, interpretation:PartialInterpretation,
2117 var_Comm)
2118{
2119 find interpretation(problem,interpretation);
2120 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2121 // Comm is exported
2122 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2123 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2124 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2125 // type constraint is enforced by construction
2126 var_virtual1 == var_virtual0;
2127 var_virtual2 == const_LOW_AntennaGain;DefinedElement.name(const_LOW_AntennaGain,"LOW AntennaGain"); //LogicProblem.elements(problem,const_LOW_AntennaGain);
2128 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2129 find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual3);
2130 // type constraint is enforced by construction
2131 var_virtual3 == var_virtual2;
2132}
2133// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink
2134private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2135 problem:LogicProblem, interpretation:PartialInterpretation,
2136 var_Sat)
2137{
2138 find interpretation(problem,interpretation);
2139 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2140 // Sat is exported
2141 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2142 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2143 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2144 var_virtual0 == var_SourceComm;
2145 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2146 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2147 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2148 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2149 var_virtual1 == var_SourceComm;
2150 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2151 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2152 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2153 var_virtual2 == var_TargetComm;
2154 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2155 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2156 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2157 var_virtual3 == var_TargetComm;
2158 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2159}
2160private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2161 problem:LogicProblem, interpretation:PartialInterpretation,
2162 var_Sat)
2163{
2164 find interpretation(problem,interpretation);
2165 find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2166 // Sat is exported
2167 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2168 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2169 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2170 find mayEquivalent(problem, interpretation, var_virtual0, var_SourceComm);
2171 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2172 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2173 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2174 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2175 find mayEquivalent(problem, interpretation, var_virtual1, var_SourceComm);
2176 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2177 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2178 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2179 find mayEquivalent(problem, interpretation, var_virtual2, var_TargetComm);
2180 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2181 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2182 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2183 find mayEquivalent(problem, interpretation, var_virtual3, var_TargetComm);
2184 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2185}
2186private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(
2187 problem:LogicProblem, interpretation:PartialInterpretation,
2188 var_Sat)
2189{
2190 find interpretation(problem,interpretation);
2191 find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat);
2192 // Sat is exported
2193 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat);
2194 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0);
2195 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0);
2196 var_virtual0 == var_SourceComm;
2197 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm);
2198 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2199 find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual1);
2200 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2201 var_virtual1 == var_SourceComm;
2202 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,var_Link);
2203 find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,var_Link,var_virtual2);
2204 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2);
2205 var_virtual2 == var_TargetComm;
2206 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target);
2207 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual3);
2208 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual3);
2209 var_virtual3 == var_TargetComm;
2210 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target);
2211}
2212// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBandUhf
2213private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2214 problem:LogicProblem, interpretation:PartialInterpretation,
2215 var_Comm)
2216{
2217 find interpretation(problem,interpretation);
2218 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2219 // Comm is exported
2220 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2221 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2222 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2223 // type constraint is enforced by construction
2224 var_virtual1 == var_virtual0;
2225}
2226private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2227 problem:LogicProblem, interpretation:PartialInterpretation,
2228 var_Comm)
2229{
2230 find interpretation(problem,interpretation);
2231 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2232 // Comm is exported
2233 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2234 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2235 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2236 // type constraint is enforced by construction
2237 find mayEquivalent(problem, interpretation, var_virtual1, var_virtual0);
2238}
2239private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(
2240 problem:LogicProblem, interpretation:PartialInterpretation,
2241 var_Comm)
2242{
2243 find interpretation(problem,interpretation);
2244 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2245 // Comm is exported
2246 var_virtual0 == const_UHF_TransceiverBand;DefinedElement.name(const_UHF_TransceiverBand,"UHF TransceiverBand"); //LogicProblem.elements(problem,const_UHF_TransceiverBand);
2247 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm);
2248 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_Comm,var_virtual1);
2249 // type constraint is enforced by construction
2250 var_virtual1 == var_virtual0;
2251}
2252// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries groundStationNetwork
2253private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2254 problem:LogicProblem, interpretation:PartialInterpretation,
2255 var_Network)
2256{
2257 find interpretation(problem,interpretation);
2258 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2259 // Network is exported
2260 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2261}
2262private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2263 problem:LogicProblem, interpretation:PartialInterpretation,
2264 var_Network)
2265{
2266 find interpretation(problem,interpretation);
2267 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2268 // Network is exported
2269 find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2270}
2271private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(
2272 problem:LogicProblem, interpretation:PartialInterpretation,
2273 var_Network)
2274{
2275 find interpretation(problem,interpretation);
2276 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2277 // Network is exported
2278 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network);
2279}
2280// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna
2281private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2282 problem:LogicProblem, interpretation:PartialInterpretation,
2283 var_Spacecraft)
2284{
2285 find interpretation(problem,interpretation);
2286 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2287 // Spacecraft is exported
2288 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2289 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2290 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2291 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2292 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2293 // type constraint is enforced by construction
2294 var_virtual2 == var_virtual0;
2295 neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2296}
2297private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2298 problem:LogicProblem, interpretation:PartialInterpretation,
2299 var_Spacecraft)
2300{
2301 find interpretation(problem,interpretation);
2302 find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2303 // Spacecraft is exported
2304 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2305 find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2306 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2307 find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2308 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2309 // type constraint is enforced by construction
2310 find mayEquivalent(problem, interpretation, var_virtual2, var_virtual0);
2311 neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2312}
2313private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(
2314 problem:LogicProblem, interpretation:PartialInterpretation,
2315 var_Spacecraft)
2316{
2317 find interpretation(problem,interpretation);
2318 find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft);
2319 // Spacecraft is exported
2320 var_virtual0 == const_Ka_TransceiverBand;DefinedElement.name(const_Ka_TransceiverBand,"Ka TransceiverBand"); //LogicProblem.elements(problem,const_Ka_TransceiverBand);
2321 find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft);
2322 find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual1);
2323 find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1);
2324 find mustInRelationband_attribute_CommSubsystem(problem,interpretation,var_virtual1,var_virtual2);
2325 // type constraint is enforced by construction
2326 var_virtual2 == var_virtual0;
2327 neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft);
2328}
2329// Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries smallSat
2330private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2331 problem:LogicProblem, interpretation:PartialInterpretation,
2332 var_Sat)
2333{
2334 find interpretation(problem,interpretation);
2335 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2336 // Sat is exported
2337 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2338}
2339private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2340 problem:LogicProblem, interpretation:PartialInterpretation,
2341 var_Sat)
2342{
2343 find interpretation(problem,interpretation);
2344 find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2345 // Sat is exported
2346 find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2347}
2348private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(
2349 problem:LogicProblem, interpretation:PartialInterpretation,
2350 var_Sat)
2351{
2352 find interpretation(problem,interpretation);
2353 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2354 // Sat is exported
2355 find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat);
2356}
2357
2358//////////
2359// 1.4 Containment Indexer
2360//////////
2361private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
2362 find mustContains4(_,_,source,target);
2363}
2364
2365private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
2366 source: DefinedElement, target: DefinedElement)
2367 { find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target); }or
2368
2369 { find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target); }or
2370
2371 { find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target); }or
2372
2373 { find mustInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,source,target); }or
2374
2375 { find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target); }
2376
2377private pattern mustTransitiveContains(source,target) {
2378 find mustContains2+(source,target);
2379}
2380
2381//////////
2382// 2. Invalidation Indexers
2383//////////
2384// 2.1 Invalidated by WF Queries
2385//////////
2386pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation,
2387 var_Link)
2388{
2389 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Link);
2390}
2391pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
2392 var_Spacecraft)
2393{
2394 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft);
2395}
2396pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation,
2397 var_Element)
2398{
2399 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element);
2400}
2401pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation,
2402 var_Link)
2403{
2404 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_Link);
2405}
2406pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem:LogicProblem, interpretation:PartialInterpretation,
2407 var_Link)
2408{
2409 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem,interpretation,var_Link);
2410}
2411pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem:LogicProblem, interpretation:PartialInterpretation,
2412 var_Comm)
2413{
2414 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem,interpretation,var_Comm);
2415}
2416pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem:LogicProblem, interpretation:PartialInterpretation,
2417 var_Comm)
2418{
2419 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem,interpretation,var_Comm);
2420}
2421pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem:LogicProblem, interpretation:PartialInterpretation,
2422 var_Comm)
2423{
2424 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem,interpretation,var_Comm);
2425}
2426pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation,
2427 var_Sat)
2428{
2429 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat);
2430}
2431pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation,
2432 var_Spacecraft)
2433{
2434 find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft);
2435}
2436
2437//////////
2438// 3. Unfinishedness Indexers
2439//////////
2440// 3.1 Unfinishedness Measured by Multiplicity
2441//////////
2442pattern unfinishedLowerMultiplicity_groundStationNetwork_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2443 find interpretation(problem,interpretation);
2444 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2445 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission");
2446 find mustInstanceOfConstellationMission_class(problem,interpretation,object);
2447 numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,object,_);
2448 check(numberOfExistingReferences < 1);
2449 missingMultiplicity == eval(1-numberOfExistingReferences);
2450}
2451pattern unfinishedLowerMultiplicity_spacecraft_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2452 find interpretation(problem,interpretation);
2453 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2454 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission");
2455 find mustInstanceOfConstellationMission_class(problem,interpretation,object);
2456 numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,object,_);
2457 check(numberOfExistingReferences < 2);
2458 missingMultiplicity == eval(2-numberOfExistingReferences);
2459}
2460pattern unfinishedLowerMultiplicity_commSubsystem_reference_CommunicatingElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2461 find interpretation(problem,interpretation);
2462 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2463 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement");
2464 find mustInstanceOfCommunicatingElement_class(problem,interpretation,object);
2465 numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,object,_);
2466 check(numberOfExistingReferences < 1);
2467 missingMultiplicity == eval(1-numberOfExistingReferences);
2468}
2469pattern unfinishedLowerMultiplicity_source_reference_DirectedCommunicationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2470 find interpretation(problem,interpretation);
2471 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2472 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
2473 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,object);
2474 numberOfExistingReferences == count find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,object,_);
2475 check(numberOfExistingReferences < 1);
2476 missingMultiplicity == eval(1-numberOfExistingReferences);
2477}
2478pattern unfinishedLowerMultiplicity_target_reference_DirectedCommunicationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2479 find interpretation(problem,interpretation);
2480 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2481 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
2482 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,object);
2483 numberOfExistingReferences == count find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,object,_);
2484 check(numberOfExistingReferences < 1);
2485 missingMultiplicity == eval(1-numberOfExistingReferences);
2486}
2487pattern unfinishedLowerMultiplicity_band_attribute_CommSubsystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2488 find interpretation(problem,interpretation);
2489 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2490 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"band attribute CommSubsystem");
2491 find mustInstanceOfCommSubsystem_class(problem,interpretation,object);
2492 numberOfExistingReferences == count find mustInRelationband_attribute_CommSubsystem(problem,interpretation,object,_);
2493 check(numberOfExistingReferences < 1);
2494 missingMultiplicity == eval(1-numberOfExistingReferences);
2495}
2496pattern unfinishedLowerMultiplicity_gain_attribute_CommSubsystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
2497 find interpretation(problem,interpretation);
2498 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2499 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"gain attribute CommSubsystem");
2500 find mustInstanceOfCommSubsystem_class(problem,interpretation,object);
2501 numberOfExistingReferences == count find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,object,_);
2502 check(numberOfExistingReferences < 1);
2503 missingMultiplicity == eval(1-numberOfExistingReferences);
2504}
2505
2506//////////
2507// 3.2 Unfinishedness Measured by WF Queries
2508//////////
2509pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation,
2510 var_Link)
2511{
2512 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Link);
2513}
2514pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation,
2515 var_Spacecraft)
2516{
2517 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft);
2518}
2519pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation,
2520 var_Element)
2521{
2522 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element);
2523}
2524pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation,
2525 var_Link)
2526{
2527 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_Link);
2528}
2529pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem:LogicProblem, interpretation:PartialInterpretation,
2530 var_Link)
2531{
2532 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetGain(problem,interpretation,var_Link);
2533}
2534pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem:LogicProblem, interpretation:PartialInterpretation,
2535 var_Comm)
2536{
2537 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_uhfAntennaGainNotLow(problem,interpretation,var_Comm);
2538}
2539pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem:LogicProblem, interpretation:PartialInterpretation,
2540 var_Comm)
2541{
2542 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_xAntennaGainNotMedium(problem,interpretation,var_Comm);
2543}
2544pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem:LogicProblem, interpretation:PartialInterpretation,
2545 var_Comm)
2546{
2547 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_kaAntennaGainLow(problem,interpretation,var_Comm);
2548}
2549pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation,
2550 var_Sat)
2551{
2552 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat);
2553}
2554pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation,
2555 var_Spacecraft)
2556{
2557 find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft);
2558}
2559
2560//////////
2561// 4. Refinement Indexers
2562//////////
2563// 4.1 Object constructors
2564//////////
2565private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
2566{
2567 find interpretation(problem,interpretation);
2568 find mustInstanceOfCommunicatingElement_class(problem,interpretation,root);
2569 find mustExist(problem, interpretation, root);
2570}or{
2571 find interpretation(problem,interpretation);
2572 find mustInstanceOfConstellationMission_class(problem,interpretation,root);
2573 find mustExist(problem, interpretation, root);
2574}or{
2575 find interpretation(problem,interpretation);
2576 find mustInstanceOfInterferometryMission_class(problem,interpretation,root);
2577 find mustExist(problem, interpretation, root);
2578}or{
2579 find interpretation(problem,interpretation);
2580 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,root);
2581 find mustExist(problem, interpretation, root);
2582}or{
2583 find interpretation(problem,interpretation);
2584 find mustInstanceOfSmallSat_class(problem,interpretation,root);
2585 find mustExist(problem, interpretation, root);
2586}or{
2587 find interpretation(problem,interpretation);
2588 find mustInstanceOfPayload_class(problem,interpretation,root);
2589 find mustExist(problem, interpretation, root);
2590}or{
2591 find interpretation(problem,interpretation);
2592 find mustInstanceOfGroundStationNetwork_class(problem,interpretation,root);
2593 find mustExist(problem, interpretation, root);
2594}or{
2595 find interpretation(problem,interpretation);
2596 find mustInstanceOfCubeSat6U_class(problem,interpretation,root);
2597 find mustExist(problem, interpretation, root);
2598}or{
2599 find interpretation(problem,interpretation);
2600 find mustInstanceOfCommSubsystem_class(problem,interpretation,root);
2601 find mustExist(problem, interpretation, root);
2602}or{
2603 find interpretation(problem,interpretation);
2604 find mustInstanceOfInterferometryPayload_class(problem,interpretation,root);
2605 find mustExist(problem, interpretation, root);
2606}or{
2607 find interpretation(problem,interpretation);
2608 find mustInstanceOfCubeSat3U_class(problem,interpretation,root);
2609 find mustExist(problem, interpretation, root);
2610}or{
2611 find interpretation(problem,interpretation);
2612 find mustInstanceOfSpacecraft_class(problem,interpretation,root);
2613 find mustExist(problem, interpretation, root);
2614}or{
2615 find interpretation(problem,interpretation);
2616 find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,root);
2617 find mustExist(problem, interpretation, root);
2618}or{
2619 find interpretation(problem,interpretation);
2620 find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,root);
2621 find mustExist(problem, interpretation, root);
2622}or{
2623 find interpretation(problem,interpretation);
2624 find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,root);
2625 find mustExist(problem, interpretation, root);
2626}or{
2627 find interpretation(problem,interpretation);
2628 find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,root);
2629 find mustExist(problem, interpretation, root);
2630}or{
2631 find interpretation(problem,interpretation);
2632 find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,root);
2633 find mustExist(problem, interpretation, root);
2634}or{
2635 find interpretation(problem,interpretation);
2636 find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,root);
2637 find mustExist(problem, interpretation, root);
2638}or{
2639 find interpretation(problem,interpretation);
2640 find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,root);
2641 find mustExist(problem, interpretation, root);
2642}or{
2643 find interpretation(problem,interpretation);
2644 find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,root);
2645 find mustExist(problem, interpretation, root);
2646}or{
2647 find interpretation(problem,interpretation);
2648 find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,root);
2649 find mustExist(problem, interpretation, root);
2650}or{
2651 find interpretation(problem,interpretation);
2652 find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,root);
2653 find mustExist(problem, interpretation, root);
2654}
2655pattern createObject_CubeSat6U_class_by_spacecraft_reference_ConstellationMission(
2656 problem:LogicProblem, interpretation:PartialInterpretation,
2657 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2658 container:DefinedElement)
2659{
2660 find interpretation(problem,interpretation);
2661 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2662 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class");
2663 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2664 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
2665 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
2666 find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject);
2667 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
2668 find mustExist(problem, interpretation, container);
2669 neg find mustExist(problem, interpretation, newObject);
2670}
2671pattern createObject_CubeSat6U_class(
2672 problem:LogicProblem, interpretation:PartialInterpretation,
2673 typeInterpretation:PartialComplexTypeInterpretation)
2674{
2675 find interpretation(problem,interpretation);
2676 neg find hasElementInContainment(problem,interpretation);
2677 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2678 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class");
2679 find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject);
2680 find mayExist(problem, interpretation, newObject);
2681 neg find mustExist(problem, interpretation, newObject);
2682}
2683pattern createObject_CommSubsystem_class_UndefinedPart_by_commSubsystem_reference_CommunicatingElement(
2684 problem:LogicProblem, interpretation:PartialInterpretation,
2685 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2686 container:DefinedElement)
2687{
2688 find interpretation(problem,interpretation);
2689 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2690 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CommSubsystem class UndefinedPart");
2691 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2692 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"commSubsystem reference CommunicatingElement");
2693 find mustInstanceOfCommunicatingElement_class(problem,interpretation,container);
2694 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,newObject);
2695 find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,container,newObject);
2696 find mustExist(problem, interpretation, container);
2697 neg find mustExist(problem, interpretation, newObject);
2698}
2699pattern createObject_CommSubsystem_class_UndefinedPart(
2700 problem:LogicProblem, interpretation:PartialInterpretation,
2701 typeInterpretation:PartialComplexTypeInterpretation)
2702{
2703 find interpretation(problem,interpretation);
2704 neg find hasElementInContainment(problem,interpretation);
2705 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2706 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CommSubsystem class UndefinedPart");
2707 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,newObject);
2708 find mayExist(problem, interpretation, newObject);
2709 neg find mustExist(problem, interpretation, newObject);
2710}
2711pattern createObject_InterferometryPayload_class_by_payload_reference_Spacecraft(
2712 problem:LogicProblem, interpretation:PartialInterpretation,
2713 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2714 container:DefinedElement)
2715{
2716 find interpretation(problem,interpretation);
2717 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2718 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class");
2719 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2720 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"payload reference Spacecraft");
2721 find mustInstanceOfSpacecraft_class(problem,interpretation,container);
2722 find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject);
2723 find mayInRelationpayload_reference_Spacecraft(problem,interpretation,container,newObject);
2724 find mustExist(problem, interpretation, container);
2725 neg find mustExist(problem, interpretation, newObject);
2726}
2727pattern createObject_InterferometryPayload_class(
2728 problem:LogicProblem, interpretation:PartialInterpretation,
2729 typeInterpretation:PartialComplexTypeInterpretation)
2730{
2731 find interpretation(problem,interpretation);
2732 neg find hasElementInContainment(problem,interpretation);
2733 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2734 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class");
2735 find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject);
2736 find mayExist(problem, interpretation, newObject);
2737 neg find mustExist(problem, interpretation, newObject);
2738}
2739pattern createObject_SmallSat_class_by_spacecraft_reference_ConstellationMission(
2740 problem:LogicProblem, interpretation:PartialInterpretation,
2741 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2742 container:DefinedElement)
2743{
2744 find interpretation(problem,interpretation);
2745 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2746 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class");
2747 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2748 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
2749 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
2750 find mayInstanceOfSmallSat_class(problem,interpretation,newObject);
2751 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
2752 find mustExist(problem, interpretation, container);
2753 neg find mustExist(problem, interpretation, newObject);
2754}
2755pattern createObject_SmallSat_class(
2756 problem:LogicProblem, interpretation:PartialInterpretation,
2757 typeInterpretation:PartialComplexTypeInterpretation)
2758{
2759 find interpretation(problem,interpretation);
2760 neg find hasElementInContainment(problem,interpretation);
2761 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2762 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class");
2763 find mayInstanceOfSmallSat_class(problem,interpretation,newObject);
2764 find mayExist(problem, interpretation, newObject);
2765 neg find mustExist(problem, interpretation, newObject);
2766}
2767pattern createObject_CubeSat3U_class_by_spacecraft_reference_ConstellationMission(
2768 problem:LogicProblem, interpretation:PartialInterpretation,
2769 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2770 container:DefinedElement)
2771{
2772 find interpretation(problem,interpretation);
2773 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2774 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class");
2775 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2776 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission");
2777 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
2778 find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject);
2779 find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject);
2780 find mustExist(problem, interpretation, container);
2781 neg find mustExist(problem, interpretation, newObject);
2782}
2783pattern createObject_CubeSat3U_class(
2784 problem:LogicProblem, interpretation:PartialInterpretation,
2785 typeInterpretation:PartialComplexTypeInterpretation)
2786{
2787 find interpretation(problem,interpretation);
2788 neg find hasElementInContainment(problem,interpretation);
2789 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2790 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class");
2791 find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject);
2792 find mayExist(problem, interpretation, newObject);
2793 neg find mustExist(problem, interpretation, newObject);
2794}
2795pattern createObject_GroundStationNetwork_class_UndefinedPart_by_groundStationNetwork_reference_ConstellationMission(
2796 problem:LogicProblem, interpretation:PartialInterpretation,
2797 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2798 container:DefinedElement)
2799{
2800 find interpretation(problem,interpretation);
2801 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2802 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart");
2803 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2804 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"groundStationNetwork reference ConstellationMission");
2805 find mustInstanceOfConstellationMission_class(problem,interpretation,container);
2806 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject);
2807 find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,container,newObject);
2808 find mustExist(problem, interpretation, container);
2809 neg find mustExist(problem, interpretation, newObject);
2810}
2811pattern createObject_GroundStationNetwork_class_UndefinedPart(
2812 problem:LogicProblem, interpretation:PartialInterpretation,
2813 typeInterpretation:PartialComplexTypeInterpretation)
2814{
2815 find interpretation(problem,interpretation);
2816 neg find hasElementInContainment(problem,interpretation);
2817 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2818 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart");
2819 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject);
2820 find mayExist(problem, interpretation, newObject);
2821 neg find mustExist(problem, interpretation, newObject);
2822}
2823pattern createObject_DirectedCommunicationLink_class_by_communicationLink_reference_CommunicatingElement(
2824 problem:LogicProblem, interpretation:PartialInterpretation,
2825 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
2826 container:DefinedElement)
2827{
2828 find interpretation(problem,interpretation);
2829 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2830 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"DirectedCommunicationLink class");
2831 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
2832 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"communicationLink reference CommunicatingElement");
2833 find mustInstanceOfCommunicatingElement_class(problem,interpretation,container);
2834 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,newObject);
2835 find mayInRelationcommunicationLink_reference_CommunicatingElement(problem,interpretation,container,newObject);
2836 find mustExist(problem, interpretation, container);
2837 neg find mustExist(problem, interpretation, newObject);
2838}
2839pattern createObject_DirectedCommunicationLink_class(
2840 problem:LogicProblem, interpretation:PartialInterpretation,
2841 typeInterpretation:PartialComplexTypeInterpretation)
2842{
2843 find interpretation(problem,interpretation);
2844 neg find hasElementInContainment(problem,interpretation);
2845 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2846 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"DirectedCommunicationLink class");
2847 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,newObject);
2848 find mayExist(problem, interpretation, newObject);
2849 neg find mustExist(problem, interpretation, newObject);
2850}
2851pattern createObject_InterferometryMission_class_UndefinedPart(
2852 problem:LogicProblem, interpretation:PartialInterpretation,
2853 typeInterpretation:PartialComplexTypeInterpretation)
2854{
2855 find interpretation(problem,interpretation);
2856 neg find hasElementInContainment(problem,interpretation);
2857 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
2858 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryMission class UndefinedPart");
2859 find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,newObject);
2860 find mayExist(problem, interpretation, newObject);
2861 neg find mustExist(problem, interpretation, newObject);
2862}
2863
2864//////////
2865// 4.2 Type refinement
2866//////////
2867pattern refineTypeTo_CubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2868 find interpretation(problem,interpretation);
2869 PartialInterpretation.newElements(interpretation,element);
2870 find mayInstanceOfCubeSat6U_class(problem,interpretation,element);
2871 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
2872 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2873 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2874 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
2875 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
2876 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2877 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2878 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
2879}
2880pattern refineTypeTo_CommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2881 find interpretation(problem,interpretation);
2882 PartialInterpretation.newElements(interpretation,element);
2883 find mayInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
2884 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
2885 neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element);
2886 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2887 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2888 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2889}
2890pattern refineTypeTo_InterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2891 find interpretation(problem,interpretation);
2892 PartialInterpretation.newElements(interpretation,element);
2893 find mayInstanceOfInterferometryPayload_class(problem,interpretation,element);
2894 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
2895 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2896 neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element);
2897 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2898 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2899}
2900pattern refineTypeTo_SmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2901 find interpretation(problem,interpretation);
2902 PartialInterpretation.newElements(interpretation,element);
2903 find mayInstanceOfSmallSat_class(problem,interpretation,element);
2904 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
2905 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2906 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
2907 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2908 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
2909 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2910 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2911 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
2912}
2913pattern refineTypeTo_CubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2914 find interpretation(problem,interpretation);
2915 PartialInterpretation.newElements(interpretation,element);
2916 find mayInstanceOfCubeSat3U_class(problem,interpretation,element);
2917 neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element);
2918 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2919 neg find mustInstanceOfSmallSat_class(problem,interpretation,element);
2920 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2921 neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element);
2922 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2923 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2924 neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element);
2925}
2926pattern refineTypeTo_GroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2927 find interpretation(problem,interpretation);
2928 PartialInterpretation.newElements(interpretation,element);
2929 find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element);
2930 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2931 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2932 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2933 neg find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element);
2934 neg find mustInstanceOfSpacecraft_class(problem,interpretation,element);
2935 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2936}
2937pattern refineTypeTo_DirectedCommunicationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2938 find interpretation(problem,interpretation);
2939 PartialInterpretation.newElements(interpretation,element);
2940 find mayInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2941 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
2942 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2943 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2944 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2945 neg find mustInstanceOfConstellationMission_class(problem,interpretation,element);
2946}
2947pattern refineTypeTo_InterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
2948 find interpretation(problem,interpretation);
2949 PartialInterpretation.newElements(interpretation,element);
2950 find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element);
2951 neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element);
2952 neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element);
2953 neg find mustInstanceOfPayload_class(problem,interpretation,element);
2954 neg find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,element);
2955 neg find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element);
2956}
2957
2958//////////
2959// 4.3 Relation refinement
2960//////////
2961pattern refineRelation_source_reference_DirectedCommunicationLink(
2962 problem:LogicProblem, interpretation:PartialInterpretation,
2963 relationIterpretation:PartialRelationInterpretation,
2964 from: DefinedElement, to: DefinedElement)
2965{
2966 find interpretation(problem,interpretation);
2967 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2968 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference DirectedCommunicationLink");
2969 find mustExist(problem, interpretation, from);
2970 find mustExist(problem, interpretation, to);
2971 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,from);
2972 find mustInstanceOfCommSubsystem_class(problem,interpretation,to);
2973 find mayInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,from,to);
2974 neg find mustInRelationsource_reference_DirectedCommunicationLink(problem,interpretation,from,to);
2975}
2976pattern refineRelation_target_reference_DirectedCommunicationLink(
2977 problem:LogicProblem, interpretation:PartialInterpretation,
2978 relationIterpretation:PartialRelationInterpretation,
2979 from: DefinedElement, to: DefinedElement)
2980{
2981 find interpretation(problem,interpretation);
2982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference DirectedCommunicationLink");
2984 find mustExist(problem, interpretation, from);
2985 find mustExist(problem, interpretation, to);
2986 find mustInstanceOfDirectedCommunicationLink_class(problem,interpretation,from);
2987 find mustInstanceOfCommSubsystem_class(problem,interpretation,to);
2988 find mayInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,from,to);
2989 neg find mustInRelationtarget_reference_DirectedCommunicationLink(problem,interpretation,from,to);
2990}
2991pattern refineRelation_band_attribute_CommSubsystem(
2992 problem:LogicProblem, interpretation:PartialInterpretation,
2993 relationIterpretation:PartialRelationInterpretation,
2994 from: DefinedElement, to: DefinedElement)
2995{
2996 find interpretation(problem,interpretation);
2997 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2998 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"band attribute CommSubsystem");
2999 find mustExist(problem, interpretation, from);
3000 find mustExist(problem, interpretation, to);
3001 find mustInstanceOfCommSubsystem_class(problem,interpretation,from);
3002 find mustInstanceOfTransceiverBand_enum(problem,interpretation,to);
3003 find mayInRelationband_attribute_CommSubsystem(problem,interpretation,from,to);
3004 neg find mustInRelationband_attribute_CommSubsystem(problem,interpretation,from,to);
3005}
3006pattern refineRelation_gain_attribute_CommSubsystem(
3007 problem:LogicProblem, interpretation:PartialInterpretation,
3008 relationIterpretation:PartialRelationInterpretation,
3009 from: DefinedElement, to: DefinedElement)
3010{
3011 find interpretation(problem,interpretation);
3012 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3013 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"gain attribute CommSubsystem");
3014 find mustExist(problem, interpretation, from);
3015 find mustExist(problem, interpretation, to);
3016 find mustInstanceOfCommSubsystem_class(problem,interpretation,from);
3017 find mustInstanceOfAntennaGain_enum(problem,interpretation,to);
3018 find mayInRelationgain_attribute_CommSubsystem(problem,interpretation,from,to);
3019 neg find mustInRelationgain_attribute_CommSubsystem(problem,interpretation,from,to);
3020}
3021
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..7b46b451
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/generation.logicproblem
@@ -0,0 +1,1759 @@
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.14 //@types.15" isAbstract="true"/>
4 <types xsi:type="language_1:TypeDeclaration" name="InterferometryMission class" subtypes="//@types.16 //@types.17" supertypes="//@types.0" isAbstract="true"/>
5 <types xsi:type="language_1:TypeDeclaration" name="CommunicatingElement class" subtypes="//@types.3 //@types.4 //@types.18 //@types.19" isAbstract="true"/>
6 <types xsi:type="language_1:TypeDeclaration" name="GroundStationNetwork class" subtypes="//@types.20 //@types.21" supertypes="//@types.2" isAbstract="true"/>
7 <types xsi:type="language_1:TypeDeclaration" name="Spacecraft class" subtypes="//@types.5 //@types.6 //@types.7" supertypes="//@types.2 //@types.19" isAbstract="true"/>
8 <types xsi:type="language_1:TypeDeclaration" name="CubeSat3U class" supertypes="//@types.4"/>
9 <types xsi:type="language_1:TypeDeclaration" name="CubeSat6U class" supertypes="//@types.4"/>
10 <types xsi:type="language_1:TypeDeclaration" name="SmallSat class" supertypes="//@types.4"/>
11 <types xsi:type="language_1:TypeDeclaration" name="CommSubsystem class" subtypes="//@types.22 //@types.23" isAbstract="true"/>
12 <types xsi:type="language_1:TypeDeclaration" name="DirectedCommunicationLink class"/>
13 <types xsi:type="language_1:TypeDeclaration" name="Payload class" subtypes="//@types.11" isAbstract="true"/>
14 <types xsi:type="language_1:TypeDeclaration" name="InterferometryPayload class" supertypes="//@types.10"/>
15 <types xsi:type="language_1:TypeDefinition" name="TransceiverBand enum" elements="//@elements.0 //@elements.1 //@elements.2"/>
16 <types xsi:type="language_1:TypeDefinition" name="AntennaGain enum" elements="//@elements.3 //@elements.4 //@elements.5"/>
17 <types xsi:type="language_1:TypeDefinition" name="ConstellationMission class DefinedPart" subtypes="//@types.16" supertypes="//@types.0" isAbstract="true" elements="//@elements.6"/>
18 <types xsi:type="language_1:TypeDeclaration" name="ConstellationMission class UndefinedPart" subtypes="//@types.17" supertypes="//@types.0" isAbstract="true"/>
19 <types xsi:type="language_1:TypeDefinition" name="InterferometryMission class DefinedPart" supertypes="//@types.1 //@types.14" elements="//@elements.6"/>
20 <types xsi:type="language_1:TypeDeclaration" name="InterferometryMission class UndefinedPart" supertypes="//@types.1 //@types.15"/>
21 <types xsi:type="language_1:TypeDefinition" name="CommunicatingElement class DefinedPart" subtypes="//@types.20" supertypes="//@types.2" isAbstract="true" elements="//@elements.7"/>
22 <types xsi:type="language_1:TypeDeclaration" name="CommunicatingElement class UndefinedPart" subtypes="//@types.21 //@types.4" supertypes="//@types.2" isAbstract="true"/>
23 <types xsi:type="language_1:TypeDefinition" name="GroundStationNetwork class DefinedPart" supertypes="//@types.3 //@types.18" elements="//@elements.7"/>
24 <types xsi:type="language_1:TypeDeclaration" name="GroundStationNetwork class UndefinedPart" supertypes="//@types.3 //@types.19"/>
25 <types xsi:type="language_1:TypeDefinition" name="CommSubsystem class DefinedPart" supertypes="//@types.8" elements="//@elements.8 //@elements.9"/>
26 <types xsi:type="language_1:TypeDeclaration" name="CommSubsystem class UndefinedPart" supertypes="//@types.8"/>
27 <assertions name="lowerMultiplicity groundStationNetwork ConstellationMission" annotations="//@annotations.0">
28 <value xsi:type="language_1:Forall">
29 <quantifiedVariables name="src">
30 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
31 </quantifiedVariables>
32 <expression xsi:type="language_1:Exists">
33 <quantifiedVariables name="trg 1">
34 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
35 </quantifiedVariables>
36 <expression xsi:type="language_1:And">
37 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
38 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
39 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@expression/@quantifiedVariables.0"/>
40 </operands>
41 </expression>
42 </expression>
43 </value>
44 </assertions>
45 <assertions name="upperMultiplicity groundStationNetwork ConstellationMission" annotations="//@annotations.1">
46 <value xsi:type="language_1:Forall">
47 <quantifiedVariables name="src">
48 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
49 </quantifiedVariables>
50 <quantifiedVariables name="trg 1">
51 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
52 </quantifiedVariables>
53 <quantifiedVariables name="trg 2">
54 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
55 </quantifiedVariables>
56 <expression xsi:type="language_1:Impl">
57 <leftOperand xsi:type="language_1:And">
58 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
59 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
60 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
61 </operands>
62 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
63 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
64 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
65 </operands>
66 </leftOperand>
67 <rightOperand xsi:type="language_1:Not">
68 <operand xsi:type="language_1:Distinct">
69 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
70 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
71 </operand>
72 </rightOperand>
73 </expression>
74 </value>
75 </assertions>
76 <assertions name="lowerMultiplicity spacecraft ConstellationMission" annotations="//@annotations.2">
77 <value xsi:type="language_1:Forall">
78 <quantifiedVariables name="src">
79 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
80 </quantifiedVariables>
81 <expression xsi:type="language_1:Exists">
82 <quantifiedVariables name="trg 1">
83 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
84 </quantifiedVariables>
85 <quantifiedVariables name="trg 2">
86 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
87 </quantifiedVariables>
88 <expression xsi:type="language_1:And">
89 <operands xsi:type="language_1:Distinct">
90 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.0"/>
91 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.1"/>
92 </operands>
93 <operands xsi:type="language_1:And">
94 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
95 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
96 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.0"/>
97 </operands>
98 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
99 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
100 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@expression/@quantifiedVariables.1"/>
101 </operands>
102 </operands>
103 </expression>
104 </expression>
105 </value>
106 </assertions>
107 <assertions name="upperMultiplicity spacecraft ConstellationMission" annotations="//@annotations.3">
108 <value xsi:type="language_1:Forall">
109 <quantifiedVariables name="src">
110 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
111 </quantifiedVariables>
112 <quantifiedVariables name="trg 1">
113 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
114 </quantifiedVariables>
115 <quantifiedVariables name="trg 2">
116 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
117 </quantifiedVariables>
118 <quantifiedVariables name="trg 3">
119 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
120 </quantifiedVariables>
121 <quantifiedVariables name="trg 4">
122 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
123 </quantifiedVariables>
124 <quantifiedVariables name="trg 5">
125 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
126 </quantifiedVariables>
127 <quantifiedVariables name="trg 6">
128 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
129 </quantifiedVariables>
130 <quantifiedVariables name="trg 7">
131 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
132 </quantifiedVariables>
133 <quantifiedVariables name="trg 8">
134 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
135 </quantifiedVariables>
136 <quantifiedVariables name="trg 9">
137 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
138 </quantifiedVariables>
139 <quantifiedVariables name="trg 10">
140 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
141 </quantifiedVariables>
142 <quantifiedVariables name="trg 11">
143 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
144 </quantifiedVariables>
145 <quantifiedVariables name="trg 12">
146 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
147 </quantifiedVariables>
148 <quantifiedVariables name="trg 13">
149 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
150 </quantifiedVariables>
151 <quantifiedVariables name="trg 14">
152 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
153 </quantifiedVariables>
154 <quantifiedVariables name="trg 15">
155 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
156 </quantifiedVariables>
157 <quantifiedVariables name="trg 16">
158 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
159 </quantifiedVariables>
160 <quantifiedVariables name="trg 17">
161 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
162 </quantifiedVariables>
163 <quantifiedVariables name="trg 18">
164 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
165 </quantifiedVariables>
166 <quantifiedVariables name="trg 19">
167 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
168 </quantifiedVariables>
169 <quantifiedVariables name="trg 20">
170 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
171 </quantifiedVariables>
172 <quantifiedVariables name="trg 21">
173 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
174 </quantifiedVariables>
175 <quantifiedVariables name="trg 22">
176 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
177 </quantifiedVariables>
178 <quantifiedVariables name="trg 23">
179 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
180 </quantifiedVariables>
181 <quantifiedVariables name="trg 24">
182 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
183 </quantifiedVariables>
184 <quantifiedVariables name="trg 25">
185 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
186 </quantifiedVariables>
187 <quantifiedVariables name="trg 26">
188 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
189 </quantifiedVariables>
190 <quantifiedVariables name="trg 27">
191 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
192 </quantifiedVariables>
193 <quantifiedVariables name="trg 28">
194 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
195 </quantifiedVariables>
196 <quantifiedVariables name="trg 29">
197 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
198 </quantifiedVariables>
199 <quantifiedVariables name="trg 30">
200 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
201 </quantifiedVariables>
202 <quantifiedVariables name="trg 31">
203 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
204 </quantifiedVariables>
205 <quantifiedVariables name="trg 32">
206 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
207 </quantifiedVariables>
208 <quantifiedVariables name="trg 33">
209 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
210 </quantifiedVariables>
211 <quantifiedVariables name="trg 34">
212 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
213 </quantifiedVariables>
214 <quantifiedVariables name="trg 35">
215 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
216 </quantifiedVariables>
217 <quantifiedVariables name="trg 36">
218 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
219 </quantifiedVariables>
220 <quantifiedVariables name="trg 37">
221 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
222 </quantifiedVariables>
223 <quantifiedVariables name="trg 38">
224 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
225 </quantifiedVariables>
226 <quantifiedVariables name="trg 39">
227 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
228 </quantifiedVariables>
229 <quantifiedVariables name="trg 40">
230 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
231 </quantifiedVariables>
232 <quantifiedVariables name="trg 41">
233 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
234 </quantifiedVariables>
235 <quantifiedVariables name="trg 42">
236 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
237 </quantifiedVariables>
238 <quantifiedVariables name="trg 43">
239 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
240 </quantifiedVariables>
241 <quantifiedVariables name="trg 44">
242 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
243 </quantifiedVariables>
244 <quantifiedVariables name="trg 45">
245 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
246 </quantifiedVariables>
247 <quantifiedVariables name="trg 46">
248 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
249 </quantifiedVariables>
250 <quantifiedVariables name="trg 47">
251 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
252 </quantifiedVariables>
253 <quantifiedVariables name="trg 48">
254 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
255 </quantifiedVariables>
256 <quantifiedVariables name="trg 49">
257 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
258 </quantifiedVariables>
259 <quantifiedVariables name="trg 50">
260 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
261 </quantifiedVariables>
262 <quantifiedVariables name="trg 51">
263 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
264 </quantifiedVariables>
265 <expression xsi:type="language_1:Impl">
266 <leftOperand xsi:type="language_1:And">
267 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
268 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
269 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
270 </operands>
271 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
272 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
273 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
274 </operands>
275 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
276 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
277 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.3"/>
278 </operands>
279 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
280 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
281 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.4"/>
282 </operands>
283 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
284 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
285 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.5"/>
286 </operands>
287 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
288 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
289 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.6"/>
290 </operands>
291 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
292 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
293 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.7"/>
294 </operands>
295 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
296 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
297 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.8"/>
298 </operands>
299 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
300 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
301 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.9"/>
302 </operands>
303 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
304 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
305 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.10"/>
306 </operands>
307 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
308 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
309 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.11"/>
310 </operands>
311 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
312 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
313 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.12"/>
314 </operands>
315 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
316 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
317 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.13"/>
318 </operands>
319 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
320 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
321 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.14"/>
322 </operands>
323 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
324 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
325 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.15"/>
326 </operands>
327 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
328 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
329 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.16"/>
330 </operands>
331 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
332 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
333 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.17"/>
334 </operands>
335 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
336 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
337 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.18"/>
338 </operands>
339 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
340 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
341 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.19"/>
342 </operands>
343 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
344 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
345 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.20"/>
346 </operands>
347 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
348 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
349 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.21"/>
350 </operands>
351 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
352 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
353 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.22"/>
354 </operands>
355 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
356 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
357 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.23"/>
358 </operands>
359 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
360 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
361 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.24"/>
362 </operands>
363 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
364 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
365 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.25"/>
366 </operands>
367 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
368 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
369 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.26"/>
370 </operands>
371 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
372 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
373 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.27"/>
374 </operands>
375 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
376 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
377 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.28"/>
378 </operands>
379 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
380 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
381 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.29"/>
382 </operands>
383 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
384 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
385 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.30"/>
386 </operands>
387 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
388 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
389 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.31"/>
390 </operands>
391 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
392 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
393 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.32"/>
394 </operands>
395 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
396 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
397 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.33"/>
398 </operands>
399 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
400 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
401 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.34"/>
402 </operands>
403 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
404 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
405 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.35"/>
406 </operands>
407 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
408 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
409 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.36"/>
410 </operands>
411 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
412 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
413 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.37"/>
414 </operands>
415 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
416 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
417 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.38"/>
418 </operands>
419 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
420 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
421 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.39"/>
422 </operands>
423 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
424 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
425 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.40"/>
426 </operands>
427 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
428 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
429 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.41"/>
430 </operands>
431 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
432 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
433 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.42"/>
434 </operands>
435 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
436 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
437 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.43"/>
438 </operands>
439 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
440 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
441 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.44"/>
442 </operands>
443 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
444 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
445 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.45"/>
446 </operands>
447 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
448 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
449 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.46"/>
450 </operands>
451 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
452 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
453 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.47"/>
454 </operands>
455 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
456 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
457 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.48"/>
458 </operands>
459 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
460 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
461 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.49"/>
462 </operands>
463 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
464 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
465 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.50"/>
466 </operands>
467 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
468 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
469 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.51"/>
470 </operands>
471 </leftOperand>
472 <rightOperand xsi:type="language_1:Not">
473 <operand xsi:type="language_1:Distinct">
474 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
475 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
476 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.3"/>
477 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.4"/>
478 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.5"/>
479 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.6"/>
480 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.7"/>
481 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.8"/>
482 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.9"/>
483 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.10"/>
484 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.11"/>
485 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.12"/>
486 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.13"/>
487 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.14"/>
488 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.15"/>
489 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.16"/>
490 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.17"/>
491 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.18"/>
492 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.19"/>
493 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.20"/>
494 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.21"/>
495 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.22"/>
496 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.23"/>
497 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.24"/>
498 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.25"/>
499 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.26"/>
500 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.27"/>
501 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.28"/>
502 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.29"/>
503 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.30"/>
504 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.31"/>
505 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.32"/>
506 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.33"/>
507 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.34"/>
508 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.35"/>
509 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.36"/>
510 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.37"/>
511 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.38"/>
512 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.39"/>
513 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.40"/>
514 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.41"/>
515 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.42"/>
516 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.43"/>
517 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.44"/>
518 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.45"/>
519 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.46"/>
520 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.47"/>
521 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.48"/>
522 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.49"/>
523 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.50"/>
524 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.51"/>
525 </operand>
526 </rightOperand>
527 </expression>
528 </value>
529 </assertions>
530 <assertions name="lowerMultiplicity commSubsystem CommunicatingElement" annotations="//@annotations.4">
531 <value xsi:type="language_1:Forall">
532 <quantifiedVariables name="src">
533 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
534 </quantifiedVariables>
535 <expression xsi:type="language_1:Exists">
536 <quantifiedVariables name="trg 1">
537 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
538 </quantifiedVariables>
539 <expression xsi:type="language_1:And">
540 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
541 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
542 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@expression/@quantifiedVariables.0"/>
543 </operands>
544 </expression>
545 </expression>
546 </value>
547 </assertions>
548 <assertions name="upperMultiplicity commSubsystem CommunicatingElement" annotations="//@annotations.5">
549 <value xsi:type="language_1:Forall">
550 <quantifiedVariables name="src">
551 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
552 </quantifiedVariables>
553 <quantifiedVariables name="trg 1">
554 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
555 </quantifiedVariables>
556 <quantifiedVariables name="trg 2">
557 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
558 </quantifiedVariables>
559 <quantifiedVariables name="trg 3">
560 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
561 </quantifiedVariables>
562 <expression xsi:type="language_1:Impl">
563 <leftOperand xsi:type="language_1:And">
564 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
565 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
566 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
567 </operands>
568 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
569 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
570 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
571 </operands>
572 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
573 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
574 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.3"/>
575 </operands>
576 </leftOperand>
577 <rightOperand xsi:type="language_1:Not">
578 <operand xsi:type="language_1:Distinct">
579 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
580 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
581 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.3"/>
582 </operand>
583 </rightOperand>
584 </expression>
585 </value>
586 </assertions>
587 <assertions name="upperMultiplicity communicationLink CommunicatingElement" annotations="//@annotations.6">
588 <value xsi:type="language_1:Forall">
589 <quantifiedVariables name="src">
590 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
591 </quantifiedVariables>
592 <quantifiedVariables name="trg 1">
593 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
594 </quantifiedVariables>
595 <quantifiedVariables name="trg 2">
596 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
597 </quantifiedVariables>
598 <expression xsi:type="language_1:Impl">
599 <leftOperand xsi:type="language_1:And">
600 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
601 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
602 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
603 </operands>
604 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
605 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
606 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
607 </operands>
608 </leftOperand>
609 <rightOperand xsi:type="language_1:Not">
610 <operand xsi:type="language_1:Distinct">
611 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
612 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
613 </operand>
614 </rightOperand>
615 </expression>
616 </value>
617 </assertions>
618 <assertions name="upperMultiplicity payload Spacecraft" annotations="//@annotations.7">
619 <value xsi:type="language_1:Forall">
620 <quantifiedVariables name="src">
621 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
622 </quantifiedVariables>
623 <quantifiedVariables name="trg 1">
624 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
625 </quantifiedVariables>
626 <quantifiedVariables name="trg 2">
627 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
628 </quantifiedVariables>
629 <expression xsi:type="language_1:Impl">
630 <leftOperand xsi:type="language_1:And">
631 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
632 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
633 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
634 </operands>
635 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
636 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
637 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
638 </operands>
639 </leftOperand>
640 <rightOperand xsi:type="language_1:Not">
641 <operand xsi:type="language_1:Distinct">
642 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
643 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
644 </operand>
645 </rightOperand>
646 </expression>
647 </value>
648 </assertions>
649 <assertions name="lowerMultiplicity source DirectedCommunicationLink" annotations="//@annotations.8">
650 <value xsi:type="language_1:Forall">
651 <quantifiedVariables name="src">
652 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
653 </quantifiedVariables>
654 <expression xsi:type="language_1:Exists">
655 <quantifiedVariables name="trg 1">
656 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
657 </quantifiedVariables>
658 <expression xsi:type="language_1:And">
659 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
660 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.0"/>
661 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@expression/@quantifiedVariables.0"/>
662 </operands>
663 </expression>
664 </expression>
665 </value>
666 </assertions>
667 <assertions name="upperMultiplicity source DirectedCommunicationLink" annotations="//@annotations.9">
668 <value xsi:type="language_1:Forall">
669 <quantifiedVariables name="src">
670 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
671 </quantifiedVariables>
672 <quantifiedVariables name="trg 1">
673 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
674 </quantifiedVariables>
675 <quantifiedVariables name="trg 2">
676 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
677 </quantifiedVariables>
678 <expression xsi:type="language_1:Impl">
679 <leftOperand xsi:type="language_1:And">
680 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
681 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
682 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
683 </operands>
684 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
685 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
686 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
687 </operands>
688 </leftOperand>
689 <rightOperand xsi:type="language_1:Not">
690 <operand xsi:type="language_1:Distinct">
691 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
692 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
693 </operand>
694 </rightOperand>
695 </expression>
696 </value>
697 </assertions>
698 <assertions name="lowerMultiplicity target DirectedCommunicationLink" annotations="//@annotations.10">
699 <value xsi:type="language_1:Forall">
700 <quantifiedVariables name="src">
701 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
702 </quantifiedVariables>
703 <expression xsi:type="language_1:Exists">
704 <quantifiedVariables name="trg 1">
705 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
706 </quantifiedVariables>
707 <expression xsi:type="language_1:And">
708 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
709 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@quantifiedVariables.0"/>
710 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@expression/@quantifiedVariables.0"/>
711 </operands>
712 </expression>
713 </expression>
714 </value>
715 </assertions>
716 <assertions name="upperMultiplicity target DirectedCommunicationLink" annotations="//@annotations.11">
717 <value xsi:type="language_1:Forall">
718 <quantifiedVariables name="src">
719 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
720 </quantifiedVariables>
721 <quantifiedVariables name="trg 1">
722 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
723 </quantifiedVariables>
724 <quantifiedVariables name="trg 2">
725 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
726 </quantifiedVariables>
727 <expression xsi:type="language_1:Impl">
728 <leftOperand xsi:type="language_1:And">
729 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
730 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
731 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
732 </operands>
733 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
734 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
735 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
736 </operands>
737 </leftOperand>
738 <rightOperand xsi:type="language_1:Not">
739 <operand xsi:type="language_1:Distinct">
740 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
741 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
742 </operand>
743 </rightOperand>
744 </expression>
745 </value>
746 </assertions>
747 <assertions name="lowerMultiplicity band CommSubsystem" annotations="//@annotations.12">
748 <value xsi:type="language_1:Forall">
749 <quantifiedVariables name="src">
750 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
751 </quantifiedVariables>
752 <expression xsi:type="language_1:Exists">
753 <quantifiedVariables name="trg 1">
754 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
755 </quantifiedVariables>
756 <expression xsi:type="language_1:And">
757 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
758 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.0"/>
759 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@expression/@quantifiedVariables.0"/>
760 </operands>
761 </expression>
762 </expression>
763 </value>
764 </assertions>
765 <assertions name="upperMultiplicity band CommSubsystem" annotations="//@annotations.13">
766 <value xsi:type="language_1:Forall">
767 <quantifiedVariables name="src">
768 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
769 </quantifiedVariables>
770 <quantifiedVariables name="trg 1">
771 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
772 </quantifiedVariables>
773 <quantifiedVariables name="trg 2">
774 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
775 </quantifiedVariables>
776 <expression xsi:type="language_1:Impl">
777 <leftOperand xsi:type="language_1:And">
778 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
779 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
780 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
781 </operands>
782 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
783 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
784 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
785 </operands>
786 </leftOperand>
787 <rightOperand xsi:type="language_1:Not">
788 <operand xsi:type="language_1:Distinct">
789 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
790 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
791 </operand>
792 </rightOperand>
793 </expression>
794 </value>
795 </assertions>
796 <assertions name="lowerMultiplicity gain CommSubsystem" annotations="//@annotations.14">
797 <value xsi:type="language_1:Forall">
798 <quantifiedVariables name="src">
799 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
800 </quantifiedVariables>
801 <expression xsi:type="language_1:Exists">
802 <quantifiedVariables name="trg 1">
803 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
804 </quantifiedVariables>
805 <expression xsi:type="language_1:And">
806 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
807 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.0"/>
808 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@expression/@quantifiedVariables.0"/>
809 </operands>
810 </expression>
811 </expression>
812 </value>
813 </assertions>
814 <assertions name="upperMultiplicity gain CommSubsystem" annotations="//@annotations.15">
815 <value xsi:type="language_1:Forall">
816 <quantifiedVariables name="src">
817 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
818 </quantifiedVariables>
819 <quantifiedVariables name="trg 1">
820 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
821 </quantifiedVariables>
822 <quantifiedVariables name="trg 2">
823 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
824 </quantifiedVariables>
825 <expression xsi:type="language_1:Impl">
826 <leftOperand xsi:type="language_1:And">
827 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
828 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
829 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
830 </operands>
831 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
832 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
833 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
834 </operands>
835 </leftOperand>
836 <rightOperand xsi:type="language_1:Not">
837 <operand xsi:type="language_1:Distinct">
838 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
839 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
840 </operand>
841 </rightOperand>
842 </expression>
843 </value>
844 </assertions>
845 <assertions name="PartialInterpretation groundStationNetwork reference ConstellationMission" annotations="//@annotations.16">
846 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
847 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.6"/>
848 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.7"/>
849 </value>
850 </assertions>
851 <assertions name="PartialInterpretation commSubsystem reference CommunicatingElement" annotations="//@annotations.17">
852 <value xsi:type="language_1:And">
853 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
854 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.7"/>
855 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.8"/>
856 </operands>
857 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
858 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.7"/>
859 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.9"/>
860 </operands>
861 </value>
862 </assertions>
863 <assertions name="PartialInterpretation band attribute CommSubsystem" annotations="//@annotations.18">
864 <value xsi:type="language_1:And">
865 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
866 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.8"/>
867 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.1"/>
868 </operands>
869 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
870 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.9"/>
871 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
872 </operands>
873 </value>
874 </assertions>
875 <assertions name="PartialInterpretation gain attribute CommSubsystem" annotations="//@annotations.19">
876 <value xsi:type="language_1:And">
877 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
878 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.8"/>
879 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.4"/>
880 </operands>
881 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
882 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.9"/>
883 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.5"/>
884 </operands>
885 </value>
886 </assertions>
887 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement" annotations="//@annotations.42">
888 <value xsi:type="language_1:Forall">
889 <quantifiedVariables name="p0">
890 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
891 </quantifiedVariables>
892 <expression xsi:type="language_1:Not">
893 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9">
894 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.0"/>
895 </operand>
896 </expression>
897 </value>
898 </assertions>
899 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation" annotations="//@annotations.43">
900 <value xsi:type="language_1:Forall">
901 <quantifiedVariables name="p0">
902 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
903 </quantifiedVariables>
904 <expression xsi:type="language_1:Not">
905 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13">
906 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.21/@value/@quantifiedVariables.0"/>
907 </operand>
908 </expression>
909 </value>
910 </assertions>
911 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries communicationLoop" annotations="//@annotations.44">
912 <value xsi:type="language_1:Forall">
913 <quantifiedVariables name="p0">
914 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
915 </quantifiedVariables>
916 <expression xsi:type="language_1:Not">
917 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14">
918 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.0"/>
919 </operand>
920 </expression>
921 </value>
922 </assertions>
923 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand" annotations="//@annotations.45">
924 <value xsi:type="language_1:Forall">
925 <quantifiedVariables name="p0">
926 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
927 </quantifiedVariables>
928 <expression xsi:type="language_1:Not">
929 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17">
930 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.0"/>
931 </operand>
932 </expression>
933 </value>
934 </assertions>
935 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain" annotations="//@annotations.46">
936 <value xsi:type="language_1:Forall">
937 <quantifiedVariables name="p0">
938 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
939 </quantifiedVariables>
940 <expression xsi:type="language_1:Not">
941 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19">
942 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.0"/>
943 </operand>
944 </expression>
945 </value>
946 </assertions>
947 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow" annotations="//@annotations.47">
948 <value xsi:type="language_1:Forall">
949 <quantifiedVariables name="p0">
950 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
951 </quantifiedVariables>
952 <expression xsi:type="language_1:Not">
953 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21">
954 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.0"/>
955 </operand>
956 </expression>
957 </value>
958 </assertions>
959 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium" annotations="//@annotations.48">
960 <value xsi:type="language_1:Forall">
961 <quantifiedVariables name="p0">
962 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
963 </quantifiedVariables>
964 <expression xsi:type="language_1:Not">
965 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23">
966 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.0"/>
967 </operand>
968 </expression>
969 </value>
970 </assertions>
971 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow" annotations="//@annotations.49">
972 <value xsi:type="language_1:Forall">
973 <quantifiedVariables name="p0">
974 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
975 </quantifiedVariables>
976 <expression xsi:type="language_1:Not">
977 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25">
978 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.0"/>
979 </operand>
980 </expression>
981 </value>
982 </assertions>
983 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink" annotations="//@annotations.50">
984 <value xsi:type="language_1:Forall">
985 <quantifiedVariables name="p0">
986 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
987 </quantifiedVariables>
988 <expression xsi:type="language_1:Not">
989 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26">
990 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.0"/>
991 </operand>
992 </expression>
993 </value>
994 </assertions>
995 <assertions name="errorpattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna" annotations="//@annotations.51">
996 <value xsi:type="language_1:Forall">
997 <quantifiedVariables name="p0">
998 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
999 </quantifiedVariables>
1000 <expression xsi:type="language_1:Not">
1001 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29">
1002 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.0"/>
1003 </operand>
1004 </expression>
1005 </value>
1006 </assertions>
1007 <relations xsi:type="language_1:RelationDeclaration" name="groundStationNetwork reference ConstellationMission">
1008 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1009 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1010 </relations>
1011 <relations xsi:type="language_1:RelationDeclaration" name="spacecraft reference ConstellationMission">
1012 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1013 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1014 </relations>
1015 <relations xsi:type="language_1:RelationDeclaration" name="commSubsystem reference CommunicatingElement">
1016 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1017 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1018 </relations>
1019 <relations xsi:type="language_1:RelationDeclaration" name="communicationLink reference CommunicatingElement">
1020 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1021 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1022 </relations>
1023 <relations xsi:type="language_1:RelationDeclaration" name="payload reference Spacecraft">
1024 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1025 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1026 </relations>
1027 <relations xsi:type="language_1:RelationDeclaration" name="source reference DirectedCommunicationLink">
1028 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1029 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1030 </relations>
1031 <relations xsi:type="language_1:RelationDeclaration" name="target reference DirectedCommunicationLink">
1032 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1033 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1034 </relations>
1035 <relations xsi:type="language_1:RelationDeclaration" name="band attribute CommSubsystem">
1036 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1037 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1038 </relations>
1039 <relations xsi:type="language_1:RelationDeclaration" name="gain attribute CommSubsystem">
1040 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1041 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1042 </relations>
1043 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement" annotations="//@annotations.20">
1044 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1045 <variables name="parameter Link">
1046 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1047 </variables>
1048 <value xsi:type="language_1:Or">
1049 <operands xsi:type="language_1:Exists">
1050 <quantifiedVariables name="variable Element">
1051 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1052 </quantifiedVariables>
1053 <quantifiedVariables name="variable SourceComm">
1054 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1055 </quantifiedVariables>
1056 <quantifiedVariables name="variable SourceElement">
1057 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1058 </quantifiedVariables>
1059 <expression xsi:type="language_1:And">
1060 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
1061 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.0"/>
1062 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@variables.0"/>
1063 </operands>
1064 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1065 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@variables.0"/>
1066 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.1"/>
1067 </operands>
1068 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1069 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.2"/>
1070 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.1"/>
1071 </operands>
1072 <operands xsi:type="language_1:InstanceOf">
1073 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.1"/>
1074 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1075 </operands>
1076 <operands xsi:type="language_1:Distinct">
1077 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.0"/>
1078 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.9/@value/@operands.0/@quantifiedVariables.2"/>
1079 </operands>
1080 </expression>
1081 </operands>
1082 </value>
1083 </relations>
1084 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads" annotations="//@annotations.21">
1085 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1086 <variables name="parameter Mission">
1087 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1088 </variables>
1089 <value xsi:type="language_1:Or">
1090 <operands xsi:type="language_1:And">
1091 <operands xsi:type="language_1:InstanceOf">
1092 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@variables.0"/>
1093 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1094 </operands>
1095 <operands xsi:type="language_1:Not">
1096 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11">
1097 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.10/@variables.0"/>
1098 </operand>
1099 </operands>
1100 </operands>
1101 </value>
1102 </relations>
1103 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries atLeastTwoInterferometryPayloads" annotations="//@annotations.22">
1104 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1105 <variables name="parameter Mission">
1106 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1107 </variables>
1108 <value xsi:type="language_1:Or">
1109 <operands xsi:type="language_1:Exists">
1110 <quantifiedVariables name="variable Spacecraft1">
1111 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1112 </quantifiedVariables>
1113 <quantifiedVariables name="variable Spacecraft2">
1114 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1115 </quantifiedVariables>
1116 <expression xsi:type="language_1:And">
1117 <operands xsi:type="language_1:InstanceOf">
1118 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@variables.0"/>
1119 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1120 </operands>
1121 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12">
1122 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@variables.0"/>
1123 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@value/@operands.0/@quantifiedVariables.0"/>
1124 </operands>
1125 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12">
1126 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@variables.0"/>
1127 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@value/@operands.0/@quantifiedVariables.1"/>
1128 </operands>
1129 <operands xsi:type="language_1:Distinct">
1130 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@value/@operands.0/@quantifiedVariables.0"/>
1131 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11/@value/@operands.0/@quantifiedVariables.1"/>
1132 </operands>
1133 </expression>
1134 </operands>
1135 </value>
1136 </relations>
1137 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries spacecraftWithInterferometryPayload" annotations="//@annotations.23">
1138 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1139 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1140 <variables name="parameter Mission">
1141 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1142 </variables>
1143 <variables name="parameter Spacecraft">
1144 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1145 </variables>
1146 <value xsi:type="language_1:Or">
1147 <operands xsi:type="language_1:Exists">
1148 <quantifiedVariables name="variable Payload">
1149 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1150 </quantifiedVariables>
1151 <expression xsi:type="language_1:And">
1152 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
1153 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.0"/>
1154 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.1"/>
1155 </operands>
1156 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
1157 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@variables.1"/>
1158 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.0"/>
1159 </operands>
1160 <operands xsi:type="language_1:InstanceOf">
1161 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12/@value/@operands.0/@quantifiedVariables.0"/>
1162 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1163 </operands>
1164 </expression>
1165 </operands>
1166 </value>
1167 </relations>
1168 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation" annotations="//@annotations.24">
1169 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1170 <variables name="parameter Spacecraft">
1171 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1172 </variables>
1173 <value xsi:type="language_1:Or">
1174 <operands xsi:type="language_1:Exists">
1175 <quantifiedVariables name="variable Mission">
1176 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1177 </quantifiedVariables>
1178 <quantifiedVariables name="variable GroundStation">
1179 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1180 </quantifiedVariables>
1181 <expression xsi:type="language_1:And">
1182 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
1183 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.0"/>
1184 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.1"/>
1185 </operands>
1186 <operands xsi:type="language_1:InstanceOf">
1187 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.1"/>
1188 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1189 </operands>
1190 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
1191 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.0"/>
1192 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.0"/>
1193 </operands>
1194 <operands xsi:type="language_1:InstanceOf">
1195 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.0"/>
1196 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1197 </operands>
1198 <operands xsi:type="language_1:Not">
1199 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
1200 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@variables.0"/>
1201 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.13/@value/@operands.0/@quantifiedVariables.1"/>
1202 </operand>
1203 </operands>
1204 </expression>
1205 </operands>
1206 </value>
1207 </relations>
1208 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries communicationLoop" annotations="//@annotations.25">
1209 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1210 <variables name="parameter Element">
1211 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1212 </variables>
1213 <value xsi:type="language_1:Or">
1214 <operands xsi:type="language_1:And">
1215 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
1216 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@variables.0"/>
1217 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.14/@variables.0"/>
1218 </operands>
1219 </operands>
1220 </value>
1221 </relations>
1222 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries indirectCommunicationLink" annotations="//@annotations.26">
1223 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1224 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1225 <variables name="parameter Source">
1226 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1227 </variables>
1228 <variables name="parameter Target">
1229 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1230 </variables>
1231 <value xsi:type="language_1:Or">
1232 <operands xsi:type="language_1:And">
1233 <operands xsi:type="language_1:TransitiveClosure" relation="//@relations.16"/>
1234 </operands>
1235 </value>
1236 </relations>
1237 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries directCommunicationLink" annotations="//@annotations.27">
1238 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1239 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1240 <variables name="parameter Source">
1241 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1242 </variables>
1243 <variables name="parameter Target">
1244 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1245 </variables>
1246 <value xsi:type="language_1:Or">
1247 <operands xsi:type="language_1:Exists">
1248 <quantifiedVariables name="variable Link">
1249 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1250 </quantifiedVariables>
1251 <quantifiedVariables name="variable SourceSubsystem">
1252 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1253 </quantifiedVariables>
1254 <quantifiedVariables name="variable TargetSubsystem">
1255 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1256 </quantifiedVariables>
1257 <expression xsi:type="language_1:And">
1258 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1259 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.0"/>
1260 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.1"/>
1261 </operands>
1262 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1263 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.0"/>
1264 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.2"/>
1265 </operands>
1266 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1267 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@variables.0"/>
1268 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.1"/>
1269 </operands>
1270 <operands xsi:type="language_1:InstanceOf">
1271 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.1"/>
1272 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1273 </operands>
1274 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1275 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@variables.1"/>
1276 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.2"/>
1277 </operands>
1278 <operands xsi:type="language_1:InstanceOf">
1279 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16/@value/@operands.0/@quantifiedVariables.2"/>
1280 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1281 </operands>
1282 </expression>
1283 </operands>
1284 </value>
1285 </relations>
1286 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand" annotations="//@annotations.28">
1287 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1288 <variables name="parameter Link">
1289 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1290 </variables>
1291 <value xsi:type="language_1:Or">
1292 <operands xsi:type="language_1:Exists">
1293 <quantifiedVariables name="variable SourceSubsystem">
1294 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1295 </quantifiedVariables>
1296 <quantifiedVariables name="variable TargetSubsystem">
1297 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1298 </quantifiedVariables>
1299 <quantifiedVariables name="variable Band">
1300 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1301 </quantifiedVariables>
1302 <expression xsi:type="language_1:And">
1303 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1304 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1305 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.0"/>
1306 </operands>
1307 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1308 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@variables.0"/>
1309 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.1"/>
1310 </operands>
1311 <operands xsi:type="language_1:InstanceOf">
1312 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.1"/>
1313 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1314 </operands>
1315 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1316 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.0"/>
1317 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.2"/>
1318 </operands>
1319 <operands xsi:type="language_1:Not">
1320 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18">
1321 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.1"/>
1322 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.17/@value/@operands.0/@quantifiedVariables.2"/>
1323 </operand>
1324 </operands>
1325 </expression>
1326 </operands>
1327 </value>
1328 </relations>
1329 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBand" annotations="//@annotations.29">
1330 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1331 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1332 <variables name="parameter Comm">
1333 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1334 </variables>
1335 <variables name="parameter Band">
1336 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1337 </variables>
1338 <value xsi:type="language_1:Or">
1339 <operands xsi:type="language_1:And">
1340 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1341 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.0"/>
1342 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.18/@variables.1"/>
1343 </operands>
1344 </operands>
1345 </value>
1346 </relations>
1347 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetGain" annotations="//@annotations.30">
1348 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1349 <variables name="parameter Link">
1350 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1351 </variables>
1352 <value xsi:type="language_1:Or">
1353 <operands xsi:type="language_1:Exists">
1354 <quantifiedVariables name="variable SourceSubsystem">
1355 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1356 </quantifiedVariables>
1357 <quantifiedVariables name="variable TargetSubsystem">
1358 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1359 </quantifiedVariables>
1360 <quantifiedVariables name="variable Gain">
1361 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1362 </quantifiedVariables>
1363 <expression xsi:type="language_1:And">
1364 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1365 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@variables.0"/>
1366 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.0"/>
1367 </operands>
1368 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1369 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@variables.0"/>
1370 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.1"/>
1371 </operands>
1372 <operands xsi:type="language_1:InstanceOf">
1373 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.1"/>
1374 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1375 </operands>
1376 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1377 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.0"/>
1378 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.2"/>
1379 </operands>
1380 <operands xsi:type="language_1:Not">
1381 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20">
1382 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.1"/>
1383 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19/@value/@operands.0/@quantifiedVariables.2"/>
1384 </operand>
1385 </operands>
1386 </expression>
1387 </operands>
1388 </value>
1389 </relations>
1390 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGain" annotations="//@annotations.31">
1391 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1392 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1393 <variables name="parameter Comm">
1394 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1395 </variables>
1396 <variables name="parameter Gain">
1397 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1398 </variables>
1399 <value xsi:type="language_1:Or">
1400 <operands xsi:type="language_1:And">
1401 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1402 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20/@variables.0"/>
1403 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.20/@variables.1"/>
1404 </operands>
1405 </operands>
1406 </value>
1407 </relations>
1408 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries uhfAntennaGainNotLow" annotations="//@annotations.32">
1409 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1410 <variables name="parameter Comm">
1411 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1412 </variables>
1413 <value xsi:type="language_1:Or">
1414 <operands xsi:type="language_1:Exists">
1415 <quantifiedVariables name="variable virtual0">
1416 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1417 </quantifiedVariables>
1418 <expression xsi:type="language_1:And">
1419 <operands xsi:type="language_1:Equals">
1420 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21/@value/@operands.0/@quantifiedVariables.0"/>
1421 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1422 </operands>
1423 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1424 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21/@variables.0"/>
1425 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21/@value/@operands.0/@quantifiedVariables.0"/>
1426 </operands>
1427 <operands xsi:type="language_1:Not">
1428 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22">
1429 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21/@variables.0"/>
1430 </operand>
1431 </operands>
1432 </expression>
1433 </operands>
1434 </value>
1435 </relations>
1436 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainLow" annotations="//@annotations.33">
1437 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1438 <variables name="parameter Comm">
1439 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1440 </variables>
1441 <value xsi:type="language_1:Or">
1442 <operands xsi:type="language_1:Exists">
1443 <quantifiedVariables name="variable virtual0">
1444 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1445 </quantifiedVariables>
1446 <expression xsi:type="language_1:And">
1447 <operands xsi:type="language_1:Equals">
1448 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.0"/>
1449 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.3"/>
1450 </operands>
1451 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1452 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@variables.0"/>
1453 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22/@value/@operands.0/@quantifiedVariables.0"/>
1454 </operands>
1455 </expression>
1456 </operands>
1457 </value>
1458 </relations>
1459 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries xAntennaGainNotMedium" annotations="//@annotations.34">
1460 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1461 <variables name="parameter Comm">
1462 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1463 </variables>
1464 <value xsi:type="language_1:Or">
1465 <operands xsi:type="language_1:Exists">
1466 <quantifiedVariables name="variable virtual0">
1467 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1468 </quantifiedVariables>
1469 <expression xsi:type="language_1:And">
1470 <operands xsi:type="language_1:Equals">
1471 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.0"/>
1472 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.1"/>
1473 </operands>
1474 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1475 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@variables.0"/>
1476 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@value/@operands.0/@quantifiedVariables.0"/>
1477 </operands>
1478 <operands xsi:type="language_1:Not">
1479 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24">
1480 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23/@variables.0"/>
1481 </operand>
1482 </operands>
1483 </expression>
1484 </operands>
1485 </value>
1486 </relations>
1487 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemGainMedium" annotations="//@annotations.35">
1488 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1489 <variables name="parameter Comm">
1490 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1491 </variables>
1492 <value xsi:type="language_1:Or">
1493 <operands xsi:type="language_1:Exists">
1494 <quantifiedVariables name="variable virtual0">
1495 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1496 </quantifiedVariables>
1497 <expression xsi:type="language_1:And">
1498 <operands xsi:type="language_1:Equals">
1499 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24/@value/@operands.0/@quantifiedVariables.0"/>
1500 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.4"/>
1501 </operands>
1502 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1503 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24/@variables.0"/>
1504 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24/@value/@operands.0/@quantifiedVariables.0"/>
1505 </operands>
1506 </expression>
1507 </operands>
1508 </value>
1509 </relations>
1510 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries kaAntennaGainLow" annotations="//@annotations.36">
1511 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1512 <variables name="parameter Comm">
1513 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1514 </variables>
1515 <value xsi:type="language_1:Or">
1516 <operands xsi:type="language_1:Exists">
1517 <quantifiedVariables name="variable virtual0">
1518 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1519 </quantifiedVariables>
1520 <quantifiedVariables name="variable virtual2">
1521 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1522 </quantifiedVariables>
1523 <expression xsi:type="language_1:And">
1524 <operands xsi:type="language_1:Equals">
1525 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.0"/>
1526 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
1527 </operands>
1528 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1529 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@variables.0"/>
1530 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.0"/>
1531 </operands>
1532 <operands xsi:type="language_1:Equals">
1533 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.1"/>
1534 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.3"/>
1535 </operands>
1536 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
1537 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@variables.0"/>
1538 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.25/@value/@operands.0/@quantifiedVariables.1"/>
1539 </operands>
1540 </expression>
1541 </operands>
1542 </value>
1543 </relations>
1544 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink" annotations="//@annotations.37">
1545 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1546 <variables name="parameter Sat">
1547 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1548 </variables>
1549 <value xsi:type="language_1:Or">
1550 <operands xsi:type="language_1:Exists">
1551 <quantifiedVariables name="variable SourceComm">
1552 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1553 </quantifiedVariables>
1554 <quantifiedVariables name="variable Link">
1555 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1556 </quantifiedVariables>
1557 <quantifiedVariables name="variable TargetComm">
1558 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1559 </quantifiedVariables>
1560 <quantifiedVariables name="variable Target">
1561 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1562 </quantifiedVariables>
1563 <expression xsi:type="language_1:And">
1564 <operands xsi:type="language_1:InstanceOf">
1565 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@variables.0"/>
1566 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1567 </operands>
1568 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1569 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@variables.0"/>
1570 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.0"/>
1571 </operands>
1572 <operands xsi:type="language_1:Not">
1573 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27">
1574 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.0"/>
1575 </operand>
1576 </operands>
1577 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
1578 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.1"/>
1579 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.0"/>
1580 </operands>
1581 <operands xsi:type="language_1:InstanceOf">
1582 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.0"/>
1583 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1584 </operands>
1585 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
1586 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.1"/>
1587 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.2"/>
1588 </operands>
1589 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1590 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.3"/>
1591 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.2"/>
1592 </operands>
1593 <operands xsi:type="language_1:InstanceOf">
1594 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.2"/>
1595 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1596 </operands>
1597 <operands xsi:type="language_1:Not">
1598 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28">
1599 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26/@value/@operands.0/@quantifiedVariables.3"/>
1600 </operand>
1601 </operands>
1602 </expression>
1603 </operands>
1604 </value>
1605 </relations>
1606 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBandUhf" annotations="//@annotations.38">
1607 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1608 <variables name="parameter Comm">
1609 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1610 </variables>
1611 <value xsi:type="language_1:Or">
1612 <operands xsi:type="language_1:Exists">
1613 <quantifiedVariables name="variable virtual0">
1614 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1615 </quantifiedVariables>
1616 <expression xsi:type="language_1:And">
1617 <operands xsi:type="language_1:Equals">
1618 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@value/@operands.0/@quantifiedVariables.0"/>
1619 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1620 </operands>
1621 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1622 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@variables.0"/>
1623 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.27/@value/@operands.0/@quantifiedVariables.0"/>
1624 </operands>
1625 </expression>
1626 </operands>
1627 </value>
1628 </relations>
1629 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries groundStationNetwork" annotations="//@annotations.39">
1630 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1631 <variables name="parameter Network">
1632 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1633 </variables>
1634 <value xsi:type="language_1:Or">
1635 <operands xsi:type="language_1:And">
1636 <operands xsi:type="language_1:InstanceOf">
1637 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.28/@variables.0"/>
1638 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1639 </operands>
1640 </operands>
1641 </value>
1642 </relations>
1643 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna" annotations="//@annotations.40">
1644 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1645 <variables name="parameter Spacecraft">
1646 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1647 </variables>
1648 <value xsi:type="language_1:Or">
1649 <operands xsi:type="language_1:Exists">
1650 <quantifiedVariables name="variable virtual0">
1651 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1652 </quantifiedVariables>
1653 <quantifiedVariables name="variable virtual1">
1654 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1655 </quantifiedVariables>
1656 <expression xsi:type="language_1:And">
1657 <operands xsi:type="language_1:InstanceOf">
1658 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@variables.0"/>
1659 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1660 </operands>
1661 <operands xsi:type="language_1:Equals">
1662 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.0"/>
1663 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.2"/>
1664 </operands>
1665 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
1666 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@variables.0"/>
1667 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.1"/>
1668 </operands>
1669 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
1670 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.1"/>
1671 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@value/@operands.0/@quantifiedVariables.0"/>
1672 </operands>
1673 <operands xsi:type="language_1:Not">
1674 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30">
1675 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29/@variables.0"/>
1676 </operand>
1677 </operands>
1678 </expression>
1679 </operands>
1680 </value>
1681 </relations>
1682 <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains satellite queries smallSat" annotations="//@annotations.41">
1683 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1684 <variables name="parameter Sat">
1685 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1686 </variables>
1687 <value xsi:type="language_1:Or">
1688 <operands xsi:type="language_1:And">
1689 <operands xsi:type="language_1:InstanceOf">
1690 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30/@variables.0"/>
1691 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1692 </operands>
1693 </operands>
1694 </value>
1695 </relations>
1696 <elements name="UHF literal TransceiverBand" definedInType="//@types.12"/>
1697 <elements name="X literal TransceiverBand" definedInType="//@types.12"/>
1698 <elements name="Ka literal TransceiverBand" definedInType="//@types.12"/>
1699 <elements name="LOW literal AntennaGain" definedInType="//@types.13"/>
1700 <elements name="MEDIUM literal AntennaGain" definedInType="//@types.13"/>
1701 <elements name="HIGH literal AntennaGain" definedInType="//@types.13"/>
1702 <elements name="o 1" definedInType="//@types.14 //@types.16"/>
1703 <elements name="o 2" definedInType="//@types.18 //@types.20"/>
1704 <elements name="o 3" definedInType="//@types.22"/>
1705 <elements name="o 4" definedInType="//@types.22"/>
1706 <containmentHierarchies typesOrderedInHierarchy="//@types.2 //@types.0 //@types.1 //@types.9 //@types.7 //@types.10 //@types.3 //@types.6 //@types.8 //@types.11 //@types.5 //@types.4 //@types.14 //@types.15 //@types.16 //@types.17 //@types.18 //@types.19 //@types.20 //@types.21 //@types.22 //@types.23" containmentRelations="//@relations.0 //@relations.1 //@relations.2 //@relations.3 //@relations.4"/>
1707 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" lower="1"/>
1708 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.0" upper="1"/>
1709 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" lower="2"/>
1710 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.3" relation="//@relations.1" upper="50"/>
1711 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.4" relation="//@relations.2" lower="1"/>
1712 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.5" relation="//@relations.2" upper="2"/>
1713 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.6" relation="//@relations.3" upper="1"/>
1714 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.7" relation="//@relations.4" upper="1"/>
1715 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.8" relation="//@relations.5" lower="1"/>
1716 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.9" relation="//@relations.5" upper="1"/>
1717 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.10" relation="//@relations.6" lower="1"/>
1718 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.11" relation="//@relations.6" upper="1"/>
1719 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.12" relation="//@relations.7" lower="1"/>
1720 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.13" relation="//@relations.7" upper="1"/>
1721 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.14" relation="//@relations.8" lower="1"/>
1722 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.15" relation="//@relations.8" upper="1"/>
1723 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.16" targetRelation="//@relations.0"/>
1724 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.17" targetRelation="//@relations.2"/>
1725 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.18" targetRelation="//@relations.7"/>
1726 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.19" targetRelation="//@relations.8"/>
1727 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.9" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement"/>
1728 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.10" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads"/>
1729 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.11" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.atLeastTwoInterferometryPayloads"/>
1730 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.12" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftWithInterferometryPayload"/>
1731 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.13" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation"/>
1732 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.14" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop"/>
1733 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.15" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.indirectCommunicationLink"/>
1734 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.16" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.directCommunicationLink"/>
1735 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.17" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand"/>
1736 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.18" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBand"/>
1737 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.19" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain"/>
1738 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.20" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGain"/>
1739 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.21" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow"/>
1740 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.22" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainLow"/>
1741 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.23" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium"/>
1742 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.24" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemGainMedium"/>
1743 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.25" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow"/>
1744 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.26" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink"/>
1745 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.27" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.commSubsystemBandUhf"/>
1746 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.28" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.groundStationNetwork"/>
1747 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.29" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna"/>
1748 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.30" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.smallSat"/>
1749 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.20" query="//@annotations.20"/>
1750 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.21" query="//@annotations.24"/>
1751 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.22" query="//@annotations.25"/>
1752 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.23" query="//@annotations.28"/>
1753 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.24" query="//@annotations.30"/>
1754 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.25" query="//@annotations.32"/>
1755 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.26" query="//@annotations.34"/>
1756 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.27" query="//@annotations.36"/>
1757 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.28" query="//@annotations.37"/>
1758 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.29" query="//@annotations.40"/>
1759</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..e458c179
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/debug/init.partialmodel
@@ -0,0 +1,161 @@
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="5" maxNewElements="10">
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.6"/>
8 <param2 href="outputs/debug/generation.logicproblem#//@elements.7"/>
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.7"/>
22 <param2 href="outputs/debug/generation.logicproblem#//@elements.8"/>
23 </relationlinks>
24 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
25 <param1 href="outputs/debug/generation.logicproblem#//@elements.7"/>
26 <param2 href="outputs/debug/generation.logicproblem#//@elements.9"/>
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 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
54 <param1 href="outputs/debug/generation.logicproblem#//@elements.8"/>
55 <param2 href="outputs/debug/generation.logicproblem#//@elements.1"/>
56 </relationlinks>
57 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
58 <param1 href="outputs/debug/generation.logicproblem#//@elements.9"/>
59 <param2 href="outputs/debug/generation.logicproblem#//@elements.2"/>
60 </relationlinks>
61 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.7/@parameters.0"/>
62 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.7/@parameters.1"/>
63 </partialrelationinterpretation>
64 <partialrelationinterpretation>
65 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.8"/>
66 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
67 <param1 href="outputs/debug/generation.logicproblem#//@elements.8"/>
68 <param2 href="outputs/debug/generation.logicproblem#//@elements.4"/>
69 </relationlinks>
70 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink">
71 <param1 href="outputs/debug/generation.logicproblem#//@elements.9"/>
72 <param2 href="outputs/debug/generation.logicproblem#//@elements.5"/>
73 </relationlinks>
74 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.8/@parameters.0"/>
75 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.8/@parameters.1"/>
76 </partialrelationinterpretation>
77 <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/>
78 <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/>
79 <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/>
80 <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@openWorldElements.0"/>
81 <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.1"/>
82 <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@openWorldElements.2"/>
83 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0">
84 <elements href="outputs/debug/generation.logicproblem#//@elements.6"/>
85 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.0"/>
86 </partialtypeinterpratation>
87 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1" supertypeInterpretation="//@partialtypeinterpratation.4">
88 <elements href="outputs/debug/generation.logicproblem#//@elements.6"/>
89 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.1"/>
90 </partialtypeinterpratation>
91 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2">
92 <elements href="outputs/debug/generation.logicproblem#//@elements.7"/>
93 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.2"/>
94 </partialtypeinterpratation>
95 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.3" supertypeInterpretation="//@partialtypeinterpratation.6">
96 <elements href="outputs/debug/generation.logicproblem#//@elements.7"/>
97 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.3"/>
98 </partialtypeinterpratation>
99 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.4" supertypeInterpretation="//@partialtypeinterpratation.6 //@partialtypeinterpratation.18">
100 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.4"/>
101 </partialtypeinterpratation>
102 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.5" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.18">
103 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.5"/>
104 </partialtypeinterpratation>
105 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.6" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.18">
106 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.6"/>
107 </partialtypeinterpratation>
108 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.7" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.6 //@partialtypeinterpratation.18">
109 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.7"/>
110 </partialtypeinterpratation>
111 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8">
112 <elements href="outputs/debug/generation.logicproblem#//@elements.8"/>
113 <elements href="outputs/debug/generation.logicproblem#//@elements.9"/>
114 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.8"/>
115 </partialtypeinterpratation>
116 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.9">
117 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.9"/>
118 </partialtypeinterpratation>
119 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.10">
120 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.10"/>
121 </partialtypeinterpratation>
122 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.11" supertypeInterpretation="//@partialtypeinterpratation.14">
123 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.11"/>
124 </partialtypeinterpratation>
125 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.12" supertypeInterpretation="//@partialtypeinterpratation.4">
126 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.15"/>
127 </partialtypeinterpratation>
128 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.13" supertypeInterpretation="//@partialtypeinterpratation.5 //@partialtypeinterpratation.4 //@partialtypeinterpratation.16">
129 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.17"/>
130 </partialtypeinterpratation>
131 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.14" supertypeInterpretation="//@partialtypeinterpratation.6">
132 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.19"/>
133 </partialtypeinterpratation>
134 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.15" supertypeInterpretation="//@partialtypeinterpratation.7 //@partialtypeinterpratation.6 //@partialtypeinterpratation.18">
135 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.21"/>
136 </partialtypeinterpratation>
137 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.16" supertypeInterpretation="//@partialtypeinterpratation.12">
138 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.23"/>
139 </partialtypeinterpratation>
140 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/>
141 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
142 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
143 <openWorldElements name="New Objects"/>
144 <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/>
145 <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/>
146 <scopes targetTypeInterpretation="//@partialtypeinterpratation.6"/>
147 <scopes targetTypeInterpretation="//@partialtypeinterpratation.7"/>
148 <scopes targetTypeInterpretation="//@partialtypeinterpratation.8"/>
149 <scopes targetTypeInterpretation="//@partialtypeinterpratation.9"/>
150 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/>
151 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/>
152 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/>
153 <scopes targetTypeInterpretation="//@partialtypeinterpratation.13"/>
154 <scopes targetTypeInterpretation="//@partialtypeinterpratation.14"/>
155 <scopes targetTypeInterpretation="//@partialtypeinterpratation.15"/>
156 <scopes targetTypeInterpretation="//@partialtypeinterpratation.16"/>
157 <scopes targetTypeInterpretation="//@partialtypeinterpratation.17"/>
158 <scopes targetTypeInterpretation="//@partialtypeinterpratation.18"/>
159 <scopes targetTypeInterpretation="//@partialtypeinterpratation.19"/>
160 <scopes targetTypeInterpretation="//@partialtypeinterpratation.20"/>
161</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..67589bd9
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/log.txt
@@ -0,0 +1 @@
Model generation finished
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..b8da662f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/1.gml
@@ -0,0 +1,1517 @@
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 315.70000000000005
225 h 82
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "o 1"
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 ConstellationMission class DefinedPart
246 InterferometryMission class DefinedPart
247 ConstellationMission class
248 InterferometryMission class
249 "
250 fontSize 14
251 fontName "Consolas"
252 alignment "left"
253 anchor "tl"
254 borderDistance 6
255 ]
256 ]
257
258 node
259 [
260 id 7
261 graphics
262 [
263 w 308.0
264 h 82
265 type "rectangle"
266 fill "#FFFFFF"
267 fill2 "#FFFFFF"
268 outline "#000000"
269 ]
270 LabelGraphics
271 [
272 text "o 2"
273 outline "#000000"
274 fill "#FFFFFF"
275 fontSize 16
276 fontName "Monospace"
277 autoSizePolicy "node_width"
278 anchor "t"
279 borderDistance 0.0
280 ]
281 LabelGraphics
282 [
283 text "
284 CommunicatingElement class DefinedPart
285 GroundStationNetwork class DefinedPart
286 CommunicatingElement class
287 GroundStationNetwork class
288 "
289 fontSize 14
290 fontName "Consolas"
291 alignment "left"
292 anchor "tl"
293 borderDistance 6
294 ]
295 ]
296
297 node
298 [
299 id 8
300 graphics
301 [
302 w 254.10000000000002
303 h 54
304 type "rectangle"
305 fill "#FFFFFF"
306 fill2 "#FFFFFF"
307 outline "#000000"
308 ]
309 LabelGraphics
310 [
311 text "o 3"
312 outline "#000000"
313 fill "#FFFFFF"
314 fontSize 16
315 fontName "Monospace"
316 autoSizePolicy "node_width"
317 anchor "t"
318 borderDistance 0.0
319 ]
320 LabelGraphics
321 [
322 text "
323 CommSubsystem class DefinedPart
324 CommSubsystem class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 254.10000000000002
340 h 54
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "o 4"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 CommSubsystem class DefinedPart
361 CommSubsystem class
362 "
363 fontSize 14
364 fontName "Consolas"
365 alignment "left"
366 anchor "tl"
367 borderDistance 6
368 ]
369 ]
370
371 node
372 [
373 id 10
374 graphics
375 [
376 w 41.800000000000004
377 h 26
378 type "rectangle"
379 fill "#FFFFFF"
380 fill2 "#FFFFFF"
381 outline "#000000"
382 ]
383 LabelGraphics
384 [
385 text "true"
386 outline "#000000"
387 fill "#FFFFFF"
388 fontSize 16
389 fontName "Monospace"
390 autoSizePolicy "node_width"
391 anchor "t"
392 borderDistance 0.0
393 ]
394 LabelGraphics
395 [
396 text "
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 50.6
412 h 26
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "false"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 "
433 fontSize 14
434 fontName "Consolas"
435 alignment "left"
436 anchor "tl"
437 borderDistance 6
438 ]
439 ]
440
441 node
442 [
443 id 12
444 graphics
445 [
446 w 323.40000000000003
447 h 82
448 type "rectangle"
449 fill "#FFFFFF"
450 fill2 "#FFFFFF"
451 outline "#000000"
452 ]
453 LabelGraphics
454 [
455 text "null"
456 outline "#000000"
457 fill "#FFFFFF"
458 fontSize 16
459 fontName "Monospace"
460 autoSizePolicy "node_width"
461 anchor "t"
462 borderDistance 0.0
463 ]
464 LabelGraphics
465 [
466 text "
467 CommunicatingElement class
468 Spacecraft class
469 CubeSat6U class
470 CommunicatingElement class UndefinedPart
471 "
472 fontSize 14
473 fontName "Consolas"
474 alignment "left"
475 anchor "tl"
476 borderDistance 6
477 ]
478 ]
479
480 node
481 [
482 id 13
483 graphics
484 [
485 w 223.3
486 h 54
487 type "rectangle"
488 fill "#FFFFFF"
489 fill2 "#FFFFFF"
490 outline "#000000"
491 ]
492 LabelGraphics
493 [
494 text "null"
495 outline "#000000"
496 fill "#FFFFFF"
497 fontSize 16
498 fontName "Monospace"
499 autoSizePolicy "node_width"
500 anchor "t"
501 borderDistance 0.0
502 ]
503 LabelGraphics
504 [
505 text "
506 Payload class
507 InterferometryPayload class
508 "
509 fontSize 14
510 fontName "Consolas"
511 alignment "left"
512 anchor "tl"
513 borderDistance 6
514 ]
515 ]
516
517 node
518 [
519 id 14
520 graphics
521 [
522 w 269.5
523 h 54
524 type "rectangle"
525 fill "#FFFFFF"
526 fill2 "#FFFFFF"
527 outline "#000000"
528 ]
529 LabelGraphics
530 [
531 text "null"
532 outline "#000000"
533 fill "#FFFFFF"
534 fontSize 16
535 fontName "Monospace"
536 autoSizePolicy "node_width"
537 anchor "t"
538 borderDistance 0.0
539 ]
540 LabelGraphics
541 [
542 text "
543 CommSubsystem class
544 CommSubsystem class UndefinedPart
545 "
546 fontSize 14
547 fontName "Consolas"
548 alignment "left"
549 anchor "tl"
550 borderDistance 6
551 ]
552 ]
553
554 node
555 [
556 id 15
557 graphics
558 [
559 w 323.40000000000003
560 h 82
561 type "rectangle"
562 fill "#FFFFFF"
563 fill2 "#FFFFFF"
564 outline "#000000"
565 ]
566 LabelGraphics
567 [
568 text "null"
569 outline "#000000"
570 fill "#FFFFFF"
571 fontSize 16
572 fontName "Monospace"
573 autoSizePolicy "node_width"
574 anchor "t"
575 borderDistance 0.0
576 ]
577 LabelGraphics
578 [
579 text "
580 CommunicatingElement class
581 Spacecraft class
582 SmallSat class
583 CommunicatingElement class UndefinedPart
584 "
585 fontSize 14
586 fontName "Consolas"
587 alignment "left"
588 anchor "tl"
589 borderDistance 6
590 ]
591 ]
592
593 node
594 [
595 id 16
596 graphics
597 [
598 w 223.3
599 h 54
600 type "rectangle"
601 fill "#FFFFFF"
602 fill2 "#FFFFFF"
603 outline "#000000"
604 ]
605 LabelGraphics
606 [
607 text "null"
608 outline "#000000"
609 fill "#FFFFFF"
610 fontSize 16
611 fontName "Monospace"
612 autoSizePolicy "node_width"
613 anchor "t"
614 borderDistance 0.0
615 ]
616 LabelGraphics
617 [
618 text "
619 Payload class
620 InterferometryPayload class
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629
630 node
631 [
632 id 17
633 graphics
634 [
635 w 269.5
636 h 54
637 type "rectangle"
638 fill "#FFFFFF"
639 fill2 "#FFFFFF"
640 outline "#000000"
641 ]
642 LabelGraphics
643 [
644 text "null"
645 outline "#000000"
646 fill "#FFFFFF"
647 fontSize 16
648 fontName "Monospace"
649 autoSizePolicy "node_width"
650 anchor "t"
651 borderDistance 0.0
652 ]
653 LabelGraphics
654 [
655 text "
656 CommSubsystem class
657 CommSubsystem class UndefinedPart
658 "
659 fontSize 14
660 fontName "Consolas"
661 alignment "left"
662 anchor "tl"
663 borderDistance 6
664 ]
665 ]
666
667 node
668 [
669 id 18
670 graphics
671 [
672 w 269.5
673 h 54
674 type "rectangle"
675 fill "#FFFFFF"
676 fill2 "#FFFFFF"
677 outline "#000000"
678 ]
679 LabelGraphics
680 [
681 text "null"
682 outline "#000000"
683 fill "#FFFFFF"
684 fontSize 16
685 fontName "Monospace"
686 autoSizePolicy "node_width"
687 anchor "t"
688 borderDistance 0.0
689 ]
690 LabelGraphics
691 [
692 text "
693 CommSubsystem class
694 CommSubsystem class UndefinedPart
695 "
696 fontSize 14
697 fontName "Consolas"
698 alignment "left"
699 anchor "tl"
700 borderDistance 6
701 ]
702 ]
703
704 node
705 [
706 id 19
707 graphics
708 [
709 w 254.10000000000002
710 h 40
711 type "rectangle"
712 fill "#FFFFFF"
713 fill2 "#FFFFFF"
714 outline "#000000"
715 ]
716 LabelGraphics
717 [
718 text "null"
719 outline "#000000"
720 fill "#FFFFFF"
721 fontSize 16
722 fontName "Monospace"
723 autoSizePolicy "node_width"
724 anchor "t"
725 borderDistance 0.0
726 ]
727 LabelGraphics
728 [
729 text "
730 DirectedCommunicationLink 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 112.2
819 h 26
820 type "rectangle"
821 fill "#FFFFFF"
822 fill2 "#FFFFFF"
823 outline "#000000"
824 ]
825 LabelGraphics
826 [
827 text "New Integers"
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 "
840 fontSize 14
841 fontName "Consolas"
842 alignment "left"
843 anchor "tl"
844 borderDistance 6
845 ]
846 ]
847
848 node
849 [
850 id 23
851 graphics
852 [
853 w 85.80000000000001
854 h 26
855 type "rectangle"
856 fill "#FFFFFF"
857 fill2 "#FFFFFF"
858 outline "#000000"
859 ]
860 LabelGraphics
861 [
862 text "New Reals"
863 outline "#000000"
864 fill "#FFFFFF"
865 fontSize 16
866 fontName "Monospace"
867 autoSizePolicy "node_width"
868 anchor "t"
869 borderDistance 0.0
870 ]
871 LabelGraphics
872 [
873 text "
874 "
875 fontSize 14
876 fontName "Consolas"
877 alignment "left"
878 anchor "tl"
879 borderDistance 6
880 ]
881 ]
882
883 node
884 [
885 id 24
886 graphics
887 [
888 w 103.4
889 h 26
890 type "rectangle"
891 fill "#FFFFFF"
892 fill2 "#FFFFFF"
893 outline "#000000"
894 ]
895 LabelGraphics
896 [
897 text "New Strings"
898 outline "#000000"
899 fill "#FFFFFF"
900 fontSize 16
901 fontName "Monospace"
902 autoSizePolicy "node_width"
903 anchor "t"
904 borderDistance 0.0
905 ]
906 LabelGraphics
907 [
908 text "
909 "
910 fontSize 14
911 fontName "Consolas"
912 alignment "left"
913 anchor "tl"
914 borderDistance 6
915 ]
916 ]
917
918 node
919 [
920 id 25
921 graphics
922 [
923 w 103.4
924 h 26
925 type "rectangle"
926 fill "#FFFFFF"
927 fill2 "#FFFFFF"
928 outline "#000000"
929 ]
930 LabelGraphics
931 [
932 text "New Objects"
933 outline "#000000"
934 fill "#FFFFFF"
935 fontSize 16
936 fontName "Monospace"
937 autoSizePolicy "node_width"
938 anchor "t"
939 borderDistance 0.0
940 ]
941 LabelGraphics
942 [
943 text "
944 "
945 fontSize 14
946 fontName "Consolas"
947 alignment "left"
948 anchor "tl"
949 borderDistance 6
950 ]
951 ]
952 edge
953 [
954 source 6
955 target 7
956 graphics
957 [
958 fill "#000000"
959 width 3
960 targetArrow "standard"
961 ]
962 LabelGraphics
963 [
964 text "groundStationNetwork reference ConstellationMission"
965 fontSize 14
966 fontName "Consolas"
967 configuration "AutoFlippingLabel"
968 model "six_pos"
969 position "thead"
970 ]
971 ]
972 edge
973 [
974 source 6
975 target 12
976 graphics
977 [
978 fill "#000000"
979 width 3
980 targetArrow "standard"
981 ]
982 LabelGraphics
983 [
984 text "spacecraft reference ConstellationMission"
985 fontSize 14
986 fontName "Consolas"
987 configuration "AutoFlippingLabel"
988 model "six_pos"
989 position "thead"
990 ]
991 ]
992 edge
993 [
994 source 6
995 target 15
996 graphics
997 [
998 fill "#000000"
999 width 3
1000 targetArrow "standard"
1001 ]
1002 LabelGraphics
1003 [
1004 text "spacecraft reference ConstellationMission"
1005 fontSize 14
1006 fontName "Consolas"
1007 configuration "AutoFlippingLabel"
1008 model "six_pos"
1009 position "thead"
1010 ]
1011 ]
1012 edge
1013 [
1014 source 7
1015 target 8
1016 graphics
1017 [
1018 fill "#000000"
1019 width 3
1020 targetArrow "standard"
1021 ]
1022 LabelGraphics
1023 [
1024 text "commSubsystem reference CommunicatingElement"
1025 fontSize 14
1026 fontName "Consolas"
1027 configuration "AutoFlippingLabel"
1028 model "six_pos"
1029 position "thead"
1030 ]
1031 ]
1032 edge
1033 [
1034 source 7
1035 target 9
1036 graphics
1037 [
1038 fill "#000000"
1039 width 3
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "commSubsystem reference CommunicatingElement"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 12
1055 target 14
1056 graphics
1057 [
1058 fill "#000000"
1059 width 3
1060 targetArrow "standard"
1061 ]
1062 LabelGraphics
1063 [
1064 text "commSubsystem reference CommunicatingElement"
1065 fontSize 14
1066 fontName "Consolas"
1067 configuration "AutoFlippingLabel"
1068 model "six_pos"
1069 position "thead"
1070 ]
1071 ]
1072 edge
1073 [
1074 source 15
1075 target 17
1076 graphics
1077 [
1078 fill "#000000"
1079 width 3
1080 targetArrow "standard"
1081 ]
1082 LabelGraphics
1083 [
1084 text "commSubsystem reference CommunicatingElement"
1085 fontSize 14
1086 fontName "Consolas"
1087 configuration "AutoFlippingLabel"
1088 model "six_pos"
1089 position "thead"
1090 ]
1091 ]
1092 edge
1093 [
1094 source 15
1095 target 18
1096 graphics
1097 [
1098 fill "#000000"
1099 width 3
1100 targetArrow "standard"
1101 ]
1102 LabelGraphics
1103 [
1104 text "commSubsystem reference CommunicatingElement"
1105 fontSize 14
1106 fontName "Consolas"
1107 configuration "AutoFlippingLabel"
1108 model "six_pos"
1109 position "thead"
1110 ]
1111 ]
1112 edge
1113 [
1114 source 12
1115 target 20
1116 graphics
1117 [
1118 fill "#000000"
1119 width 3
1120 targetArrow "standard"
1121 ]
1122 LabelGraphics
1123 [
1124 text "commSubsystem reference CommunicatingElement"
1125 fontSize 14
1126 fontName "Consolas"
1127 configuration "AutoFlippingLabel"
1128 model "six_pos"
1129 position "thead"
1130 ]
1131 ]
1132 edge
1133 [
1134 source 15
1135 target 19
1136 graphics
1137 [
1138 fill "#000000"
1139 width 3
1140 targetArrow "standard"
1141 ]
1142 LabelGraphics
1143 [
1144 text "communicationLink reference CommunicatingElement"
1145 fontSize 14
1146 fontName "Consolas"
1147 configuration "AutoFlippingLabel"
1148 model "six_pos"
1149 position "thead"
1150 ]
1151 ]
1152 edge
1153 [
1154 source 12
1155 target 21
1156 graphics
1157 [
1158 fill "#000000"
1159 width 3
1160 targetArrow "standard"
1161 ]
1162 LabelGraphics
1163 [
1164 text "communicationLink reference CommunicatingElement"
1165 fontSize 14
1166 fontName "Consolas"
1167 configuration "AutoFlippingLabel"
1168 model "six_pos"
1169 position "thead"
1170 ]
1171 ]
1172 edge
1173 [
1174 source 12
1175 target 13
1176 graphics
1177 [
1178 fill "#000000"
1179 width 3
1180 targetArrow "standard"
1181 ]
1182 LabelGraphics
1183 [
1184 text "payload reference Spacecraft"
1185 fontSize 14
1186 fontName "Consolas"
1187 configuration "AutoFlippingLabel"
1188 model "six_pos"
1189 position "thead"
1190 ]
1191 ]
1192 edge
1193 [
1194 source 15
1195 target 16
1196 graphics
1197 [
1198 fill "#000000"
1199 width 3
1200 targetArrow "standard"
1201 ]
1202 LabelGraphics
1203 [
1204 text "payload reference Spacecraft"
1205 fontSize 14
1206 fontName "Consolas"
1207 configuration "AutoFlippingLabel"
1208 model "six_pos"
1209 position "thead"
1210 ]
1211 ]
1212 edge
1213 [
1214 source 19
1215 target 18
1216 graphics
1217 [
1218 fill "#000000"
1219 targetArrow "standard"
1220 ]
1221 LabelGraphics
1222 [
1223 text "source reference DirectedCommunicationLink"
1224 fontSize 14
1225 fontName "Consolas"
1226 configuration "AutoFlippingLabel"
1227 model "six_pos"
1228 position "thead"
1229 ]
1230 ]
1231 edge
1232 [
1233 source 21
1234 target 20
1235 graphics
1236 [
1237 fill "#000000"
1238 targetArrow "standard"
1239 ]
1240 LabelGraphics
1241 [
1242 text "source reference DirectedCommunicationLink"
1243 fontSize 14
1244 fontName "Consolas"
1245 configuration "AutoFlippingLabel"
1246 model "six_pos"
1247 position "thead"
1248 ]
1249 ]
1250 edge
1251 [
1252 source 19
1253 target 8
1254 graphics
1255 [
1256 fill "#000000"
1257 targetArrow "standard"
1258 ]
1259 LabelGraphics
1260 [
1261 text "target reference DirectedCommunicationLink"
1262 fontSize 14
1263 fontName "Consolas"
1264 configuration "AutoFlippingLabel"
1265 model "six_pos"
1266 position "thead"
1267 ]
1268 ]
1269 edge
1270 [
1271 source 21
1272 target 8
1273 graphics
1274 [
1275 fill "#000000"
1276 targetArrow "standard"
1277 ]
1278 LabelGraphics
1279 [
1280 text "target reference DirectedCommunicationLink"
1281 fontSize 14
1282 fontName "Consolas"
1283 configuration "AutoFlippingLabel"
1284 model "six_pos"
1285 position "thead"
1286 ]
1287 ]
1288 edge
1289 [
1290 source 8
1291 target 1
1292 graphics
1293 [
1294 fill "#000000"
1295 targetArrow "standard"
1296 ]
1297 LabelGraphics
1298 [
1299 text "band attribute CommSubsystem"
1300 fontSize 14
1301 fontName "Consolas"
1302 configuration "AutoFlippingLabel"
1303 model "six_pos"
1304 position "thead"
1305 ]
1306 ]
1307 edge
1308 [
1309 source 9
1310 target 2
1311 graphics
1312 [
1313 fill "#000000"
1314 targetArrow "standard"
1315 ]
1316 LabelGraphics
1317 [
1318 text "band attribute CommSubsystem"
1319 fontSize 14
1320 fontName "Consolas"
1321 configuration "AutoFlippingLabel"
1322 model "six_pos"
1323 position "thead"
1324 ]
1325 ]
1326 edge
1327 [
1328 source 14
1329 target 0
1330 graphics
1331 [
1332 fill "#000000"
1333 targetArrow "standard"
1334 ]
1335 LabelGraphics
1336 [
1337 text "band attribute CommSubsystem"
1338 fontSize 14
1339 fontName "Consolas"
1340 configuration "AutoFlippingLabel"
1341 model "six_pos"
1342 position "thead"
1343 ]
1344 ]
1345 edge
1346 [
1347 source 17
1348 target 1
1349 graphics
1350 [
1351 fill "#000000"
1352 targetArrow "standard"
1353 ]
1354 LabelGraphics
1355 [
1356 text "band attribute CommSubsystem"
1357 fontSize 14
1358 fontName "Consolas"
1359 configuration "AutoFlippingLabel"
1360 model "six_pos"
1361 position "thead"
1362 ]
1363 ]
1364 edge
1365 [
1366 source 18
1367 target 1
1368 graphics
1369 [
1370 fill "#000000"
1371 targetArrow "standard"
1372 ]
1373 LabelGraphics
1374 [
1375 text "band attribute CommSubsystem"
1376 fontSize 14
1377 fontName "Consolas"
1378 configuration "AutoFlippingLabel"
1379 model "six_pos"
1380 position "thead"
1381 ]
1382 ]
1383 edge
1384 [
1385 source 20
1386 target 1
1387 graphics
1388 [
1389 fill "#000000"
1390 targetArrow "standard"
1391 ]
1392 LabelGraphics
1393 [
1394 text "band attribute CommSubsystem"
1395 fontSize 14
1396 fontName "Consolas"
1397 configuration "AutoFlippingLabel"
1398 model "six_pos"
1399 position "thead"
1400 ]
1401 ]
1402 edge
1403 [
1404 source 8
1405 target 4
1406 graphics
1407 [
1408 fill "#000000"
1409 targetArrow "standard"
1410 ]
1411 LabelGraphics
1412 [
1413 text "gain attribute CommSubsystem"
1414 fontSize 14
1415 fontName "Consolas"
1416 configuration "AutoFlippingLabel"
1417 model "six_pos"
1418 position "thead"
1419 ]
1420 ]
1421 edge
1422 [
1423 source 9
1424 target 5
1425 graphics
1426 [
1427 fill "#000000"
1428 targetArrow "standard"
1429 ]
1430 LabelGraphics
1431 [
1432 text "gain attribute CommSubsystem"
1433 fontSize 14
1434 fontName "Consolas"
1435 configuration "AutoFlippingLabel"
1436 model "six_pos"
1437 position "thead"
1438 ]
1439 ]
1440 edge
1441 [
1442 source 14
1443 target 3
1444 graphics
1445 [
1446 fill "#000000"
1447 targetArrow "standard"
1448 ]
1449 LabelGraphics
1450 [
1451 text "gain attribute CommSubsystem"
1452 fontSize 14
1453 fontName "Consolas"
1454 configuration "AutoFlippingLabel"
1455 model "six_pos"
1456 position "thead"
1457 ]
1458 ]
1459 edge
1460 [
1461 source 17
1462 target 3
1463 graphics
1464 [
1465 fill "#000000"
1466 targetArrow "standard"
1467 ]
1468 LabelGraphics
1469 [
1470 text "gain attribute CommSubsystem"
1471 fontSize 14
1472 fontName "Consolas"
1473 configuration "AutoFlippingLabel"
1474 model "six_pos"
1475 position "thead"
1476 ]
1477 ]
1478 edge
1479 [
1480 source 18
1481 target 4
1482 graphics
1483 [
1484 fill "#000000"
1485 targetArrow "standard"
1486 ]
1487 LabelGraphics
1488 [
1489 text "gain attribute CommSubsystem"
1490 fontSize 14
1491 fontName "Consolas"
1492 configuration "AutoFlippingLabel"
1493 model "six_pos"
1494 position "thead"
1495 ]
1496 ]
1497 edge
1498 [
1499 source 20
1500 target 4
1501 graphics
1502 [
1503 fill "#000000"
1504 targetArrow "standard"
1505 ]
1506 LabelGraphics
1507 [
1508 text "gain attribute CommSubsystem"
1509 fontSize 14
1510 fontName "Consolas"
1511 configuration "AutoFlippingLabel"
1512 model "six_pos"
1513 position "thead"
1514 ]
1515 ]
1516]
1517
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..46fb5138
--- /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..5d49f882
--- /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:SmallSat">
8 <commSubsystem band="X" gain="MEDIUM"/>
9 <commSubsystem band="X"/>
10 <communicationLink source="//@spacecraft.0/@commSubsystem.0" target="//@groundStationNetwork/@commSubsystem.0"/>
11 <payload xsi:type="satellite:InterferometryPayload"/>
12 </spacecraft>
13 <spacecraft xsi:type="satellite:CubeSat6U">
14 <commSubsystem/>
15 <commSubsystem band="X" gain="MEDIUM"/>
16 <communicationLink source="//@spacecraft.1/@commSubsystem.1" target="//@groundStationNetwork/@commSubsystem.0"/>
17 <payload xsi:type="satellite:InterferometryPayload"/>
18 </spacecraft>
19</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.gml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.gml
new file mode 100644
index 00000000..c5fd2a74
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.gml
@@ -0,0 +1,1983 @@
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 315.70000000000005
225 h 82
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "o 1"
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 ConstellationMission class DefinedPart
246 InterferometryMission class DefinedPart
247 ConstellationMission class
248 InterferometryMission class
249 "
250 fontSize 14
251 fontName "Consolas"
252 alignment "left"
253 anchor "tl"
254 borderDistance 6
255 ]
256 ]
257
258 node
259 [
260 id 7
261 graphics
262 [
263 w 308.0
264 h 82
265 type "rectangle"
266 fill "#FFFFFF"
267 fill2 "#FFFFFF"
268 outline "#000000"
269 ]
270 LabelGraphics
271 [
272 text "o 2"
273 outline "#000000"
274 fill "#FFFFFF"
275 fontSize 16
276 fontName "Monospace"
277 autoSizePolicy "node_width"
278 anchor "t"
279 borderDistance 0.0
280 ]
281 LabelGraphics
282 [
283 text "
284 CommunicatingElement class DefinedPart
285 GroundStationNetwork class DefinedPart
286 CommunicatingElement class
287 GroundStationNetwork class
288 "
289 fontSize 14
290 fontName "Consolas"
291 alignment "left"
292 anchor "tl"
293 borderDistance 6
294 ]
295 ]
296
297 node
298 [
299 id 8
300 graphics
301 [
302 w 254.10000000000002
303 h 54
304 type "rectangle"
305 fill "#FFFFFF"
306 fill2 "#FFFFFF"
307 outline "#000000"
308 ]
309 LabelGraphics
310 [
311 text "o 3"
312 outline "#000000"
313 fill "#FFFFFF"
314 fontSize 16
315 fontName "Monospace"
316 autoSizePolicy "node_width"
317 anchor "t"
318 borderDistance 0.0
319 ]
320 LabelGraphics
321 [
322 text "
323 CommSubsystem class DefinedPart
324 CommSubsystem class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 254.10000000000002
340 h 54
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "o 4"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 CommSubsystem class DefinedPart
361 CommSubsystem class
362 "
363 fontSize 14
364 fontName "Consolas"
365 alignment "left"
366 anchor "tl"
367 borderDistance 6
368 ]
369 ]
370
371 node
372 [
373 id 10
374 graphics
375 [
376 w 41.800000000000004
377 h 26
378 type "rectangle"
379 fill "#FFFFFF"
380 fill2 "#FFFFFF"
381 outline "#000000"
382 ]
383 LabelGraphics
384 [
385 text "true"
386 outline "#000000"
387 fill "#FFFFFF"
388 fontSize 16
389 fontName "Monospace"
390 autoSizePolicy "node_width"
391 anchor "t"
392 borderDistance 0.0
393 ]
394 LabelGraphics
395 [
396 text "
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 50.6
412 h 26
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "false"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 "
433 fontSize 14
434 fontName "Consolas"
435 alignment "left"
436 anchor "tl"
437 borderDistance 6
438 ]
439 ]
440
441 node
442 [
443 id 12
444 graphics
445 [
446 w 323.40000000000003
447 h 82
448 type "rectangle"
449 fill "#FFFFFF"
450 fill2 "#FFFFFF"
451 outline "#000000"
452 ]
453 LabelGraphics
454 [
455 text "null"
456 outline "#000000"
457 fill "#FFFFFF"
458 fontSize 16
459 fontName "Monospace"
460 autoSizePolicy "node_width"
461 anchor "t"
462 borderDistance 0.0
463 ]
464 LabelGraphics
465 [
466 text "
467 CommunicatingElement class
468 Spacecraft class
469 SmallSat class
470 CommunicatingElement class UndefinedPart
471 "
472 fontSize 14
473 fontName "Consolas"
474 alignment "left"
475 anchor "tl"
476 borderDistance 6
477 ]
478 ]
479
480 node
481 [
482 id 13
483 graphics
484 [
485 w 323.40000000000003
486 h 82
487 type "rectangle"
488 fill "#FFFFFF"
489 fill2 "#FFFFFF"
490 outline "#000000"
491 ]
492 LabelGraphics
493 [
494 text "null"
495 outline "#000000"
496 fill "#FFFFFF"
497 fontSize 16
498 fontName "Monospace"
499 autoSizePolicy "node_width"
500 anchor "t"
501 borderDistance 0.0
502 ]
503 LabelGraphics
504 [
505 text "
506 CommunicatingElement class
507 Spacecraft class
508 CubeSat6U class
509 CommunicatingElement class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 54
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 CommSubsystem class
546 CommSubsystem class UndefinedPart
547 "
548 fontSize 14
549 fontName "Consolas"
550 alignment "left"
551 anchor "tl"
552 borderDistance 6
553 ]
554 ]
555
556 node
557 [
558 id 15
559 graphics
560 [
561 w 223.3
562 h 54
563 type "rectangle"
564 fill "#FFFFFF"
565 fill2 "#FFFFFF"
566 outline "#000000"
567 ]
568 LabelGraphics
569 [
570 text "null"
571 outline "#000000"
572 fill "#FFFFFF"
573 fontSize 16
574 fontName "Monospace"
575 autoSizePolicy "node_width"
576 anchor "t"
577 borderDistance 0.0
578 ]
579 LabelGraphics
580 [
581 text "
582 Payload class
583 InterferometryPayload class
584 "
585 fontSize 14
586 fontName "Consolas"
587 alignment "left"
588 anchor "tl"
589 borderDistance 6
590 ]
591 ]
592
593 node
594 [
595 id 16
596 graphics
597 [
598 w 269.5
599 h 54
600 type "rectangle"
601 fill "#FFFFFF"
602 fill2 "#FFFFFF"
603 outline "#000000"
604 ]
605 LabelGraphics
606 [
607 text "null"
608 outline "#000000"
609 fill "#FFFFFF"
610 fontSize 16
611 fontName "Monospace"
612 autoSizePolicy "node_width"
613 anchor "t"
614 borderDistance 0.0
615 ]
616 LabelGraphics
617 [
618 text "
619 CommSubsystem class
620 CommSubsystem class UndefinedPart
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629
630 node
631 [
632 id 17
633 graphics
634 [
635 w 323.40000000000003
636 h 82
637 type "rectangle"
638 fill "#FFFFFF"
639 fill2 "#FFFFFF"
640 outline "#000000"
641 ]
642 LabelGraphics
643 [
644 text "null"
645 outline "#000000"
646 fill "#FFFFFF"
647 fontSize 16
648 fontName "Monospace"
649 autoSizePolicy "node_width"
650 anchor "t"
651 borderDistance 0.0
652 ]
653 LabelGraphics
654 [
655 text "
656 CommunicatingElement class
657 Spacecraft class
658 SmallSat class
659 CommunicatingElement class UndefinedPart
660 "
661 fontSize 14
662 fontName "Consolas"
663 alignment "left"
664 anchor "tl"
665 borderDistance 6
666 ]
667 ]
668
669 node
670 [
671 id 18
672 graphics
673 [
674 w 223.3
675 h 54
676 type "rectangle"
677 fill "#FFFFFF"
678 fill2 "#FFFFFF"
679 outline "#000000"
680 ]
681 LabelGraphics
682 [
683 text "null"
684 outline "#000000"
685 fill "#FFFFFF"
686 fontSize 16
687 fontName "Monospace"
688 autoSizePolicy "node_width"
689 anchor "t"
690 borderDistance 0.0
691 ]
692 LabelGraphics
693 [
694 text "
695 Payload class
696 InterferometryPayload class
697 "
698 fontSize 14
699 fontName "Consolas"
700 alignment "left"
701 anchor "tl"
702 borderDistance 6
703 ]
704 ]
705
706 node
707 [
708 id 19
709 graphics
710 [
711 w 323.40000000000003
712 h 82
713 type "rectangle"
714 fill "#FFFFFF"
715 fill2 "#FFFFFF"
716 outline "#000000"
717 ]
718 LabelGraphics
719 [
720 text "null"
721 outline "#000000"
722 fill "#FFFFFF"
723 fontSize 16
724 fontName "Monospace"
725 autoSizePolicy "node_width"
726 anchor "t"
727 borderDistance 0.0
728 ]
729 LabelGraphics
730 [
731 text "
732 CommunicatingElement class
733 Spacecraft class
734 SmallSat class
735 CommunicatingElement class UndefinedPart
736 "
737 fontSize 14
738 fontName "Consolas"
739 alignment "left"
740 anchor "tl"
741 borderDistance 6
742 ]
743 ]
744
745 node
746 [
747 id 20
748 graphics
749 [
750 w 223.3
751 h 54
752 type "rectangle"
753 fill "#FFFFFF"
754 fill2 "#FFFFFF"
755 outline "#000000"
756 ]
757 LabelGraphics
758 [
759 text "null"
760 outline "#000000"
761 fill "#FFFFFF"
762 fontSize 16
763 fontName "Monospace"
764 autoSizePolicy "node_width"
765 anchor "t"
766 borderDistance 0.0
767 ]
768 LabelGraphics
769 [
770 text "
771 Payload class
772 InterferometryPayload class
773 "
774 fontSize 14
775 fontName "Consolas"
776 alignment "left"
777 anchor "tl"
778 borderDistance 6
779 ]
780 ]
781
782 node
783 [
784 id 21
785 graphics
786 [
787 w 323.40000000000003
788 h 82
789 type "rectangle"
790 fill "#FFFFFF"
791 fill2 "#FFFFFF"
792 outline "#000000"
793 ]
794 LabelGraphics
795 [
796 text "null"
797 outline "#000000"
798 fill "#FFFFFF"
799 fontSize 16
800 fontName "Monospace"
801 autoSizePolicy "node_width"
802 anchor "t"
803 borderDistance 0.0
804 ]
805 LabelGraphics
806 [
807 text "
808 CommunicatingElement class
809 Spacecraft class
810 CubeSat6U class
811 CommunicatingElement class UndefinedPart
812 "
813 fontSize 14
814 fontName "Consolas"
815 alignment "left"
816 anchor "tl"
817 borderDistance 6
818 ]
819 ]
820
821 node
822 [
823 id 22
824 graphics
825 [
826 w 323.40000000000003
827 h 82
828 type "rectangle"
829 fill "#FFFFFF"
830 fill2 "#FFFFFF"
831 outline "#000000"
832 ]
833 LabelGraphics
834 [
835 text "null"
836 outline "#000000"
837 fill "#FFFFFF"
838 fontSize 16
839 fontName "Monospace"
840 autoSizePolicy "node_width"
841 anchor "t"
842 borderDistance 0.0
843 ]
844 LabelGraphics
845 [
846 text "
847 CommunicatingElement class
848 Spacecraft class
849 SmallSat class
850 CommunicatingElement class UndefinedPart
851 "
852 fontSize 14
853 fontName "Consolas"
854 alignment "left"
855 anchor "tl"
856 borderDistance 6
857 ]
858 ]
859
860 node
861 [
862 id 23
863 graphics
864 [
865 w 269.5
866 h 54
867 type "rectangle"
868 fill "#FFFFFF"
869 fill2 "#FFFFFF"
870 outline "#000000"
871 ]
872 LabelGraphics
873 [
874 text "null"
875 outline "#000000"
876 fill "#FFFFFF"
877 fontSize 16
878 fontName "Monospace"
879 autoSizePolicy "node_width"
880 anchor "t"
881 borderDistance 0.0
882 ]
883 LabelGraphics
884 [
885 text "
886 CommSubsystem class
887 CommSubsystem class UndefinedPart
888 "
889 fontSize 14
890 fontName "Consolas"
891 alignment "left"
892 anchor "tl"
893 borderDistance 6
894 ]
895 ]
896
897 node
898 [
899 id 24
900 graphics
901 [
902 w 269.5
903 h 54
904 type "rectangle"
905 fill "#FFFFFF"
906 fill2 "#FFFFFF"
907 outline "#000000"
908 ]
909 LabelGraphics
910 [
911 text "null"
912 outline "#000000"
913 fill "#FFFFFF"
914 fontSize 16
915 fontName "Monospace"
916 autoSizePolicy "node_width"
917 anchor "t"
918 borderDistance 0.0
919 ]
920 LabelGraphics
921 [
922 text "
923 CommSubsystem class
924 CommSubsystem class UndefinedPart
925 "
926 fontSize 14
927 fontName "Consolas"
928 alignment "left"
929 anchor "tl"
930 borderDistance 6
931 ]
932 ]
933
934 node
935 [
936 id 25
937 graphics
938 [
939 w 223.3
940 h 54
941 type "rectangle"
942 fill "#FFFFFF"
943 fill2 "#FFFFFF"
944 outline "#000000"
945 ]
946 LabelGraphics
947 [
948 text "null"
949 outline "#000000"
950 fill "#FFFFFF"
951 fontSize 16
952 fontName "Monospace"
953 autoSizePolicy "node_width"
954 anchor "t"
955 borderDistance 0.0
956 ]
957 LabelGraphics
958 [
959 text "
960 Payload class
961 InterferometryPayload class
962 "
963 fontSize 14
964 fontName "Consolas"
965 alignment "left"
966 anchor "tl"
967 borderDistance 6
968 ]
969 ]
970
971 node
972 [
973 id 26
974 graphics
975 [
976 w 223.3
977 h 54
978 type "rectangle"
979 fill "#FFFFFF"
980 fill2 "#FFFFFF"
981 outline "#000000"
982 ]
983 LabelGraphics
984 [
985 text "null"
986 outline "#000000"
987 fill "#FFFFFF"
988 fontSize 16
989 fontName "Monospace"
990 autoSizePolicy "node_width"
991 anchor "t"
992 borderDistance 0.0
993 ]
994 LabelGraphics
995 [
996 text "
997 Payload class
998 InterferometryPayload class
999 "
1000 fontSize 14
1001 fontName "Consolas"
1002 alignment "left"
1003 anchor "tl"
1004 borderDistance 6
1005 ]
1006 ]
1007
1008 node
1009 [
1010 id 27
1011 graphics
1012 [
1013 w 269.5
1014 h 54
1015 type "rectangle"
1016 fill "#FFFFFF"
1017 fill2 "#FFFFFF"
1018 outline "#000000"
1019 ]
1020 LabelGraphics
1021 [
1022 text "null"
1023 outline "#000000"
1024 fill "#FFFFFF"
1025 fontSize 16
1026 fontName "Monospace"
1027 autoSizePolicy "node_width"
1028 anchor "t"
1029 borderDistance 0.0
1030 ]
1031 LabelGraphics
1032 [
1033 text "
1034 CommSubsystem class
1035 CommSubsystem class UndefinedPart
1036 "
1037 fontSize 14
1038 fontName "Consolas"
1039 alignment "left"
1040 anchor "tl"
1041 borderDistance 6
1042 ]
1043 ]
1044
1045 node
1046 [
1047 id 28
1048 graphics
1049 [
1050 w 269.5
1051 h 54
1052 type "rectangle"
1053 fill "#FFFFFF"
1054 fill2 "#FFFFFF"
1055 outline "#000000"
1056 ]
1057 LabelGraphics
1058 [
1059 text "null"
1060 outline "#000000"
1061 fill "#FFFFFF"
1062 fontSize 16
1063 fontName "Monospace"
1064 autoSizePolicy "node_width"
1065 anchor "t"
1066 borderDistance 0.0
1067 ]
1068 LabelGraphics
1069 [
1070 text "
1071 CommSubsystem class
1072 CommSubsystem class UndefinedPart
1073 "
1074 fontSize 14
1075 fontName "Consolas"
1076 alignment "left"
1077 anchor "tl"
1078 borderDistance 6
1079 ]
1080 ]
1081
1082 node
1083 [
1084 id 29
1085 graphics
1086 [
1087 w 223.3
1088 h 54
1089 type "rectangle"
1090 fill "#FFFFFF"
1091 fill2 "#FFFFFF"
1092 outline "#000000"
1093 ]
1094 LabelGraphics
1095 [
1096 text "null"
1097 outline "#000000"
1098 fill "#FFFFFF"
1099 fontSize 16
1100 fontName "Monospace"
1101 autoSizePolicy "node_width"
1102 anchor "t"
1103 borderDistance 0.0
1104 ]
1105 LabelGraphics
1106 [
1107 text "
1108 Payload class
1109 InterferometryPayload class
1110 "
1111 fontSize 14
1112 fontName "Consolas"
1113 alignment "left"
1114 anchor "tl"
1115 borderDistance 6
1116 ]
1117 ]
1118
1119 node
1120 [
1121 id 30
1122 graphics
1123 [
1124 w 112.2
1125 h 26
1126 type "rectangle"
1127 fill "#FFFFFF"
1128 fill2 "#FFFFFF"
1129 outline "#000000"
1130 ]
1131 LabelGraphics
1132 [
1133 text "New Integers"
1134 outline "#000000"
1135 fill "#FFFFFF"
1136 fontSize 16
1137 fontName "Monospace"
1138 autoSizePolicy "node_width"
1139 anchor "t"
1140 borderDistance 0.0
1141 ]
1142 LabelGraphics
1143 [
1144 text "
1145 "
1146 fontSize 14
1147 fontName "Consolas"
1148 alignment "left"
1149 anchor "tl"
1150 borderDistance 6
1151 ]
1152 ]
1153
1154 node
1155 [
1156 id 31
1157 graphics
1158 [
1159 w 85.80000000000001
1160 h 26
1161 type "rectangle"
1162 fill "#FFFFFF"
1163 fill2 "#FFFFFF"
1164 outline "#000000"
1165 ]
1166 LabelGraphics
1167 [
1168 text "New Reals"
1169 outline "#000000"
1170 fill "#FFFFFF"
1171 fontSize 16
1172 fontName "Monospace"
1173 autoSizePolicy "node_width"
1174 anchor "t"
1175 borderDistance 0.0
1176 ]
1177 LabelGraphics
1178 [
1179 text "
1180 "
1181 fontSize 14
1182 fontName "Consolas"
1183 alignment "left"
1184 anchor "tl"
1185 borderDistance 6
1186 ]
1187 ]
1188
1189 node
1190 [
1191 id 32
1192 graphics
1193 [
1194 w 103.4
1195 h 26
1196 type "rectangle"
1197 fill "#FFFFFF"
1198 fill2 "#FFFFFF"
1199 outline "#000000"
1200 ]
1201 LabelGraphics
1202 [
1203 text "New Strings"
1204 outline "#000000"
1205 fill "#FFFFFF"
1206 fontSize 16
1207 fontName "Monospace"
1208 autoSizePolicy "node_width"
1209 anchor "t"
1210 borderDistance 0.0
1211 ]
1212 LabelGraphics
1213 [
1214 text "
1215 "
1216 fontSize 14
1217 fontName "Consolas"
1218 alignment "left"
1219 anchor "tl"
1220 borderDistance 6
1221 ]
1222 ]
1223
1224 node
1225 [
1226 id 33
1227 graphics
1228 [
1229 w 103.4
1230 h 26
1231 type "rectangle"
1232 fill "#FFFFFF"
1233 fill2 "#FFFFFF"
1234 outline "#000000"
1235 ]
1236 LabelGraphics
1237 [
1238 text "New Objects"
1239 outline "#000000"
1240 fill "#FFFFFF"
1241 fontSize 16
1242 fontName "Monospace"
1243 autoSizePolicy "node_width"
1244 anchor "t"
1245 borderDistance 0.0
1246 ]
1247 LabelGraphics
1248 [
1249 text "
1250 "
1251 fontSize 14
1252 fontName "Consolas"
1253 alignment "left"
1254 anchor "tl"
1255 borderDistance 6
1256 ]
1257 ]
1258 edge
1259 [
1260 source 6
1261 target 7
1262 graphics
1263 [
1264 fill "#000000"
1265 width 3
1266 targetArrow "standard"
1267 ]
1268 LabelGraphics
1269 [
1270 text "groundStationNetwork reference ConstellationMission"
1271 fontSize 14
1272 fontName "Consolas"
1273 configuration "AutoFlippingLabel"
1274 model "six_pos"
1275 position "thead"
1276 ]
1277 ]
1278 edge
1279 [
1280 source 6
1281 target 12
1282 graphics
1283 [
1284 fill "#000000"
1285 width 3
1286 targetArrow "standard"
1287 ]
1288 LabelGraphics
1289 [
1290 text "spacecraft reference ConstellationMission"
1291 fontSize 14
1292 fontName "Consolas"
1293 configuration "AutoFlippingLabel"
1294 model "six_pos"
1295 position "thead"
1296 ]
1297 ]
1298 edge
1299 [
1300 source 6
1301 target 13
1302 graphics
1303 [
1304 fill "#000000"
1305 width 3
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "spacecraft reference ConstellationMission"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 6
1321 target 17
1322 graphics
1323 [
1324 fill "#000000"
1325 width 3
1326 targetArrow "standard"
1327 ]
1328 LabelGraphics
1329 [
1330 text "spacecraft reference ConstellationMission"
1331 fontSize 14
1332 fontName "Consolas"
1333 configuration "AutoFlippingLabel"
1334 model "six_pos"
1335 position "thead"
1336 ]
1337 ]
1338 edge
1339 [
1340 source 6
1341 target 19
1342 graphics
1343 [
1344 fill "#000000"
1345 width 3
1346 targetArrow "standard"
1347 ]
1348 LabelGraphics
1349 [
1350 text "spacecraft reference ConstellationMission"
1351 fontSize 14
1352 fontName "Consolas"
1353 configuration "AutoFlippingLabel"
1354 model "six_pos"
1355 position "thead"
1356 ]
1357 ]
1358 edge
1359 [
1360 source 6
1361 target 21
1362 graphics
1363 [
1364 fill "#000000"
1365 width 3
1366 targetArrow "standard"
1367 ]
1368 LabelGraphics
1369 [
1370 text "spacecraft reference ConstellationMission"
1371 fontSize 14
1372 fontName "Consolas"
1373 configuration "AutoFlippingLabel"
1374 model "six_pos"
1375 position "thead"
1376 ]
1377 ]
1378 edge
1379 [
1380 source 6
1381 target 22
1382 graphics
1383 [
1384 fill "#000000"
1385 width 3
1386 targetArrow "standard"
1387 ]
1388 LabelGraphics
1389 [
1390 text "spacecraft reference ConstellationMission"
1391 fontSize 14
1392 fontName "Consolas"
1393 configuration "AutoFlippingLabel"
1394 model "six_pos"
1395 position "thead"
1396 ]
1397 ]
1398 edge
1399 [
1400 source 7
1401 target 8
1402 graphics
1403 [
1404 fill "#000000"
1405 width 3
1406 targetArrow "standard"
1407 ]
1408 LabelGraphics
1409 [
1410 text "commSubsystem reference CommunicatingElement"
1411 fontSize 14
1412 fontName "Consolas"
1413 configuration "AutoFlippingLabel"
1414 model "six_pos"
1415 position "thead"
1416 ]
1417 ]
1418 edge
1419 [
1420 source 7
1421 target 9
1422 graphics
1423 [
1424 fill "#000000"
1425 width 3
1426 targetArrow "standard"
1427 ]
1428 LabelGraphics
1429 [
1430 text "commSubsystem reference CommunicatingElement"
1431 fontSize 14
1432 fontName "Consolas"
1433 configuration "AutoFlippingLabel"
1434 model "six_pos"
1435 position "thead"
1436 ]
1437 ]
1438 edge
1439 [
1440 source 13
1441 target 14
1442 graphics
1443 [
1444 fill "#000000"
1445 width 3
1446 targetArrow "standard"
1447 ]
1448 LabelGraphics
1449 [
1450 text "commSubsystem reference CommunicatingElement"
1451 fontSize 14
1452 fontName "Consolas"
1453 configuration "AutoFlippingLabel"
1454 model "six_pos"
1455 position "thead"
1456 ]
1457 ]
1458 edge
1459 [
1460 source 12
1461 target 16
1462 graphics
1463 [
1464 fill "#000000"
1465 width 3
1466 targetArrow "standard"
1467 ]
1468 LabelGraphics
1469 [
1470 text "commSubsystem reference CommunicatingElement"
1471 fontSize 14
1472 fontName "Consolas"
1473 configuration "AutoFlippingLabel"
1474 model "six_pos"
1475 position "thead"
1476 ]
1477 ]
1478 edge
1479 [
1480 source 21
1481 target 23
1482 graphics
1483 [
1484 fill "#000000"
1485 width 3
1486 targetArrow "standard"
1487 ]
1488 LabelGraphics
1489 [
1490 text "commSubsystem reference CommunicatingElement"
1491 fontSize 14
1492 fontName "Consolas"
1493 configuration "AutoFlippingLabel"
1494 model "six_pos"
1495 position "thead"
1496 ]
1497 ]
1498 edge
1499 [
1500 source 19
1501 target 24
1502 graphics
1503 [
1504 fill "#000000"
1505 width 3
1506 targetArrow "standard"
1507 ]
1508 LabelGraphics
1509 [
1510 text "commSubsystem reference CommunicatingElement"
1511 fontSize 14
1512 fontName "Consolas"
1513 configuration "AutoFlippingLabel"
1514 model "six_pos"
1515 position "thead"
1516 ]
1517 ]
1518 edge
1519 [
1520 source 17
1521 target 27
1522 graphics
1523 [
1524 fill "#000000"
1525 width 3
1526 targetArrow "standard"
1527 ]
1528 LabelGraphics
1529 [
1530 text "commSubsystem reference CommunicatingElement"
1531 fontSize 14
1532 fontName "Consolas"
1533 configuration "AutoFlippingLabel"
1534 model "six_pos"
1535 position "thead"
1536 ]
1537 ]
1538 edge
1539 [
1540 source 22
1541 target 28
1542 graphics
1543 [
1544 fill "#000000"
1545 width 3
1546 targetArrow "standard"
1547 ]
1548 LabelGraphics
1549 [
1550 text "commSubsystem reference CommunicatingElement"
1551 fontSize 14
1552 fontName "Consolas"
1553 configuration "AutoFlippingLabel"
1554 model "six_pos"
1555 position "thead"
1556 ]
1557 ]
1558 edge
1559 [
1560 source 13
1561 target 15
1562 graphics
1563 [
1564 fill "#000000"
1565 width 3
1566 targetArrow "standard"
1567 ]
1568 LabelGraphics
1569 [
1570 text "payload reference Spacecraft"
1571 fontSize 14
1572 fontName "Consolas"
1573 configuration "AutoFlippingLabel"
1574 model "six_pos"
1575 position "thead"
1576 ]
1577 ]
1578 edge
1579 [
1580 source 12
1581 target 18
1582 graphics
1583 [
1584 fill "#000000"
1585 width 3
1586 targetArrow "standard"
1587 ]
1588 LabelGraphics
1589 [
1590 text "payload reference Spacecraft"
1591 fontSize 14
1592 fontName "Consolas"
1593 configuration "AutoFlippingLabel"
1594 model "six_pos"
1595 position "thead"
1596 ]
1597 ]
1598 edge
1599 [
1600 source 17
1601 target 20
1602 graphics
1603 [
1604 fill "#000000"
1605 width 3
1606 targetArrow "standard"
1607 ]
1608 LabelGraphics
1609 [
1610 text "payload reference Spacecraft"
1611 fontSize 14
1612 fontName "Consolas"
1613 configuration "AutoFlippingLabel"
1614 model "six_pos"
1615 position "thead"
1616 ]
1617 ]
1618 edge
1619 [
1620 source 19
1621 target 25
1622 graphics
1623 [
1624 fill "#000000"
1625 width 3
1626 targetArrow "standard"
1627 ]
1628 LabelGraphics
1629 [
1630 text "payload reference Spacecraft"
1631 fontSize 14
1632 fontName "Consolas"
1633 configuration "AutoFlippingLabel"
1634 model "six_pos"
1635 position "thead"
1636 ]
1637 ]
1638 edge
1639 [
1640 source 22
1641 target 26
1642 graphics
1643 [
1644 fill "#000000"
1645 width 3
1646 targetArrow "standard"
1647 ]
1648 LabelGraphics
1649 [
1650 text "payload reference Spacecraft"
1651 fontSize 14
1652 fontName "Consolas"
1653 configuration "AutoFlippingLabel"
1654 model "six_pos"
1655 position "thead"
1656 ]
1657 ]
1658 edge
1659 [
1660 source 21
1661 target 29
1662 graphics
1663 [
1664 fill "#000000"
1665 width 3
1666 targetArrow "standard"
1667 ]
1668 LabelGraphics
1669 [
1670 text "payload reference Spacecraft"
1671 fontSize 14
1672 fontName "Consolas"
1673 configuration "AutoFlippingLabel"
1674 model "six_pos"
1675 position "thead"
1676 ]
1677 ]
1678 edge
1679 [
1680 source 8
1681 target 1
1682 graphics
1683 [
1684 fill "#000000"
1685 targetArrow "standard"
1686 ]
1687 LabelGraphics
1688 [
1689 text "band attribute CommSubsystem"
1690 fontSize 14
1691 fontName "Consolas"
1692 configuration "AutoFlippingLabel"
1693 model "six_pos"
1694 position "thead"
1695 ]
1696 ]
1697 edge
1698 [
1699 source 9
1700 target 2
1701 graphics
1702 [
1703 fill "#000000"
1704 targetArrow "standard"
1705 ]
1706 LabelGraphics
1707 [
1708 text "band attribute CommSubsystem"
1709 fontSize 14
1710 fontName "Consolas"
1711 configuration "AutoFlippingLabel"
1712 model "six_pos"
1713 position "thead"
1714 ]
1715 ]
1716 edge
1717 [
1718 source 14
1719 target 0
1720 graphics
1721 [
1722 fill "#000000"
1723 targetArrow "standard"
1724 ]
1725 LabelGraphics
1726 [
1727 text "band attribute CommSubsystem"
1728 fontSize 14
1729 fontName "Consolas"
1730 configuration "AutoFlippingLabel"
1731 model "six_pos"
1732 position "thead"
1733 ]
1734 ]
1735 edge
1736 [
1737 source 16
1738 target 2
1739 graphics
1740 [
1741 fill "#000000"
1742 targetArrow "standard"
1743 ]
1744 LabelGraphics
1745 [
1746 text "band attribute CommSubsystem"
1747 fontSize 14
1748 fontName "Consolas"
1749 configuration "AutoFlippingLabel"
1750 model "six_pos"
1751 position "thead"
1752 ]
1753 ]
1754 edge
1755 [
1756 source 23
1757 target 1
1758 graphics
1759 [
1760 fill "#000000"
1761 targetArrow "standard"
1762 ]
1763 LabelGraphics
1764 [
1765 text "band attribute CommSubsystem"
1766 fontSize 14
1767 fontName "Consolas"
1768 configuration "AutoFlippingLabel"
1769 model "six_pos"
1770 position "thead"
1771 ]
1772 ]
1773 edge
1774 [
1775 source 24
1776 target 2
1777 graphics
1778 [
1779 fill "#000000"
1780 targetArrow "standard"
1781 ]
1782 LabelGraphics
1783 [
1784 text "band attribute CommSubsystem"
1785 fontSize 14
1786 fontName "Consolas"
1787 configuration "AutoFlippingLabel"
1788 model "six_pos"
1789 position "thead"
1790 ]
1791 ]
1792 edge
1793 [
1794 source 27
1795 target 1
1796 graphics
1797 [
1798 fill "#000000"
1799 targetArrow "standard"
1800 ]
1801 LabelGraphics
1802 [
1803 text "band attribute CommSubsystem"
1804 fontSize 14
1805 fontName "Consolas"
1806 configuration "AutoFlippingLabel"
1807 model "six_pos"
1808 position "thead"
1809 ]
1810 ]
1811 edge
1812 [
1813 source 28
1814 target 2
1815 graphics
1816 [
1817 fill "#000000"
1818 targetArrow "standard"
1819 ]
1820 LabelGraphics
1821 [
1822 text "band attribute CommSubsystem"
1823 fontSize 14
1824 fontName "Consolas"
1825 configuration "AutoFlippingLabel"
1826 model "six_pos"
1827 position "thead"
1828 ]
1829 ]
1830 edge
1831 [
1832 source 8
1833 target 4
1834 graphics
1835 [
1836 fill "#000000"
1837 targetArrow "standard"
1838 ]
1839 LabelGraphics
1840 [
1841 text "gain attribute CommSubsystem"
1842 fontSize 14
1843 fontName "Consolas"
1844 configuration "AutoFlippingLabel"
1845 model "six_pos"
1846 position "thead"
1847 ]
1848 ]
1849 edge
1850 [
1851 source 9
1852 target 5
1853 graphics
1854 [
1855 fill "#000000"
1856 targetArrow "standard"
1857 ]
1858 LabelGraphics
1859 [
1860 text "gain attribute CommSubsystem"
1861 fontSize 14
1862 fontName "Consolas"
1863 configuration "AutoFlippingLabel"
1864 model "six_pos"
1865 position "thead"
1866 ]
1867 ]
1868 edge
1869 [
1870 source 14
1871 target 5
1872 graphics
1873 [
1874 fill "#000000"
1875 targetArrow "standard"
1876 ]
1877 LabelGraphics
1878 [
1879 text "gain attribute CommSubsystem"
1880 fontSize 14
1881 fontName "Consolas"
1882 configuration "AutoFlippingLabel"
1883 model "six_pos"
1884 position "thead"
1885 ]
1886 ]
1887 edge
1888 [
1889 source 16
1890 target 3
1891 graphics
1892 [
1893 fill "#000000"
1894 targetArrow "standard"
1895 ]
1896 LabelGraphics
1897 [
1898 text "gain attribute CommSubsystem"
1899 fontSize 14
1900 fontName "Consolas"
1901 configuration "AutoFlippingLabel"
1902 model "six_pos"
1903 position "thead"
1904 ]
1905 ]
1906 edge
1907 [
1908 source 24
1909 target 4
1910 graphics
1911 [
1912 fill "#000000"
1913 targetArrow "standard"
1914 ]
1915 LabelGraphics
1916 [
1917 text "gain attribute CommSubsystem"
1918 fontSize 14
1919 fontName "Consolas"
1920 configuration "AutoFlippingLabel"
1921 model "six_pos"
1922 position "thead"
1923 ]
1924 ]
1925 edge
1926 [
1927 source 23
1928 target 4
1929 graphics
1930 [
1931 fill "#000000"
1932 targetArrow "standard"
1933 ]
1934 LabelGraphics
1935 [
1936 text "gain attribute CommSubsystem"
1937 fontSize 14
1938 fontName "Consolas"
1939 configuration "AutoFlippingLabel"
1940 model "six_pos"
1941 position "thead"
1942 ]
1943 ]
1944 edge
1945 [
1946 source 27
1947 target 4
1948 graphics
1949 [
1950 fill "#000000"
1951 targetArrow "standard"
1952 ]
1953 LabelGraphics
1954 [
1955 text "gain attribute CommSubsystem"
1956 fontSize 14
1957 fontName "Consolas"
1958 configuration "AutoFlippingLabel"
1959 model "six_pos"
1960 position "thead"
1961 ]
1962 ]
1963 edge
1964 [
1965 source 28
1966 target 3
1967 graphics
1968 [
1969 fill "#000000"
1970 targetArrow "standard"
1971 ]
1972 LabelGraphics
1973 [
1974 text "gain attribute CommSubsystem"
1975 fontSize 14
1976 fontName "Consolas"
1977 configuration "AutoFlippingLabel"
1978 model "six_pos"
1979 position "thead"
1980 ]
1981 ]
1982]
1983
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.png
new file mode 100644
index 00000000..791ec34e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.png
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.xmi
new file mode 100644
index 00000000..14a9208d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/2.xmi
@@ -0,0 +1,31 @@
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:CubeSat6U">
8 <commSubsystem band="X" gain="MEDIUM"/>
9 <payload xsi:type="satellite:InterferometryPayload"/>
10 </spacecraft>
11 <spacecraft xsi:type="satellite:CubeSat6U">
12 <commSubsystem gain="HIGH"/>
13 <payload xsi:type="satellite:InterferometryPayload"/>
14 </spacecraft>
15 <spacecraft xsi:type="satellite:SmallSat">
16 <commSubsystem band="X" gain="MEDIUM"/>
17 <payload xsi:type="satellite:InterferometryPayload"/>
18 </spacecraft>
19 <spacecraft xsi:type="satellite:SmallSat">
20 <commSubsystem band="Ka" gain="MEDIUM"/>
21 <payload xsi:type="satellite:InterferometryPayload"/>
22 </spacecraft>
23 <spacecraft xsi:type="satellite:SmallSat">
24 <commSubsystem band="Ka"/>
25 <payload xsi:type="satellite:InterferometryPayload"/>
26 </spacecraft>
27 <spacecraft xsi:type="satellite:SmallSat">
28 <commSubsystem band="Ka"/>
29 <payload xsi:type="satellite:InterferometryPayload"/>
30 </spacecraft>
31</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.gml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.gml
new file mode 100644
index 00000000..caae7300
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.gml
@@ -0,0 +1,1926 @@
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 315.70000000000005
225 h 82
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "o 1"
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 ConstellationMission class DefinedPart
246 InterferometryMission class DefinedPart
247 ConstellationMission class
248 InterferometryMission class
249 "
250 fontSize 14
251 fontName "Consolas"
252 alignment "left"
253 anchor "tl"
254 borderDistance 6
255 ]
256 ]
257
258 node
259 [
260 id 7
261 graphics
262 [
263 w 308.0
264 h 82
265 type "rectangle"
266 fill "#FFFFFF"
267 fill2 "#FFFFFF"
268 outline "#000000"
269 ]
270 LabelGraphics
271 [
272 text "o 2"
273 outline "#000000"
274 fill "#FFFFFF"
275 fontSize 16
276 fontName "Monospace"
277 autoSizePolicy "node_width"
278 anchor "t"
279 borderDistance 0.0
280 ]
281 LabelGraphics
282 [
283 text "
284 CommunicatingElement class DefinedPart
285 GroundStationNetwork class DefinedPart
286 CommunicatingElement class
287 GroundStationNetwork class
288 "
289 fontSize 14
290 fontName "Consolas"
291 alignment "left"
292 anchor "tl"
293 borderDistance 6
294 ]
295 ]
296
297 node
298 [
299 id 8
300 graphics
301 [
302 w 254.10000000000002
303 h 54
304 type "rectangle"
305 fill "#FFFFFF"
306 fill2 "#FFFFFF"
307 outline "#000000"
308 ]
309 LabelGraphics
310 [
311 text "o 3"
312 outline "#000000"
313 fill "#FFFFFF"
314 fontSize 16
315 fontName "Monospace"
316 autoSizePolicy "node_width"
317 anchor "t"
318 borderDistance 0.0
319 ]
320 LabelGraphics
321 [
322 text "
323 CommSubsystem class DefinedPart
324 CommSubsystem class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 254.10000000000002
340 h 54
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "o 4"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 CommSubsystem class DefinedPart
361 CommSubsystem class
362 "
363 fontSize 14
364 fontName "Consolas"
365 alignment "left"
366 anchor "tl"
367 borderDistance 6
368 ]
369 ]
370
371 node
372 [
373 id 10
374 graphics
375 [
376 w 41.800000000000004
377 h 26
378 type "rectangle"
379 fill "#FFFFFF"
380 fill2 "#FFFFFF"
381 outline "#000000"
382 ]
383 LabelGraphics
384 [
385 text "true"
386 outline "#000000"
387 fill "#FFFFFF"
388 fontSize 16
389 fontName "Monospace"
390 autoSizePolicy "node_width"
391 anchor "t"
392 borderDistance 0.0
393 ]
394 LabelGraphics
395 [
396 text "
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 50.6
412 h 26
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "false"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 "
433 fontSize 14
434 fontName "Consolas"
435 alignment "left"
436 anchor "tl"
437 borderDistance 6
438 ]
439 ]
440
441 node
442 [
443 id 12
444 graphics
445 [
446 w 323.40000000000003
447 h 82
448 type "rectangle"
449 fill "#FFFFFF"
450 fill2 "#FFFFFF"
451 outline "#000000"
452 ]
453 LabelGraphics
454 [
455 text "null"
456 outline "#000000"
457 fill "#FFFFFF"
458 fontSize 16
459 fontName "Monospace"
460 autoSizePolicy "node_width"
461 anchor "t"
462 borderDistance 0.0
463 ]
464 LabelGraphics
465 [
466 text "
467 CommunicatingElement class
468 Spacecraft class
469 SmallSat class
470 CommunicatingElement class UndefinedPart
471 "
472 fontSize 14
473 fontName "Consolas"
474 alignment "left"
475 anchor "tl"
476 borderDistance 6
477 ]
478 ]
479
480 node
481 [
482 id 13
483 graphics
484 [
485 w 323.40000000000003
486 h 82
487 type "rectangle"
488 fill "#FFFFFF"
489 fill2 "#FFFFFF"
490 outline "#000000"
491 ]
492 LabelGraphics
493 [
494 text "null"
495 outline "#000000"
496 fill "#FFFFFF"
497 fontSize 16
498 fontName "Monospace"
499 autoSizePolicy "node_width"
500 anchor "t"
501 borderDistance 0.0
502 ]
503 LabelGraphics
504 [
505 text "
506 CommunicatingElement class
507 Spacecraft class
508 CubeSat6U class
509 CommunicatingElement class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 54
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 CommSubsystem class
546 CommSubsystem class UndefinedPart
547 "
548 fontSize 14
549 fontName "Consolas"
550 alignment "left"
551 anchor "tl"
552 borderDistance 6
553 ]
554 ]
555
556 node
557 [
558 id 15
559 graphics
560 [
561 w 223.3
562 h 54
563 type "rectangle"
564 fill "#FFFFFF"
565 fill2 "#FFFFFF"
566 outline "#000000"
567 ]
568 LabelGraphics
569 [
570 text "null"
571 outline "#000000"
572 fill "#FFFFFF"
573 fontSize 16
574 fontName "Monospace"
575 autoSizePolicy "node_width"
576 anchor "t"
577 borderDistance 0.0
578 ]
579 LabelGraphics
580 [
581 text "
582 Payload class
583 InterferometryPayload class
584 "
585 fontSize 14
586 fontName "Consolas"
587 alignment "left"
588 anchor "tl"
589 borderDistance 6
590 ]
591 ]
592
593 node
594 [
595 id 16
596 graphics
597 [
598 w 269.5
599 h 54
600 type "rectangle"
601 fill "#FFFFFF"
602 fill2 "#FFFFFF"
603 outline "#000000"
604 ]
605 LabelGraphics
606 [
607 text "null"
608 outline "#000000"
609 fill "#FFFFFF"
610 fontSize 16
611 fontName "Monospace"
612 autoSizePolicy "node_width"
613 anchor "t"
614 borderDistance 0.0
615 ]
616 LabelGraphics
617 [
618 text "
619 CommSubsystem class
620 CommSubsystem class UndefinedPart
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629
630 node
631 [
632 id 17
633 graphics
634 [
635 w 323.40000000000003
636 h 82
637 type "rectangle"
638 fill "#FFFFFF"
639 fill2 "#FFFFFF"
640 outline "#000000"
641 ]
642 LabelGraphics
643 [
644 text "null"
645 outline "#000000"
646 fill "#FFFFFF"
647 fontSize 16
648 fontName "Monospace"
649 autoSizePolicy "node_width"
650 anchor "t"
651 borderDistance 0.0
652 ]
653 LabelGraphics
654 [
655 text "
656 CommunicatingElement class
657 Spacecraft class
658 SmallSat class
659 CommunicatingElement class UndefinedPart
660 "
661 fontSize 14
662 fontName "Consolas"
663 alignment "left"
664 anchor "tl"
665 borderDistance 6
666 ]
667 ]
668
669 node
670 [
671 id 18
672 graphics
673 [
674 w 223.3
675 h 54
676 type "rectangle"
677 fill "#FFFFFF"
678 fill2 "#FFFFFF"
679 outline "#000000"
680 ]
681 LabelGraphics
682 [
683 text "null"
684 outline "#000000"
685 fill "#FFFFFF"
686 fontSize 16
687 fontName "Monospace"
688 autoSizePolicy "node_width"
689 anchor "t"
690 borderDistance 0.0
691 ]
692 LabelGraphics
693 [
694 text "
695 Payload class
696 InterferometryPayload class
697 "
698 fontSize 14
699 fontName "Consolas"
700 alignment "left"
701 anchor "tl"
702 borderDistance 6
703 ]
704 ]
705
706 node
707 [
708 id 19
709 graphics
710 [
711 w 323.40000000000003
712 h 82
713 type "rectangle"
714 fill "#FFFFFF"
715 fill2 "#FFFFFF"
716 outline "#000000"
717 ]
718 LabelGraphics
719 [
720 text "null"
721 outline "#000000"
722 fill "#FFFFFF"
723 fontSize 16
724 fontName "Monospace"
725 autoSizePolicy "node_width"
726 anchor "t"
727 borderDistance 0.0
728 ]
729 LabelGraphics
730 [
731 text "
732 CommunicatingElement class
733 Spacecraft class
734 SmallSat class
735 CommunicatingElement class UndefinedPart
736 "
737 fontSize 14
738 fontName "Consolas"
739 alignment "left"
740 anchor "tl"
741 borderDistance 6
742 ]
743 ]
744
745 node
746 [
747 id 20
748 graphics
749 [
750 w 223.3
751 h 54
752 type "rectangle"
753 fill "#FFFFFF"
754 fill2 "#FFFFFF"
755 outline "#000000"
756 ]
757 LabelGraphics
758 [
759 text "null"
760 outline "#000000"
761 fill "#FFFFFF"
762 fontSize 16
763 fontName "Monospace"
764 autoSizePolicy "node_width"
765 anchor "t"
766 borderDistance 0.0
767 ]
768 LabelGraphics
769 [
770 text "
771 Payload class
772 InterferometryPayload class
773 "
774 fontSize 14
775 fontName "Consolas"
776 alignment "left"
777 anchor "tl"
778 borderDistance 6
779 ]
780 ]
781
782 node
783 [
784 id 21
785 graphics
786 [
787 w 323.40000000000003
788 h 82
789 type "rectangle"
790 fill "#FFFFFF"
791 fill2 "#FFFFFF"
792 outline "#000000"
793 ]
794 LabelGraphics
795 [
796 text "null"
797 outline "#000000"
798 fill "#FFFFFF"
799 fontSize 16
800 fontName "Monospace"
801 autoSizePolicy "node_width"
802 anchor "t"
803 borderDistance 0.0
804 ]
805 LabelGraphics
806 [
807 text "
808 CommunicatingElement class
809 Spacecraft class
810 CubeSat6U class
811 CommunicatingElement class UndefinedPart
812 "
813 fontSize 14
814 fontName "Consolas"
815 alignment "left"
816 anchor "tl"
817 borderDistance 6
818 ]
819 ]
820
821 node
822 [
823 id 22
824 graphics
825 [
826 w 323.40000000000003
827 h 82
828 type "rectangle"
829 fill "#FFFFFF"
830 fill2 "#FFFFFF"
831 outline "#000000"
832 ]
833 LabelGraphics
834 [
835 text "null"
836 outline "#000000"
837 fill "#FFFFFF"
838 fontSize 16
839 fontName "Monospace"
840 autoSizePolicy "node_width"
841 anchor "t"
842 borderDistance 0.0
843 ]
844 LabelGraphics
845 [
846 text "
847 CommunicatingElement class
848 Spacecraft class
849 SmallSat class
850 CommunicatingElement class UndefinedPart
851 "
852 fontSize 14
853 fontName "Consolas"
854 alignment "left"
855 anchor "tl"
856 borderDistance 6
857 ]
858 ]
859
860 node
861 [
862 id 23
863 graphics
864 [
865 w 269.5
866 h 54
867 type "rectangle"
868 fill "#FFFFFF"
869 fill2 "#FFFFFF"
870 outline "#000000"
871 ]
872 LabelGraphics
873 [
874 text "null"
875 outline "#000000"
876 fill "#FFFFFF"
877 fontSize 16
878 fontName "Monospace"
879 autoSizePolicy "node_width"
880 anchor "t"
881 borderDistance 0.0
882 ]
883 LabelGraphics
884 [
885 text "
886 CommSubsystem class
887 CommSubsystem class UndefinedPart
888 "
889 fontSize 14
890 fontName "Consolas"
891 alignment "left"
892 anchor "tl"
893 borderDistance 6
894 ]
895 ]
896
897 node
898 [
899 id 24
900 graphics
901 [
902 w 269.5
903 h 54
904 type "rectangle"
905 fill "#FFFFFF"
906 fill2 "#FFFFFF"
907 outline "#000000"
908 ]
909 LabelGraphics
910 [
911 text "null"
912 outline "#000000"
913 fill "#FFFFFF"
914 fontSize 16
915 fontName "Monospace"
916 autoSizePolicy "node_width"
917 anchor "t"
918 borderDistance 0.0
919 ]
920 LabelGraphics
921 [
922 text "
923 CommSubsystem class
924 CommSubsystem class UndefinedPart
925 "
926 fontSize 14
927 fontName "Consolas"
928 alignment "left"
929 anchor "tl"
930 borderDistance 6
931 ]
932 ]
933
934 node
935 [
936 id 25
937 graphics
938 [
939 w 223.3
940 h 54
941 type "rectangle"
942 fill "#FFFFFF"
943 fill2 "#FFFFFF"
944 outline "#000000"
945 ]
946 LabelGraphics
947 [
948 text "null"
949 outline "#000000"
950 fill "#FFFFFF"
951 fontSize 16
952 fontName "Monospace"
953 autoSizePolicy "node_width"
954 anchor "t"
955 borderDistance 0.0
956 ]
957 LabelGraphics
958 [
959 text "
960 Payload class
961 InterferometryPayload class
962 "
963 fontSize 14
964 fontName "Consolas"
965 alignment "left"
966 anchor "tl"
967 borderDistance 6
968 ]
969 ]
970
971 node
972 [
973 id 26
974 graphics
975 [
976 w 223.3
977 h 54
978 type "rectangle"
979 fill "#FFFFFF"
980 fill2 "#FFFFFF"
981 outline "#000000"
982 ]
983 LabelGraphics
984 [
985 text "null"
986 outline "#000000"
987 fill "#FFFFFF"
988 fontSize 16
989 fontName "Monospace"
990 autoSizePolicy "node_width"
991 anchor "t"
992 borderDistance 0.0
993 ]
994 LabelGraphics
995 [
996 text "
997 Payload class
998 InterferometryPayload class
999 "
1000 fontSize 14
1001 fontName "Consolas"
1002 alignment "left"
1003 anchor "tl"
1004 borderDistance 6
1005 ]
1006 ]
1007
1008 node
1009 [
1010 id 27
1011 graphics
1012 [
1013 w 269.5
1014 h 54
1015 type "rectangle"
1016 fill "#FFFFFF"
1017 fill2 "#FFFFFF"
1018 outline "#000000"
1019 ]
1020 LabelGraphics
1021 [
1022 text "null"
1023 outline "#000000"
1024 fill "#FFFFFF"
1025 fontSize 16
1026 fontName "Monospace"
1027 autoSizePolicy "node_width"
1028 anchor "t"
1029 borderDistance 0.0
1030 ]
1031 LabelGraphics
1032 [
1033 text "
1034 CommSubsystem class
1035 CommSubsystem class UndefinedPart
1036 "
1037 fontSize 14
1038 fontName "Consolas"
1039 alignment "left"
1040 anchor "tl"
1041 borderDistance 6
1042 ]
1043 ]
1044
1045 node
1046 [
1047 id 28
1048 graphics
1049 [
1050 w 269.5
1051 h 54
1052 type "rectangle"
1053 fill "#FFFFFF"
1054 fill2 "#FFFFFF"
1055 outline "#000000"
1056 ]
1057 LabelGraphics
1058 [
1059 text "null"
1060 outline "#000000"
1061 fill "#FFFFFF"
1062 fontSize 16
1063 fontName "Monospace"
1064 autoSizePolicy "node_width"
1065 anchor "t"
1066 borderDistance 0.0
1067 ]
1068 LabelGraphics
1069 [
1070 text "
1071 CommSubsystem class
1072 CommSubsystem class UndefinedPart
1073 "
1074 fontSize 14
1075 fontName "Consolas"
1076 alignment "left"
1077 anchor "tl"
1078 borderDistance 6
1079 ]
1080 ]
1081
1082 node
1083 [
1084 id 29
1085 graphics
1086 [
1087 w 112.2
1088 h 26
1089 type "rectangle"
1090 fill "#FFFFFF"
1091 fill2 "#FFFFFF"
1092 outline "#000000"
1093 ]
1094 LabelGraphics
1095 [
1096 text "New Integers"
1097 outline "#000000"
1098 fill "#FFFFFF"
1099 fontSize 16
1100 fontName "Monospace"
1101 autoSizePolicy "node_width"
1102 anchor "t"
1103 borderDistance 0.0
1104 ]
1105 LabelGraphics
1106 [
1107 text "
1108 "
1109 fontSize 14
1110 fontName "Consolas"
1111 alignment "left"
1112 anchor "tl"
1113 borderDistance 6
1114 ]
1115 ]
1116
1117 node
1118 [
1119 id 30
1120 graphics
1121 [
1122 w 85.80000000000001
1123 h 26
1124 type "rectangle"
1125 fill "#FFFFFF"
1126 fill2 "#FFFFFF"
1127 outline "#000000"
1128 ]
1129 LabelGraphics
1130 [
1131 text "New Reals"
1132 outline "#000000"
1133 fill "#FFFFFF"
1134 fontSize 16
1135 fontName "Monospace"
1136 autoSizePolicy "node_width"
1137 anchor "t"
1138 borderDistance 0.0
1139 ]
1140 LabelGraphics
1141 [
1142 text "
1143 "
1144 fontSize 14
1145 fontName "Consolas"
1146 alignment "left"
1147 anchor "tl"
1148 borderDistance 6
1149 ]
1150 ]
1151
1152 node
1153 [
1154 id 31
1155 graphics
1156 [
1157 w 103.4
1158 h 26
1159 type "rectangle"
1160 fill "#FFFFFF"
1161 fill2 "#FFFFFF"
1162 outline "#000000"
1163 ]
1164 LabelGraphics
1165 [
1166 text "New Strings"
1167 outline "#000000"
1168 fill "#FFFFFF"
1169 fontSize 16
1170 fontName "Monospace"
1171 autoSizePolicy "node_width"
1172 anchor "t"
1173 borderDistance 0.0
1174 ]
1175 LabelGraphics
1176 [
1177 text "
1178 "
1179 fontSize 14
1180 fontName "Consolas"
1181 alignment "left"
1182 anchor "tl"
1183 borderDistance 6
1184 ]
1185 ]
1186
1187 node
1188 [
1189 id 32
1190 graphics
1191 [
1192 w 103.4
1193 h 26
1194 type "rectangle"
1195 fill "#FFFFFF"
1196 fill2 "#FFFFFF"
1197 outline "#000000"
1198 ]
1199 LabelGraphics
1200 [
1201 text "New Objects"
1202 outline "#000000"
1203 fill "#FFFFFF"
1204 fontSize 16
1205 fontName "Monospace"
1206 autoSizePolicy "node_width"
1207 anchor "t"
1208 borderDistance 0.0
1209 ]
1210 LabelGraphics
1211 [
1212 text "
1213 "
1214 fontSize 14
1215 fontName "Consolas"
1216 alignment "left"
1217 anchor "tl"
1218 borderDistance 6
1219 ]
1220 ]
1221 edge
1222 [
1223 source 6
1224 target 7
1225 graphics
1226 [
1227 fill "#000000"
1228 width 3
1229 targetArrow "standard"
1230 ]
1231 LabelGraphics
1232 [
1233 text "groundStationNetwork reference ConstellationMission"
1234 fontSize 14
1235 fontName "Consolas"
1236 configuration "AutoFlippingLabel"
1237 model "six_pos"
1238 position "thead"
1239 ]
1240 ]
1241 edge
1242 [
1243 source 6
1244 target 12
1245 graphics
1246 [
1247 fill "#000000"
1248 width 3
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "spacecraft reference ConstellationMission"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 6
1264 target 13
1265 graphics
1266 [
1267 fill "#000000"
1268 width 3
1269 targetArrow "standard"
1270 ]
1271 LabelGraphics
1272 [
1273 text "spacecraft reference ConstellationMission"
1274 fontSize 14
1275 fontName "Consolas"
1276 configuration "AutoFlippingLabel"
1277 model "six_pos"
1278 position "thead"
1279 ]
1280 ]
1281 edge
1282 [
1283 source 6
1284 target 17
1285 graphics
1286 [
1287 fill "#000000"
1288 width 3
1289 targetArrow "standard"
1290 ]
1291 LabelGraphics
1292 [
1293 text "spacecraft reference ConstellationMission"
1294 fontSize 14
1295 fontName "Consolas"
1296 configuration "AutoFlippingLabel"
1297 model "six_pos"
1298 position "thead"
1299 ]
1300 ]
1301 edge
1302 [
1303 source 6
1304 target 19
1305 graphics
1306 [
1307 fill "#000000"
1308 width 3
1309 targetArrow "standard"
1310 ]
1311 LabelGraphics
1312 [
1313 text "spacecraft reference ConstellationMission"
1314 fontSize 14
1315 fontName "Consolas"
1316 configuration "AutoFlippingLabel"
1317 model "six_pos"
1318 position "thead"
1319 ]
1320 ]
1321 edge
1322 [
1323 source 6
1324 target 21
1325 graphics
1326 [
1327 fill "#000000"
1328 width 3
1329 targetArrow "standard"
1330 ]
1331 LabelGraphics
1332 [
1333 text "spacecraft reference ConstellationMission"
1334 fontSize 14
1335 fontName "Consolas"
1336 configuration "AutoFlippingLabel"
1337 model "six_pos"
1338 position "thead"
1339 ]
1340 ]
1341 edge
1342 [
1343 source 6
1344 target 22
1345 graphics
1346 [
1347 fill "#000000"
1348 width 3
1349 targetArrow "standard"
1350 ]
1351 LabelGraphics
1352 [
1353 text "spacecraft reference ConstellationMission"
1354 fontSize 14
1355 fontName "Consolas"
1356 configuration "AutoFlippingLabel"
1357 model "six_pos"
1358 position "thead"
1359 ]
1360 ]
1361 edge
1362 [
1363 source 7
1364 target 8
1365 graphics
1366 [
1367 fill "#000000"
1368 width 3
1369 targetArrow "standard"
1370 ]
1371 LabelGraphics
1372 [
1373 text "commSubsystem reference CommunicatingElement"
1374 fontSize 14
1375 fontName "Consolas"
1376 configuration "AutoFlippingLabel"
1377 model "six_pos"
1378 position "thead"
1379 ]
1380 ]
1381 edge
1382 [
1383 source 7
1384 target 9
1385 graphics
1386 [
1387 fill "#000000"
1388 width 3
1389 targetArrow "standard"
1390 ]
1391 LabelGraphics
1392 [
1393 text "commSubsystem reference CommunicatingElement"
1394 fontSize 14
1395 fontName "Consolas"
1396 configuration "AutoFlippingLabel"
1397 model "six_pos"
1398 position "thead"
1399 ]
1400 ]
1401 edge
1402 [
1403 source 13
1404 target 14
1405 graphics
1406 [
1407 fill "#000000"
1408 width 3
1409 targetArrow "standard"
1410 ]
1411 LabelGraphics
1412 [
1413 text "commSubsystem reference CommunicatingElement"
1414 fontSize 14
1415 fontName "Consolas"
1416 configuration "AutoFlippingLabel"
1417 model "six_pos"
1418 position "thead"
1419 ]
1420 ]
1421 edge
1422 [
1423 source 12
1424 target 16
1425 graphics
1426 [
1427 fill "#000000"
1428 width 3
1429 targetArrow "standard"
1430 ]
1431 LabelGraphics
1432 [
1433 text "commSubsystem reference CommunicatingElement"
1434 fontSize 14
1435 fontName "Consolas"
1436 configuration "AutoFlippingLabel"
1437 model "six_pos"
1438 position "thead"
1439 ]
1440 ]
1441 edge
1442 [
1443 source 21
1444 target 23
1445 graphics
1446 [
1447 fill "#000000"
1448 width 3
1449 targetArrow "standard"
1450 ]
1451 LabelGraphics
1452 [
1453 text "commSubsystem reference CommunicatingElement"
1454 fontSize 14
1455 fontName "Consolas"
1456 configuration "AutoFlippingLabel"
1457 model "six_pos"
1458 position "thead"
1459 ]
1460 ]
1461 edge
1462 [
1463 source 19
1464 target 24
1465 graphics
1466 [
1467 fill "#000000"
1468 width 3
1469 targetArrow "standard"
1470 ]
1471 LabelGraphics
1472 [
1473 text "commSubsystem reference CommunicatingElement"
1474 fontSize 14
1475 fontName "Consolas"
1476 configuration "AutoFlippingLabel"
1477 model "six_pos"
1478 position "thead"
1479 ]
1480 ]
1481 edge
1482 [
1483 source 17
1484 target 27
1485 graphics
1486 [
1487 fill "#000000"
1488 width 3
1489 targetArrow "standard"
1490 ]
1491 LabelGraphics
1492 [
1493 text "commSubsystem reference CommunicatingElement"
1494 fontSize 14
1495 fontName "Consolas"
1496 configuration "AutoFlippingLabel"
1497 model "six_pos"
1498 position "thead"
1499 ]
1500 ]
1501 edge
1502 [
1503 source 22
1504 target 28
1505 graphics
1506 [
1507 fill "#000000"
1508 width 3
1509 targetArrow "standard"
1510 ]
1511 LabelGraphics
1512 [
1513 text "commSubsystem reference CommunicatingElement"
1514 fontSize 14
1515 fontName "Consolas"
1516 configuration "AutoFlippingLabel"
1517 model "six_pos"
1518 position "thead"
1519 ]
1520 ]
1521 edge
1522 [
1523 source 13
1524 target 15
1525 graphics
1526 [
1527 fill "#000000"
1528 width 3
1529 targetArrow "standard"
1530 ]
1531 LabelGraphics
1532 [
1533 text "payload reference Spacecraft"
1534 fontSize 14
1535 fontName "Consolas"
1536 configuration "AutoFlippingLabel"
1537 model "six_pos"
1538 position "thead"
1539 ]
1540 ]
1541 edge
1542 [
1543 source 12
1544 target 18
1545 graphics
1546 [
1547 fill "#000000"
1548 width 3
1549 targetArrow "standard"
1550 ]
1551 LabelGraphics
1552 [
1553 text "payload reference Spacecraft"
1554 fontSize 14
1555 fontName "Consolas"
1556 configuration "AutoFlippingLabel"
1557 model "six_pos"
1558 position "thead"
1559 ]
1560 ]
1561 edge
1562 [
1563 source 17
1564 target 20
1565 graphics
1566 [
1567 fill "#000000"
1568 width 3
1569 targetArrow "standard"
1570 ]
1571 LabelGraphics
1572 [
1573 text "payload reference Spacecraft"
1574 fontSize 14
1575 fontName "Consolas"
1576 configuration "AutoFlippingLabel"
1577 model "six_pos"
1578 position "thead"
1579 ]
1580 ]
1581 edge
1582 [
1583 source 19
1584 target 25
1585 graphics
1586 [
1587 fill "#000000"
1588 width 3
1589 targetArrow "standard"
1590 ]
1591 LabelGraphics
1592 [
1593 text "payload reference Spacecraft"
1594 fontSize 14
1595 fontName "Consolas"
1596 configuration "AutoFlippingLabel"
1597 model "six_pos"
1598 position "thead"
1599 ]
1600 ]
1601 edge
1602 [
1603 source 22
1604 target 26
1605 graphics
1606 [
1607 fill "#000000"
1608 width 3
1609 targetArrow "standard"
1610 ]
1611 LabelGraphics
1612 [
1613 text "payload reference Spacecraft"
1614 fontSize 14
1615 fontName "Consolas"
1616 configuration "AutoFlippingLabel"
1617 model "six_pos"
1618 position "thead"
1619 ]
1620 ]
1621 edge
1622 [
1623 source 8
1624 target 1
1625 graphics
1626 [
1627 fill "#000000"
1628 targetArrow "standard"
1629 ]
1630 LabelGraphics
1631 [
1632 text "band attribute CommSubsystem"
1633 fontSize 14
1634 fontName "Consolas"
1635 configuration "AutoFlippingLabel"
1636 model "six_pos"
1637 position "thead"
1638 ]
1639 ]
1640 edge
1641 [
1642 source 9
1643 target 2
1644 graphics
1645 [
1646 fill "#000000"
1647 targetArrow "standard"
1648 ]
1649 LabelGraphics
1650 [
1651 text "band attribute CommSubsystem"
1652 fontSize 14
1653 fontName "Consolas"
1654 configuration "AutoFlippingLabel"
1655 model "six_pos"
1656 position "thead"
1657 ]
1658 ]
1659 edge
1660 [
1661 source 14
1662 target 0
1663 graphics
1664 [
1665 fill "#000000"
1666 targetArrow "standard"
1667 ]
1668 LabelGraphics
1669 [
1670 text "band attribute CommSubsystem"
1671 fontSize 14
1672 fontName "Consolas"
1673 configuration "AutoFlippingLabel"
1674 model "six_pos"
1675 position "thead"
1676 ]
1677 ]
1678 edge
1679 [
1680 source 16
1681 target 2
1682 graphics
1683 [
1684 fill "#000000"
1685 targetArrow "standard"
1686 ]
1687 LabelGraphics
1688 [
1689 text "band attribute CommSubsystem"
1690 fontSize 14
1691 fontName "Consolas"
1692 configuration "AutoFlippingLabel"
1693 model "six_pos"
1694 position "thead"
1695 ]
1696 ]
1697 edge
1698 [
1699 source 23
1700 target 1
1701 graphics
1702 [
1703 fill "#000000"
1704 targetArrow "standard"
1705 ]
1706 LabelGraphics
1707 [
1708 text "band attribute CommSubsystem"
1709 fontSize 14
1710 fontName "Consolas"
1711 configuration "AutoFlippingLabel"
1712 model "six_pos"
1713 position "thead"
1714 ]
1715 ]
1716 edge
1717 [
1718 source 24
1719 target 2
1720 graphics
1721 [
1722 fill "#000000"
1723 targetArrow "standard"
1724 ]
1725 LabelGraphics
1726 [
1727 text "band attribute CommSubsystem"
1728 fontSize 14
1729 fontName "Consolas"
1730 configuration "AutoFlippingLabel"
1731 model "six_pos"
1732 position "thead"
1733 ]
1734 ]
1735 edge
1736 [
1737 source 27
1738 target 1
1739 graphics
1740 [
1741 fill "#000000"
1742 targetArrow "standard"
1743 ]
1744 LabelGraphics
1745 [
1746 text "band attribute CommSubsystem"
1747 fontSize 14
1748 fontName "Consolas"
1749 configuration "AutoFlippingLabel"
1750 model "six_pos"
1751 position "thead"
1752 ]
1753 ]
1754 edge
1755 [
1756 source 28
1757 target 0
1758 graphics
1759 [
1760 fill "#000000"
1761 targetArrow "standard"
1762 ]
1763 LabelGraphics
1764 [
1765 text "band attribute CommSubsystem"
1766 fontSize 14
1767 fontName "Consolas"
1768 configuration "AutoFlippingLabel"
1769 model "six_pos"
1770 position "thead"
1771 ]
1772 ]
1773 edge
1774 [
1775 source 8
1776 target 4
1777 graphics
1778 [
1779 fill "#000000"
1780 targetArrow "standard"
1781 ]
1782 LabelGraphics
1783 [
1784 text "gain attribute CommSubsystem"
1785 fontSize 14
1786 fontName "Consolas"
1787 configuration "AutoFlippingLabel"
1788 model "six_pos"
1789 position "thead"
1790 ]
1791 ]
1792 edge
1793 [
1794 source 9
1795 target 5
1796 graphics
1797 [
1798 fill "#000000"
1799 targetArrow "standard"
1800 ]
1801 LabelGraphics
1802 [
1803 text "gain attribute CommSubsystem"
1804 fontSize 14
1805 fontName "Consolas"
1806 configuration "AutoFlippingLabel"
1807 model "six_pos"
1808 position "thead"
1809 ]
1810 ]
1811 edge
1812 [
1813 source 14
1814 target 5
1815 graphics
1816 [
1817 fill "#000000"
1818 targetArrow "standard"
1819 ]
1820 LabelGraphics
1821 [
1822 text "gain attribute CommSubsystem"
1823 fontSize 14
1824 fontName "Consolas"
1825 configuration "AutoFlippingLabel"
1826 model "six_pos"
1827 position "thead"
1828 ]
1829 ]
1830 edge
1831 [
1832 source 16
1833 target 3
1834 graphics
1835 [
1836 fill "#000000"
1837 targetArrow "standard"
1838 ]
1839 LabelGraphics
1840 [
1841 text "gain attribute CommSubsystem"
1842 fontSize 14
1843 fontName "Consolas"
1844 configuration "AutoFlippingLabel"
1845 model "six_pos"
1846 position "thead"
1847 ]
1848 ]
1849 edge
1850 [
1851 source 24
1852 target 4
1853 graphics
1854 [
1855 fill "#000000"
1856 targetArrow "standard"
1857 ]
1858 LabelGraphics
1859 [
1860 text "gain attribute CommSubsystem"
1861 fontSize 14
1862 fontName "Consolas"
1863 configuration "AutoFlippingLabel"
1864 model "six_pos"
1865 position "thead"
1866 ]
1867 ]
1868 edge
1869 [
1870 source 23
1871 target 4
1872 graphics
1873 [
1874 fill "#000000"
1875 targetArrow "standard"
1876 ]
1877 LabelGraphics
1878 [
1879 text "gain attribute CommSubsystem"
1880 fontSize 14
1881 fontName "Consolas"
1882 configuration "AutoFlippingLabel"
1883 model "six_pos"
1884 position "thead"
1885 ]
1886 ]
1887 edge
1888 [
1889 source 27
1890 target 4
1891 graphics
1892 [
1893 fill "#000000"
1894 targetArrow "standard"
1895 ]
1896 LabelGraphics
1897 [
1898 text "gain attribute CommSubsystem"
1899 fontSize 14
1900 fontName "Consolas"
1901 configuration "AutoFlippingLabel"
1902 model "six_pos"
1903 position "thead"
1904 ]
1905 ]
1906 edge
1907 [
1908 source 28
1909 target 3
1910 graphics
1911 [
1912 fill "#000000"
1913 targetArrow "standard"
1914 ]
1915 LabelGraphics
1916 [
1917 text "gain attribute CommSubsystem"
1918 fontSize 14
1919 fontName "Consolas"
1920 configuration "AutoFlippingLabel"
1921 model "six_pos"
1922 position "thead"
1923 ]
1924 ]
1925]
1926
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.png
new file mode 100644
index 00000000..38901d43
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.png
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.xmi
new file mode 100644
index 00000000..d0a119b9
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/3.xmi
@@ -0,0 +1,30 @@
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:CubeSat6U">
8 <commSubsystem band="X" gain="MEDIUM"/>
9 </spacecraft>
10 <spacecraft xsi:type="satellite:CubeSat6U">
11 <commSubsystem gain="HIGH"/>
12 <payload xsi:type="satellite:InterferometryPayload"/>
13 </spacecraft>
14 <spacecraft xsi:type="satellite:SmallSat">
15 <commSubsystem band="X" gain="MEDIUM"/>
16 <payload xsi:type="satellite:InterferometryPayload"/>
17 </spacecraft>
18 <spacecraft xsi:type="satellite:SmallSat">
19 <commSubsystem band="Ka" gain="MEDIUM"/>
20 <payload xsi:type="satellite:InterferometryPayload"/>
21 </spacecraft>
22 <spacecraft xsi:type="satellite:SmallSat">
23 <commSubsystem band="Ka"/>
24 <payload xsi:type="satellite:InterferometryPayload"/>
25 </spacecraft>
26 <spacecraft xsi:type="satellite:SmallSat">
27 <commSubsystem/>
28 <payload xsi:type="satellite:InterferometryPayload"/>
29 </spacecraft>
30</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.gml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.gml
new file mode 100644
index 00000000..eef67577
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.gml
@@ -0,0 +1,1983 @@
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 315.70000000000005
225 h 82
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "o 1"
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 ConstellationMission class DefinedPart
246 InterferometryMission class DefinedPart
247 ConstellationMission class
248 InterferometryMission class
249 "
250 fontSize 14
251 fontName "Consolas"
252 alignment "left"
253 anchor "tl"
254 borderDistance 6
255 ]
256 ]
257
258 node
259 [
260 id 7
261 graphics
262 [
263 w 308.0
264 h 82
265 type "rectangle"
266 fill "#FFFFFF"
267 fill2 "#FFFFFF"
268 outline "#000000"
269 ]
270 LabelGraphics
271 [
272 text "o 2"
273 outline "#000000"
274 fill "#FFFFFF"
275 fontSize 16
276 fontName "Monospace"
277 autoSizePolicy "node_width"
278 anchor "t"
279 borderDistance 0.0
280 ]
281 LabelGraphics
282 [
283 text "
284 CommunicatingElement class DefinedPart
285 GroundStationNetwork class DefinedPart
286 CommunicatingElement class
287 GroundStationNetwork class
288 "
289 fontSize 14
290 fontName "Consolas"
291 alignment "left"
292 anchor "tl"
293 borderDistance 6
294 ]
295 ]
296
297 node
298 [
299 id 8
300 graphics
301 [
302 w 254.10000000000002
303 h 54
304 type "rectangle"
305 fill "#FFFFFF"
306 fill2 "#FFFFFF"
307 outline "#000000"
308 ]
309 LabelGraphics
310 [
311 text "o 3"
312 outline "#000000"
313 fill "#FFFFFF"
314 fontSize 16
315 fontName "Monospace"
316 autoSizePolicy "node_width"
317 anchor "t"
318 borderDistance 0.0
319 ]
320 LabelGraphics
321 [
322 text "
323 CommSubsystem class DefinedPart
324 CommSubsystem class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 254.10000000000002
340 h 54
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "o 4"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 CommSubsystem class DefinedPart
361 CommSubsystem class
362 "
363 fontSize 14
364 fontName "Consolas"
365 alignment "left"
366 anchor "tl"
367 borderDistance 6
368 ]
369 ]
370
371 node
372 [
373 id 10
374 graphics
375 [
376 w 41.800000000000004
377 h 26
378 type "rectangle"
379 fill "#FFFFFF"
380 fill2 "#FFFFFF"
381 outline "#000000"
382 ]
383 LabelGraphics
384 [
385 text "true"
386 outline "#000000"
387 fill "#FFFFFF"
388 fontSize 16
389 fontName "Monospace"
390 autoSizePolicy "node_width"
391 anchor "t"
392 borderDistance 0.0
393 ]
394 LabelGraphics
395 [
396 text "
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 50.6
412 h 26
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "false"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 "
433 fontSize 14
434 fontName "Consolas"
435 alignment "left"
436 anchor "tl"
437 borderDistance 6
438 ]
439 ]
440
441 node
442 [
443 id 12
444 graphics
445 [
446 w 323.40000000000003
447 h 82
448 type "rectangle"
449 fill "#FFFFFF"
450 fill2 "#FFFFFF"
451 outline "#000000"
452 ]
453 LabelGraphics
454 [
455 text "null"
456 outline "#000000"
457 fill "#FFFFFF"
458 fontSize 16
459 fontName "Monospace"
460 autoSizePolicy "node_width"
461 anchor "t"
462 borderDistance 0.0
463 ]
464 LabelGraphics
465 [
466 text "
467 CommunicatingElement class
468 Spacecraft class
469 SmallSat class
470 CommunicatingElement class UndefinedPart
471 "
472 fontSize 14
473 fontName "Consolas"
474 alignment "left"
475 anchor "tl"
476 borderDistance 6
477 ]
478 ]
479
480 node
481 [
482 id 13
483 graphics
484 [
485 w 323.40000000000003
486 h 82
487 type "rectangle"
488 fill "#FFFFFF"
489 fill2 "#FFFFFF"
490 outline "#000000"
491 ]
492 LabelGraphics
493 [
494 text "null"
495 outline "#000000"
496 fill "#FFFFFF"
497 fontSize 16
498 fontName "Monospace"
499 autoSizePolicy "node_width"
500 anchor "t"
501 borderDistance 0.0
502 ]
503 LabelGraphics
504 [
505 text "
506 CommunicatingElement class
507 Spacecraft class
508 CubeSat6U class
509 CommunicatingElement class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 54
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 CommSubsystem class
546 CommSubsystem class UndefinedPart
547 "
548 fontSize 14
549 fontName "Consolas"
550 alignment "left"
551 anchor "tl"
552 borderDistance 6
553 ]
554 ]
555
556 node
557 [
558 id 15
559 graphics
560 [
561 w 223.3
562 h 54
563 type "rectangle"
564 fill "#FFFFFF"
565 fill2 "#FFFFFF"
566 outline "#000000"
567 ]
568 LabelGraphics
569 [
570 text "null"
571 outline "#000000"
572 fill "#FFFFFF"
573 fontSize 16
574 fontName "Monospace"
575 autoSizePolicy "node_width"
576 anchor "t"
577 borderDistance 0.0
578 ]
579 LabelGraphics
580 [
581 text "
582 Payload class
583 InterferometryPayload class
584 "
585 fontSize 14
586 fontName "Consolas"
587 alignment "left"
588 anchor "tl"
589 borderDistance 6
590 ]
591 ]
592
593 node
594 [
595 id 16
596 graphics
597 [
598 w 269.5
599 h 54
600 type "rectangle"
601 fill "#FFFFFF"
602 fill2 "#FFFFFF"
603 outline "#000000"
604 ]
605 LabelGraphics
606 [
607 text "null"
608 outline "#000000"
609 fill "#FFFFFF"
610 fontSize 16
611 fontName "Monospace"
612 autoSizePolicy "node_width"
613 anchor "t"
614 borderDistance 0.0
615 ]
616 LabelGraphics
617 [
618 text "
619 CommSubsystem class
620 CommSubsystem class UndefinedPart
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629
630 node
631 [
632 id 17
633 graphics
634 [
635 w 323.40000000000003
636 h 82
637 type "rectangle"
638 fill "#FFFFFF"
639 fill2 "#FFFFFF"
640 outline "#000000"
641 ]
642 LabelGraphics
643 [
644 text "null"
645 outline "#000000"
646 fill "#FFFFFF"
647 fontSize 16
648 fontName "Monospace"
649 autoSizePolicy "node_width"
650 anchor "t"
651 borderDistance 0.0
652 ]
653 LabelGraphics
654 [
655 text "
656 CommunicatingElement class
657 Spacecraft class
658 SmallSat class
659 CommunicatingElement class UndefinedPart
660 "
661 fontSize 14
662 fontName "Consolas"
663 alignment "left"
664 anchor "tl"
665 borderDistance 6
666 ]
667 ]
668
669 node
670 [
671 id 18
672 graphics
673 [
674 w 223.3
675 h 54
676 type "rectangle"
677 fill "#FFFFFF"
678 fill2 "#FFFFFF"
679 outline "#000000"
680 ]
681 LabelGraphics
682 [
683 text "null"
684 outline "#000000"
685 fill "#FFFFFF"
686 fontSize 16
687 fontName "Monospace"
688 autoSizePolicy "node_width"
689 anchor "t"
690 borderDistance 0.0
691 ]
692 LabelGraphics
693 [
694 text "
695 Payload class
696 InterferometryPayload class
697 "
698 fontSize 14
699 fontName "Consolas"
700 alignment "left"
701 anchor "tl"
702 borderDistance 6
703 ]
704 ]
705
706 node
707 [
708 id 19
709 graphics
710 [
711 w 323.40000000000003
712 h 82
713 type "rectangle"
714 fill "#FFFFFF"
715 fill2 "#FFFFFF"
716 outline "#000000"
717 ]
718 LabelGraphics
719 [
720 text "null"
721 outline "#000000"
722 fill "#FFFFFF"
723 fontSize 16
724 fontName "Monospace"
725 autoSizePolicy "node_width"
726 anchor "t"
727 borderDistance 0.0
728 ]
729 LabelGraphics
730 [
731 text "
732 CommunicatingElement class
733 Spacecraft class
734 SmallSat class
735 CommunicatingElement class UndefinedPart
736 "
737 fontSize 14
738 fontName "Consolas"
739 alignment "left"
740 anchor "tl"
741 borderDistance 6
742 ]
743 ]
744
745 node
746 [
747 id 20
748 graphics
749 [
750 w 223.3
751 h 54
752 type "rectangle"
753 fill "#FFFFFF"
754 fill2 "#FFFFFF"
755 outline "#000000"
756 ]
757 LabelGraphics
758 [
759 text "null"
760 outline "#000000"
761 fill "#FFFFFF"
762 fontSize 16
763 fontName "Monospace"
764 autoSizePolicy "node_width"
765 anchor "t"
766 borderDistance 0.0
767 ]
768 LabelGraphics
769 [
770 text "
771 Payload class
772 InterferometryPayload class
773 "
774 fontSize 14
775 fontName "Consolas"
776 alignment "left"
777 anchor "tl"
778 borderDistance 6
779 ]
780 ]
781
782 node
783 [
784 id 21
785 graphics
786 [
787 w 323.40000000000003
788 h 82
789 type "rectangle"
790 fill "#FFFFFF"
791 fill2 "#FFFFFF"
792 outline "#000000"
793 ]
794 LabelGraphics
795 [
796 text "null"
797 outline "#000000"
798 fill "#FFFFFF"
799 fontSize 16
800 fontName "Monospace"
801 autoSizePolicy "node_width"
802 anchor "t"
803 borderDistance 0.0
804 ]
805 LabelGraphics
806 [
807 text "
808 CommunicatingElement class
809 Spacecraft class
810 CubeSat6U class
811 CommunicatingElement class UndefinedPart
812 "
813 fontSize 14
814 fontName "Consolas"
815 alignment "left"
816 anchor "tl"
817 borderDistance 6
818 ]
819 ]
820
821 node
822 [
823 id 22
824 graphics
825 [
826 w 323.40000000000003
827 h 82
828 type "rectangle"
829 fill "#FFFFFF"
830 fill2 "#FFFFFF"
831 outline "#000000"
832 ]
833 LabelGraphics
834 [
835 text "null"
836 outline "#000000"
837 fill "#FFFFFF"
838 fontSize 16
839 fontName "Monospace"
840 autoSizePolicy "node_width"
841 anchor "t"
842 borderDistance 0.0
843 ]
844 LabelGraphics
845 [
846 text "
847 CommunicatingElement class
848 Spacecraft class
849 SmallSat class
850 CommunicatingElement class UndefinedPart
851 "
852 fontSize 14
853 fontName "Consolas"
854 alignment "left"
855 anchor "tl"
856 borderDistance 6
857 ]
858 ]
859
860 node
861 [
862 id 23
863 graphics
864 [
865 w 269.5
866 h 54
867 type "rectangle"
868 fill "#FFFFFF"
869 fill2 "#FFFFFF"
870 outline "#000000"
871 ]
872 LabelGraphics
873 [
874 text "null"
875 outline "#000000"
876 fill "#FFFFFF"
877 fontSize 16
878 fontName "Monospace"
879 autoSizePolicy "node_width"
880 anchor "t"
881 borderDistance 0.0
882 ]
883 LabelGraphics
884 [
885 text "
886 CommSubsystem class
887 CommSubsystem class UndefinedPart
888 "
889 fontSize 14
890 fontName "Consolas"
891 alignment "left"
892 anchor "tl"
893 borderDistance 6
894 ]
895 ]
896
897 node
898 [
899 id 24
900 graphics
901 [
902 w 269.5
903 h 54
904 type "rectangle"
905 fill "#FFFFFF"
906 fill2 "#FFFFFF"
907 outline "#000000"
908 ]
909 LabelGraphics
910 [
911 text "null"
912 outline "#000000"
913 fill "#FFFFFF"
914 fontSize 16
915 fontName "Monospace"
916 autoSizePolicy "node_width"
917 anchor "t"
918 borderDistance 0.0
919 ]
920 LabelGraphics
921 [
922 text "
923 CommSubsystem class
924 CommSubsystem class UndefinedPart
925 "
926 fontSize 14
927 fontName "Consolas"
928 alignment "left"
929 anchor "tl"
930 borderDistance 6
931 ]
932 ]
933
934 node
935 [
936 id 25
937 graphics
938 [
939 w 223.3
940 h 54
941 type "rectangle"
942 fill "#FFFFFF"
943 fill2 "#FFFFFF"
944 outline "#000000"
945 ]
946 LabelGraphics
947 [
948 text "null"
949 outline "#000000"
950 fill "#FFFFFF"
951 fontSize 16
952 fontName "Monospace"
953 autoSizePolicy "node_width"
954 anchor "t"
955 borderDistance 0.0
956 ]
957 LabelGraphics
958 [
959 text "
960 Payload class
961 InterferometryPayload class
962 "
963 fontSize 14
964 fontName "Consolas"
965 alignment "left"
966 anchor "tl"
967 borderDistance 6
968 ]
969 ]
970
971 node
972 [
973 id 26
974 graphics
975 [
976 w 223.3
977 h 54
978 type "rectangle"
979 fill "#FFFFFF"
980 fill2 "#FFFFFF"
981 outline "#000000"
982 ]
983 LabelGraphics
984 [
985 text "null"
986 outline "#000000"
987 fill "#FFFFFF"
988 fontSize 16
989 fontName "Monospace"
990 autoSizePolicy "node_width"
991 anchor "t"
992 borderDistance 0.0
993 ]
994 LabelGraphics
995 [
996 text "
997 Payload class
998 InterferometryPayload class
999 "
1000 fontSize 14
1001 fontName "Consolas"
1002 alignment "left"
1003 anchor "tl"
1004 borderDistance 6
1005 ]
1006 ]
1007
1008 node
1009 [
1010 id 27
1011 graphics
1012 [
1013 w 269.5
1014 h 54
1015 type "rectangle"
1016 fill "#FFFFFF"
1017 fill2 "#FFFFFF"
1018 outline "#000000"
1019 ]
1020 LabelGraphics
1021 [
1022 text "null"
1023 outline "#000000"
1024 fill "#FFFFFF"
1025 fontSize 16
1026 fontName "Monospace"
1027 autoSizePolicy "node_width"
1028 anchor "t"
1029 borderDistance 0.0
1030 ]
1031 LabelGraphics
1032 [
1033 text "
1034 CommSubsystem class
1035 CommSubsystem class UndefinedPart
1036 "
1037 fontSize 14
1038 fontName "Consolas"
1039 alignment "left"
1040 anchor "tl"
1041 borderDistance 6
1042 ]
1043 ]
1044
1045 node
1046 [
1047 id 28
1048 graphics
1049 [
1050 w 269.5
1051 h 54
1052 type "rectangle"
1053 fill "#FFFFFF"
1054 fill2 "#FFFFFF"
1055 outline "#000000"
1056 ]
1057 LabelGraphics
1058 [
1059 text "null"
1060 outline "#000000"
1061 fill "#FFFFFF"
1062 fontSize 16
1063 fontName "Monospace"
1064 autoSizePolicy "node_width"
1065 anchor "t"
1066 borderDistance 0.0
1067 ]
1068 LabelGraphics
1069 [
1070 text "
1071 CommSubsystem class
1072 CommSubsystem class UndefinedPart
1073 "
1074 fontSize 14
1075 fontName "Consolas"
1076 alignment "left"
1077 anchor "tl"
1078 borderDistance 6
1079 ]
1080 ]
1081
1082 node
1083 [
1084 id 29
1085 graphics
1086 [
1087 w 223.3
1088 h 54
1089 type "rectangle"
1090 fill "#FFFFFF"
1091 fill2 "#FFFFFF"
1092 outline "#000000"
1093 ]
1094 LabelGraphics
1095 [
1096 text "null"
1097 outline "#000000"
1098 fill "#FFFFFF"
1099 fontSize 16
1100 fontName "Monospace"
1101 autoSizePolicy "node_width"
1102 anchor "t"
1103 borderDistance 0.0
1104 ]
1105 LabelGraphics
1106 [
1107 text "
1108 Payload class
1109 InterferometryPayload class
1110 "
1111 fontSize 14
1112 fontName "Consolas"
1113 alignment "left"
1114 anchor "tl"
1115 borderDistance 6
1116 ]
1117 ]
1118
1119 node
1120 [
1121 id 30
1122 graphics
1123 [
1124 w 112.2
1125 h 26
1126 type "rectangle"
1127 fill "#FFFFFF"
1128 fill2 "#FFFFFF"
1129 outline "#000000"
1130 ]
1131 LabelGraphics
1132 [
1133 text "New Integers"
1134 outline "#000000"
1135 fill "#FFFFFF"
1136 fontSize 16
1137 fontName "Monospace"
1138 autoSizePolicy "node_width"
1139 anchor "t"
1140 borderDistance 0.0
1141 ]
1142 LabelGraphics
1143 [
1144 text "
1145 "
1146 fontSize 14
1147 fontName "Consolas"
1148 alignment "left"
1149 anchor "tl"
1150 borderDistance 6
1151 ]
1152 ]
1153
1154 node
1155 [
1156 id 31
1157 graphics
1158 [
1159 w 85.80000000000001
1160 h 26
1161 type "rectangle"
1162 fill "#FFFFFF"
1163 fill2 "#FFFFFF"
1164 outline "#000000"
1165 ]
1166 LabelGraphics
1167 [
1168 text "New Reals"
1169 outline "#000000"
1170 fill "#FFFFFF"
1171 fontSize 16
1172 fontName "Monospace"
1173 autoSizePolicy "node_width"
1174 anchor "t"
1175 borderDistance 0.0
1176 ]
1177 LabelGraphics
1178 [
1179 text "
1180 "
1181 fontSize 14
1182 fontName "Consolas"
1183 alignment "left"
1184 anchor "tl"
1185 borderDistance 6
1186 ]
1187 ]
1188
1189 node
1190 [
1191 id 32
1192 graphics
1193 [
1194 w 103.4
1195 h 26
1196 type "rectangle"
1197 fill "#FFFFFF"
1198 fill2 "#FFFFFF"
1199 outline "#000000"
1200 ]
1201 LabelGraphics
1202 [
1203 text "New Strings"
1204 outline "#000000"
1205 fill "#FFFFFF"
1206 fontSize 16
1207 fontName "Monospace"
1208 autoSizePolicy "node_width"
1209 anchor "t"
1210 borderDistance 0.0
1211 ]
1212 LabelGraphics
1213 [
1214 text "
1215 "
1216 fontSize 14
1217 fontName "Consolas"
1218 alignment "left"
1219 anchor "tl"
1220 borderDistance 6
1221 ]
1222 ]
1223
1224 node
1225 [
1226 id 33
1227 graphics
1228 [
1229 w 103.4
1230 h 26
1231 type "rectangle"
1232 fill "#FFFFFF"
1233 fill2 "#FFFFFF"
1234 outline "#000000"
1235 ]
1236 LabelGraphics
1237 [
1238 text "New Objects"
1239 outline "#000000"
1240 fill "#FFFFFF"
1241 fontSize 16
1242 fontName "Monospace"
1243 autoSizePolicy "node_width"
1244 anchor "t"
1245 borderDistance 0.0
1246 ]
1247 LabelGraphics
1248 [
1249 text "
1250 "
1251 fontSize 14
1252 fontName "Consolas"
1253 alignment "left"
1254 anchor "tl"
1255 borderDistance 6
1256 ]
1257 ]
1258 edge
1259 [
1260 source 6
1261 target 7
1262 graphics
1263 [
1264 fill "#000000"
1265 width 3
1266 targetArrow "standard"
1267 ]
1268 LabelGraphics
1269 [
1270 text "groundStationNetwork reference ConstellationMission"
1271 fontSize 14
1272 fontName "Consolas"
1273 configuration "AutoFlippingLabel"
1274 model "six_pos"
1275 position "thead"
1276 ]
1277 ]
1278 edge
1279 [
1280 source 6
1281 target 12
1282 graphics
1283 [
1284 fill "#000000"
1285 width 3
1286 targetArrow "standard"
1287 ]
1288 LabelGraphics
1289 [
1290 text "spacecraft reference ConstellationMission"
1291 fontSize 14
1292 fontName "Consolas"
1293 configuration "AutoFlippingLabel"
1294 model "six_pos"
1295 position "thead"
1296 ]
1297 ]
1298 edge
1299 [
1300 source 6
1301 target 13
1302 graphics
1303 [
1304 fill "#000000"
1305 width 3
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "spacecraft reference ConstellationMission"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 6
1321 target 17
1322 graphics
1323 [
1324 fill "#000000"
1325 width 3
1326 targetArrow "standard"
1327 ]
1328 LabelGraphics
1329 [
1330 text "spacecraft reference ConstellationMission"
1331 fontSize 14
1332 fontName "Consolas"
1333 configuration "AutoFlippingLabel"
1334 model "six_pos"
1335 position "thead"
1336 ]
1337 ]
1338 edge
1339 [
1340 source 6
1341 target 19
1342 graphics
1343 [
1344 fill "#000000"
1345 width 3
1346 targetArrow "standard"
1347 ]
1348 LabelGraphics
1349 [
1350 text "spacecraft reference ConstellationMission"
1351 fontSize 14
1352 fontName "Consolas"
1353 configuration "AutoFlippingLabel"
1354 model "six_pos"
1355 position "thead"
1356 ]
1357 ]
1358 edge
1359 [
1360 source 6
1361 target 21
1362 graphics
1363 [
1364 fill "#000000"
1365 width 3
1366 targetArrow "standard"
1367 ]
1368 LabelGraphics
1369 [
1370 text "spacecraft reference ConstellationMission"
1371 fontSize 14
1372 fontName "Consolas"
1373 configuration "AutoFlippingLabel"
1374 model "six_pos"
1375 position "thead"
1376 ]
1377 ]
1378 edge
1379 [
1380 source 6
1381 target 22
1382 graphics
1383 [
1384 fill "#000000"
1385 width 3
1386 targetArrow "standard"
1387 ]
1388 LabelGraphics
1389 [
1390 text "spacecraft reference ConstellationMission"
1391 fontSize 14
1392 fontName "Consolas"
1393 configuration "AutoFlippingLabel"
1394 model "six_pos"
1395 position "thead"
1396 ]
1397 ]
1398 edge
1399 [
1400 source 7
1401 target 8
1402 graphics
1403 [
1404 fill "#000000"
1405 width 3
1406 targetArrow "standard"
1407 ]
1408 LabelGraphics
1409 [
1410 text "commSubsystem reference CommunicatingElement"
1411 fontSize 14
1412 fontName "Consolas"
1413 configuration "AutoFlippingLabel"
1414 model "six_pos"
1415 position "thead"
1416 ]
1417 ]
1418 edge
1419 [
1420 source 7
1421 target 9
1422 graphics
1423 [
1424 fill "#000000"
1425 width 3
1426 targetArrow "standard"
1427 ]
1428 LabelGraphics
1429 [
1430 text "commSubsystem reference CommunicatingElement"
1431 fontSize 14
1432 fontName "Consolas"
1433 configuration "AutoFlippingLabel"
1434 model "six_pos"
1435 position "thead"
1436 ]
1437 ]
1438 edge
1439 [
1440 source 13
1441 target 14
1442 graphics
1443 [
1444 fill "#000000"
1445 width 3
1446 targetArrow "standard"
1447 ]
1448 LabelGraphics
1449 [
1450 text "commSubsystem reference CommunicatingElement"
1451 fontSize 14
1452 fontName "Consolas"
1453 configuration "AutoFlippingLabel"
1454 model "six_pos"
1455 position "thead"
1456 ]
1457 ]
1458 edge
1459 [
1460 source 12
1461 target 16
1462 graphics
1463 [
1464 fill "#000000"
1465 width 3
1466 targetArrow "standard"
1467 ]
1468 LabelGraphics
1469 [
1470 text "commSubsystem reference CommunicatingElement"
1471 fontSize 14
1472 fontName "Consolas"
1473 configuration "AutoFlippingLabel"
1474 model "six_pos"
1475 position "thead"
1476 ]
1477 ]
1478 edge
1479 [
1480 source 21
1481 target 23
1482 graphics
1483 [
1484 fill "#000000"
1485 width 3
1486 targetArrow "standard"
1487 ]
1488 LabelGraphics
1489 [
1490 text "commSubsystem reference CommunicatingElement"
1491 fontSize 14
1492 fontName "Consolas"
1493 configuration "AutoFlippingLabel"
1494 model "six_pos"
1495 position "thead"
1496 ]
1497 ]
1498 edge
1499 [
1500 source 19
1501 target 24
1502 graphics
1503 [
1504 fill "#000000"
1505 width 3
1506 targetArrow "standard"
1507 ]
1508 LabelGraphics
1509 [
1510 text "commSubsystem reference CommunicatingElement"
1511 fontSize 14
1512 fontName "Consolas"
1513 configuration "AutoFlippingLabel"
1514 model "six_pos"
1515 position "thead"
1516 ]
1517 ]
1518 edge
1519 [
1520 source 17
1521 target 27
1522 graphics
1523 [
1524 fill "#000000"
1525 width 3
1526 targetArrow "standard"
1527 ]
1528 LabelGraphics
1529 [
1530 text "commSubsystem reference CommunicatingElement"
1531 fontSize 14
1532 fontName "Consolas"
1533 configuration "AutoFlippingLabel"
1534 model "six_pos"
1535 position "thead"
1536 ]
1537 ]
1538 edge
1539 [
1540 source 22
1541 target 28
1542 graphics
1543 [
1544 fill "#000000"
1545 width 3
1546 targetArrow "standard"
1547 ]
1548 LabelGraphics
1549 [
1550 text "commSubsystem reference CommunicatingElement"
1551 fontSize 14
1552 fontName "Consolas"
1553 configuration "AutoFlippingLabel"
1554 model "six_pos"
1555 position "thead"
1556 ]
1557 ]
1558 edge
1559 [
1560 source 13
1561 target 15
1562 graphics
1563 [
1564 fill "#000000"
1565 width 3
1566 targetArrow "standard"
1567 ]
1568 LabelGraphics
1569 [
1570 text "payload reference Spacecraft"
1571 fontSize 14
1572 fontName "Consolas"
1573 configuration "AutoFlippingLabel"
1574 model "six_pos"
1575 position "thead"
1576 ]
1577 ]
1578 edge
1579 [
1580 source 12
1581 target 18
1582 graphics
1583 [
1584 fill "#000000"
1585 width 3
1586 targetArrow "standard"
1587 ]
1588 LabelGraphics
1589 [
1590 text "payload reference Spacecraft"
1591 fontSize 14
1592 fontName "Consolas"
1593 configuration "AutoFlippingLabel"
1594 model "six_pos"
1595 position "thead"
1596 ]
1597 ]
1598 edge
1599 [
1600 source 17
1601 target 20
1602 graphics
1603 [
1604 fill "#000000"
1605 width 3
1606 targetArrow "standard"
1607 ]
1608 LabelGraphics
1609 [
1610 text "payload reference Spacecraft"
1611 fontSize 14
1612 fontName "Consolas"
1613 configuration "AutoFlippingLabel"
1614 model "six_pos"
1615 position "thead"
1616 ]
1617 ]
1618 edge
1619 [
1620 source 19
1621 target 25
1622 graphics
1623 [
1624 fill "#000000"
1625 width 3
1626 targetArrow "standard"
1627 ]
1628 LabelGraphics
1629 [
1630 text "payload reference Spacecraft"
1631 fontSize 14
1632 fontName "Consolas"
1633 configuration "AutoFlippingLabel"
1634 model "six_pos"
1635 position "thead"
1636 ]
1637 ]
1638 edge
1639 [
1640 source 22
1641 target 26
1642 graphics
1643 [
1644 fill "#000000"
1645 width 3
1646 targetArrow "standard"
1647 ]
1648 LabelGraphics
1649 [
1650 text "payload reference Spacecraft"
1651 fontSize 14
1652 fontName "Consolas"
1653 configuration "AutoFlippingLabel"
1654 model "six_pos"
1655 position "thead"
1656 ]
1657 ]
1658 edge
1659 [
1660 source 21
1661 target 29
1662 graphics
1663 [
1664 fill "#000000"
1665 width 3
1666 targetArrow "standard"
1667 ]
1668 LabelGraphics
1669 [
1670 text "payload reference Spacecraft"
1671 fontSize 14
1672 fontName "Consolas"
1673 configuration "AutoFlippingLabel"
1674 model "six_pos"
1675 position "thead"
1676 ]
1677 ]
1678 edge
1679 [
1680 source 8
1681 target 1
1682 graphics
1683 [
1684 fill "#000000"
1685 targetArrow "standard"
1686 ]
1687 LabelGraphics
1688 [
1689 text "band attribute CommSubsystem"
1690 fontSize 14
1691 fontName "Consolas"
1692 configuration "AutoFlippingLabel"
1693 model "six_pos"
1694 position "thead"
1695 ]
1696 ]
1697 edge
1698 [
1699 source 9
1700 target 2
1701 graphics
1702 [
1703 fill "#000000"
1704 targetArrow "standard"
1705 ]
1706 LabelGraphics
1707 [
1708 text "band attribute CommSubsystem"
1709 fontSize 14
1710 fontName "Consolas"
1711 configuration "AutoFlippingLabel"
1712 model "six_pos"
1713 position "thead"
1714 ]
1715 ]
1716 edge
1717 [
1718 source 14
1719 target 0
1720 graphics
1721 [
1722 fill "#000000"
1723 targetArrow "standard"
1724 ]
1725 LabelGraphics
1726 [
1727 text "band attribute CommSubsystem"
1728 fontSize 14
1729 fontName "Consolas"
1730 configuration "AutoFlippingLabel"
1731 model "six_pos"
1732 position "thead"
1733 ]
1734 ]
1735 edge
1736 [
1737 source 16
1738 target 2
1739 graphics
1740 [
1741 fill "#000000"
1742 targetArrow "standard"
1743 ]
1744 LabelGraphics
1745 [
1746 text "band attribute CommSubsystem"
1747 fontSize 14
1748 fontName "Consolas"
1749 configuration "AutoFlippingLabel"
1750 model "six_pos"
1751 position "thead"
1752 ]
1753 ]
1754 edge
1755 [
1756 source 23
1757 target 1
1758 graphics
1759 [
1760 fill "#000000"
1761 targetArrow "standard"
1762 ]
1763 LabelGraphics
1764 [
1765 text "band attribute CommSubsystem"
1766 fontSize 14
1767 fontName "Consolas"
1768 configuration "AutoFlippingLabel"
1769 model "six_pos"
1770 position "thead"
1771 ]
1772 ]
1773 edge
1774 [
1775 source 24
1776 target 2
1777 graphics
1778 [
1779 fill "#000000"
1780 targetArrow "standard"
1781 ]
1782 LabelGraphics
1783 [
1784 text "band attribute CommSubsystem"
1785 fontSize 14
1786 fontName "Consolas"
1787 configuration "AutoFlippingLabel"
1788 model "six_pos"
1789 position "thead"
1790 ]
1791 ]
1792 edge
1793 [
1794 source 27
1795 target 1
1796 graphics
1797 [
1798 fill "#000000"
1799 targetArrow "standard"
1800 ]
1801 LabelGraphics
1802 [
1803 text "band attribute CommSubsystem"
1804 fontSize 14
1805 fontName "Consolas"
1806 configuration "AutoFlippingLabel"
1807 model "six_pos"
1808 position "thead"
1809 ]
1810 ]
1811 edge
1812 [
1813 source 28
1814 target 0
1815 graphics
1816 [
1817 fill "#000000"
1818 targetArrow "standard"
1819 ]
1820 LabelGraphics
1821 [
1822 text "band attribute CommSubsystem"
1823 fontSize 14
1824 fontName "Consolas"
1825 configuration "AutoFlippingLabel"
1826 model "six_pos"
1827 position "thead"
1828 ]
1829 ]
1830 edge
1831 [
1832 source 8
1833 target 4
1834 graphics
1835 [
1836 fill "#000000"
1837 targetArrow "standard"
1838 ]
1839 LabelGraphics
1840 [
1841 text "gain attribute CommSubsystem"
1842 fontSize 14
1843 fontName "Consolas"
1844 configuration "AutoFlippingLabel"
1845 model "six_pos"
1846 position "thead"
1847 ]
1848 ]
1849 edge
1850 [
1851 source 9
1852 target 5
1853 graphics
1854 [
1855 fill "#000000"
1856 targetArrow "standard"
1857 ]
1858 LabelGraphics
1859 [
1860 text "gain attribute CommSubsystem"
1861 fontSize 14
1862 fontName "Consolas"
1863 configuration "AutoFlippingLabel"
1864 model "six_pos"
1865 position "thead"
1866 ]
1867 ]
1868 edge
1869 [
1870 source 14
1871 target 5
1872 graphics
1873 [
1874 fill "#000000"
1875 targetArrow "standard"
1876 ]
1877 LabelGraphics
1878 [
1879 text "gain attribute CommSubsystem"
1880 fontSize 14
1881 fontName "Consolas"
1882 configuration "AutoFlippingLabel"
1883 model "six_pos"
1884 position "thead"
1885 ]
1886 ]
1887 edge
1888 [
1889 source 16
1890 target 3
1891 graphics
1892 [
1893 fill "#000000"
1894 targetArrow "standard"
1895 ]
1896 LabelGraphics
1897 [
1898 text "gain attribute CommSubsystem"
1899 fontSize 14
1900 fontName "Consolas"
1901 configuration "AutoFlippingLabel"
1902 model "six_pos"
1903 position "thead"
1904 ]
1905 ]
1906 edge
1907 [
1908 source 24
1909 target 4
1910 graphics
1911 [
1912 fill "#000000"
1913 targetArrow "standard"
1914 ]
1915 LabelGraphics
1916 [
1917 text "gain attribute CommSubsystem"
1918 fontSize 14
1919 fontName "Consolas"
1920 configuration "AutoFlippingLabel"
1921 model "six_pos"
1922 position "thead"
1923 ]
1924 ]
1925 edge
1926 [
1927 source 23
1928 target 4
1929 graphics
1930 [
1931 fill "#000000"
1932 targetArrow "standard"
1933 ]
1934 LabelGraphics
1935 [
1936 text "gain attribute CommSubsystem"
1937 fontSize 14
1938 fontName "Consolas"
1939 configuration "AutoFlippingLabel"
1940 model "six_pos"
1941 position "thead"
1942 ]
1943 ]
1944 edge
1945 [
1946 source 27
1947 target 4
1948 graphics
1949 [
1950 fill "#000000"
1951 targetArrow "standard"
1952 ]
1953 LabelGraphics
1954 [
1955 text "gain attribute CommSubsystem"
1956 fontSize 14
1957 fontName "Consolas"
1958 configuration "AutoFlippingLabel"
1959 model "six_pos"
1960 position "thead"
1961 ]
1962 ]
1963 edge
1964 [
1965 source 28
1966 target 3
1967 graphics
1968 [
1969 fill "#000000"
1970 targetArrow "standard"
1971 ]
1972 LabelGraphics
1973 [
1974 text "gain attribute CommSubsystem"
1975 fontSize 14
1976 fontName "Consolas"
1977 configuration "AutoFlippingLabel"
1978 model "six_pos"
1979 position "thead"
1980 ]
1981 ]
1982]
1983
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.png
new file mode 100644
index 00000000..e378a9fb
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.png
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.xmi
new file mode 100644
index 00000000..4dcf0982
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/4.xmi
@@ -0,0 +1,31 @@
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:CubeSat6U">
8 <commSubsystem band="X" gain="MEDIUM"/>
9 <payload xsi:type="satellite:InterferometryPayload"/>
10 </spacecraft>
11 <spacecraft xsi:type="satellite:CubeSat6U">
12 <commSubsystem gain="HIGH"/>
13 <payload xsi:type="satellite:InterferometryPayload"/>
14 </spacecraft>
15 <spacecraft xsi:type="satellite:SmallSat">
16 <commSubsystem band="X" gain="MEDIUM"/>
17 <payload xsi:type="satellite:InterferometryPayload"/>
18 </spacecraft>
19 <spacecraft xsi:type="satellite:SmallSat">
20 <commSubsystem band="Ka" gain="MEDIUM"/>
21 <payload xsi:type="satellite:InterferometryPayload"/>
22 </spacecraft>
23 <spacecraft xsi:type="satellite:SmallSat">
24 <commSubsystem band="Ka"/>
25 <payload xsi:type="satellite:InterferometryPayload"/>
26 </spacecraft>
27 <spacecraft xsi:type="satellite:SmallSat">
28 <commSubsystem/>
29 <payload xsi:type="satellite:InterferometryPayload"/>
30 </spacecraft>
31</satellite:InterferometryMission>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.gml b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.gml
new file mode 100644
index 00000000..3f21efdc
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.gml
@@ -0,0 +1,1926 @@
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 315.70000000000005
225 h 82
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text "o 1"
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 ConstellationMission class DefinedPart
246 InterferometryMission class DefinedPart
247 ConstellationMission class
248 InterferometryMission class
249 "
250 fontSize 14
251 fontName "Consolas"
252 alignment "left"
253 anchor "tl"
254 borderDistance 6
255 ]
256 ]
257
258 node
259 [
260 id 7
261 graphics
262 [
263 w 308.0
264 h 82
265 type "rectangle"
266 fill "#FFFFFF"
267 fill2 "#FFFFFF"
268 outline "#000000"
269 ]
270 LabelGraphics
271 [
272 text "o 2"
273 outline "#000000"
274 fill "#FFFFFF"
275 fontSize 16
276 fontName "Monospace"
277 autoSizePolicy "node_width"
278 anchor "t"
279 borderDistance 0.0
280 ]
281 LabelGraphics
282 [
283 text "
284 CommunicatingElement class DefinedPart
285 GroundStationNetwork class DefinedPart
286 CommunicatingElement class
287 GroundStationNetwork class
288 "
289 fontSize 14
290 fontName "Consolas"
291 alignment "left"
292 anchor "tl"
293 borderDistance 6
294 ]
295 ]
296
297 node
298 [
299 id 8
300 graphics
301 [
302 w 254.10000000000002
303 h 54
304 type "rectangle"
305 fill "#FFFFFF"
306 fill2 "#FFFFFF"
307 outline "#000000"
308 ]
309 LabelGraphics
310 [
311 text "o 3"
312 outline "#000000"
313 fill "#FFFFFF"
314 fontSize 16
315 fontName "Monospace"
316 autoSizePolicy "node_width"
317 anchor "t"
318 borderDistance 0.0
319 ]
320 LabelGraphics
321 [
322 text "
323 CommSubsystem class DefinedPart
324 CommSubsystem class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 254.10000000000002
340 h 54
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "o 4"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 CommSubsystem class DefinedPart
361 CommSubsystem class
362 "
363 fontSize 14
364 fontName "Consolas"
365 alignment "left"
366 anchor "tl"
367 borderDistance 6
368 ]
369 ]
370
371 node
372 [
373 id 10
374 graphics
375 [
376 w 41.800000000000004
377 h 26
378 type "rectangle"
379 fill "#FFFFFF"
380 fill2 "#FFFFFF"
381 outline "#000000"
382 ]
383 LabelGraphics
384 [
385 text "true"
386 outline "#000000"
387 fill "#FFFFFF"
388 fontSize 16
389 fontName "Monospace"
390 autoSizePolicy "node_width"
391 anchor "t"
392 borderDistance 0.0
393 ]
394 LabelGraphics
395 [
396 text "
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 50.6
412 h 26
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "false"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 "
433 fontSize 14
434 fontName "Consolas"
435 alignment "left"
436 anchor "tl"
437 borderDistance 6
438 ]
439 ]
440
441 node
442 [
443 id 12
444 graphics
445 [
446 w 323.40000000000003
447 h 82
448 type "rectangle"
449 fill "#FFFFFF"
450 fill2 "#FFFFFF"
451 outline "#000000"
452 ]
453 LabelGraphics
454 [
455 text "null"
456 outline "#000000"
457 fill "#FFFFFF"
458 fontSize 16
459 fontName "Monospace"
460 autoSizePolicy "node_width"
461 anchor "t"
462 borderDistance 0.0
463 ]
464 LabelGraphics
465 [
466 text "
467 CommunicatingElement class
468 Spacecraft class
469 SmallSat class
470 CommunicatingElement class UndefinedPart
471 "
472 fontSize 14
473 fontName "Consolas"
474 alignment "left"
475 anchor "tl"
476 borderDistance 6
477 ]
478 ]
479
480 node
481 [
482 id 13
483 graphics
484 [
485 w 323.40000000000003
486 h 82
487 type "rectangle"
488 fill "#FFFFFF"
489 fill2 "#FFFFFF"
490 outline "#000000"
491 ]
492 LabelGraphics
493 [
494 text "null"
495 outline "#000000"
496 fill "#FFFFFF"
497 fontSize 16
498 fontName "Monospace"
499 autoSizePolicy "node_width"
500 anchor "t"
501 borderDistance 0.0
502 ]
503 LabelGraphics
504 [
505 text "
506 CommunicatingElement class
507 Spacecraft class
508 CubeSat6U class
509 CommunicatingElement class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 54
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 CommSubsystem class
546 CommSubsystem class UndefinedPart
547 "
548 fontSize 14
549 fontName "Consolas"
550 alignment "left"
551 anchor "tl"
552 borderDistance 6
553 ]
554 ]
555
556 node
557 [
558 id 15
559 graphics
560 [
561 w 223.3
562 h 54
563 type "rectangle"
564 fill "#FFFFFF"
565 fill2 "#FFFFFF"
566 outline "#000000"
567 ]
568 LabelGraphics
569 [
570 text "null"
571 outline "#000000"
572 fill "#FFFFFF"
573 fontSize 16
574 fontName "Monospace"
575 autoSizePolicy "node_width"
576 anchor "t"
577 borderDistance 0.0
578 ]
579 LabelGraphics
580 [
581 text "
582 Payload class
583 InterferometryPayload class
584 "
585 fontSize 14
586 fontName "Consolas"
587 alignment "left"
588 anchor "tl"
589 borderDistance 6
590 ]
591 ]
592
593 node
594 [
595 id 16
596 graphics
597 [
598 w 269.5
599 h 54
600 type "rectangle"
601 fill "#FFFFFF"
602 fill2 "#FFFFFF"
603 outline "#000000"
604 ]
605 LabelGraphics
606 [
607 text "null"
608 outline "#000000"
609 fill "#FFFFFF"
610 fontSize 16
611 fontName "Monospace"
612 autoSizePolicy "node_width"
613 anchor "t"
614 borderDistance 0.0
615 ]
616 LabelGraphics
617 [
618 text "
619 CommSubsystem class
620 CommSubsystem class UndefinedPart
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629
630 node
631 [
632 id 17
633 graphics
634 [
635 w 323.40000000000003
636 h 82
637 type "rectangle"
638 fill "#FFFFFF"
639 fill2 "#FFFFFF"
640 outline "#000000"
641 ]
642 LabelGraphics
643 [
644 text "null"
645 outline "#000000"
646 fill "#FFFFFF"
647 fontSize 16
648 fontName "Monospace"
649 autoSizePolicy "node_width"
650 anchor "t"
651 borderDistance 0.0
652 ]
653 LabelGraphics
654 [
655 text "
656 CommunicatingElement class
657 Spacecraft class
658 SmallSat class
659 CommunicatingElement class UndefinedPart
660 "
661 fontSize 14
662 fontName "Consolas"
663 alignment "left"
664 anchor "tl"
665 borderDistance 6
666 ]
667 ]
668
669 node
670 [
671 id 18
672 graphics
673 [
674 w 223.3
675 h 54
676 type "rectangle"
677 fill "#FFFFFF"
678 fill2 "#FFFFFF"
679 outline "#000000"
680 ]
681 LabelGraphics
682 [
683 text "null"
684 outline "#000000"
685 fill "#FFFFFF"
686 fontSize 16
687 fontName "Monospace"
688 autoSizePolicy "node_width"
689 anchor "t"
690 borderDistance 0.0
691 ]
692 LabelGraphics
693 [
694 text "
695 Payload class
696 InterferometryPayload class
697 "
698 fontSize 14
699 fontName "Consolas"
700 alignment "left"
701 anchor "tl"
702 borderDistance 6
703 ]
704 ]
705
706 node
707 [
708 id 19
709 graphics
710 [
711 w 323.40000000000003
712 h 82
713 type "rectangle"
714 fill "#FFFFFF"
715 fill2 "#FFFFFF"
716 outline "#000000"
717 ]
718 LabelGraphics
719 [
720 text "null"
721 outline "#000000"
722 fill "#FFFFFF"
723 fontSize 16
724 fontName "Monospace"
725 autoSizePolicy "node_width"
726 anchor "t"
727 borderDistance 0.0
728 ]
729 LabelGraphics
730 [
731 text "
732 CommunicatingElement class
733 Spacecraft class
734 SmallSat class
735 CommunicatingElement class UndefinedPart
736 "
737 fontSize 14
738 fontName "Consolas"
739 alignment "left"
740 anchor "tl"
741 borderDistance 6
742 ]
743 ]
744
745 node
746 [
747 id 20
748 graphics
749 [
750 w 223.3
751 h 54
752 type "rectangle"
753 fill "#FFFFFF"
754 fill2 "#FFFFFF"
755 outline "#000000"
756 ]
757 LabelGraphics
758 [
759 text "null"
760 outline "#000000"
761 fill "#FFFFFF"
762 fontSize 16
763 fontName "Monospace"
764 autoSizePolicy "node_width"
765 anchor "t"
766 borderDistance 0.0
767 ]
768 LabelGraphics
769 [
770 text "
771 Payload class
772 InterferometryPayload class
773 "
774 fontSize 14
775 fontName "Consolas"
776 alignment "left"
777 anchor "tl"
778 borderDistance 6
779 ]
780 ]
781
782 node
783 [
784 id 21
785 graphics
786 [
787 w 323.40000000000003
788 h 82
789 type "rectangle"
790 fill "#FFFFFF"
791 fill2 "#FFFFFF"
792 outline "#000000"
793 ]
794 LabelGraphics
795 [
796 text "null"
797 outline "#000000"
798 fill "#FFFFFF"
799 fontSize 16
800 fontName "Monospace"
801 autoSizePolicy "node_width"
802 anchor "t"
803 borderDistance 0.0
804 ]
805 LabelGraphics
806 [
807 text "
808 CommunicatingElement class
809 Spacecraft class
810 CubeSat6U class
811 CommunicatingElement class UndefinedPart
812 "
813 fontSize 14
814 fontName "Consolas"
815 alignment "left"
816 anchor "tl"
817 borderDistance 6
818 ]
819 ]
820
821 node
822 [
823 id 22
824 graphics
825 [
826 w 323.40000000000003
827 h 82
828 type "rectangle"
829 fill "#FFFFFF"
830 fill2 "#FFFFFF"
831 outline "#000000"
832 ]
833 LabelGraphics
834 [
835 text "null"
836 outline "#000000"
837 fill "#FFFFFF"
838 fontSize 16
839 fontName "Monospace"
840 autoSizePolicy "node_width"
841 anchor "t"
842 borderDistance 0.0
843 ]
844 LabelGraphics
845 [
846 text "
847 CommunicatingElement class
848 Spacecraft class
849 SmallSat class
850 CommunicatingElement class UndefinedPart
851 "
852 fontSize 14
853 fontName "Consolas"
854 alignment "left"
855 anchor "tl"
856 borderDistance 6
857 ]
858 ]
859
860 node
861 [
862 id 23
863 graphics
864 [
865 w 269.5
866 h 54
867 type "rectangle"
868 fill "#FFFFFF"
869 fill2 "#FFFFFF"
870 outline "#000000"
871 ]
872 LabelGraphics
873 [
874 text "null"
875 outline "#000000"
876 fill "#FFFFFF"
877 fontSize 16
878 fontName "Monospace"
879 autoSizePolicy "node_width"
880 anchor "t"
881 borderDistance 0.0
882 ]
883 LabelGraphics
884 [
885 text "
886 CommSubsystem class
887 CommSubsystem class UndefinedPart
888 "
889 fontSize 14
890 fontName "Consolas"
891 alignment "left"
892 anchor "tl"
893 borderDistance 6
894 ]
895 ]
896
897 node
898 [
899 id 24
900 graphics
901 [
902 w 269.5
903 h 54
904 type "rectangle"
905 fill "#FFFFFF"
906 fill2 "#FFFFFF"
907 outline "#000000"
908 ]
909 LabelGraphics
910 [
911 text "null"
912 outline "#000000"
913 fill "#FFFFFF"
914 fontSize 16
915 fontName "Monospace"
916 autoSizePolicy "node_width"
917 anchor "t"
918 borderDistance 0.0
919 ]
920 LabelGraphics
921 [
922 text "
923 CommSubsystem class
924 CommSubsystem class UndefinedPart
925 "
926 fontSize 14
927 fontName "Consolas"
928 alignment "left"
929 anchor "tl"
930 borderDistance 6
931 ]
932 ]
933
934 node
935 [
936 id 25
937 graphics
938 [
939 w 223.3
940 h 54
941 type "rectangle"
942 fill "#FFFFFF"
943 fill2 "#FFFFFF"
944 outline "#000000"
945 ]
946 LabelGraphics
947 [
948 text "null"
949 outline "#000000"
950 fill "#FFFFFF"
951 fontSize 16
952 fontName "Monospace"
953 autoSizePolicy "node_width"
954 anchor "t"
955 borderDistance 0.0
956 ]
957 LabelGraphics
958 [
959 text "
960 Payload class
961 InterferometryPayload class
962 "
963 fontSize 14
964 fontName "Consolas"
965 alignment "left"
966 anchor "tl"
967 borderDistance 6
968 ]
969 ]
970
971 node
972 [
973 id 26
974 graphics
975 [
976 w 223.3
977 h 54
978 type "rectangle"
979 fill "#FFFFFF"
980 fill2 "#FFFFFF"
981 outline "#000000"
982 ]
983 LabelGraphics
984 [
985 text "null"
986 outline "#000000"
987 fill "#FFFFFF"
988 fontSize 16
989 fontName "Monospace"
990 autoSizePolicy "node_width"
991 anchor "t"
992 borderDistance 0.0
993 ]
994 LabelGraphics
995 [
996 text "
997 Payload class
998 InterferometryPayload class
999 "
1000 fontSize 14
1001 fontName "Consolas"
1002 alignment "left"
1003 anchor "tl"
1004 borderDistance 6
1005 ]
1006 ]
1007
1008 node
1009 [
1010 id 27
1011 graphics
1012 [
1013 w 269.5
1014 h 54
1015 type "rectangle"
1016 fill "#FFFFFF"
1017 fill2 "#FFFFFF"
1018 outline "#000000"
1019 ]
1020 LabelGraphics
1021 [
1022 text "null"
1023 outline "#000000"
1024 fill "#FFFFFF"
1025 fontSize 16
1026 fontName "Monospace"
1027 autoSizePolicy "node_width"
1028 anchor "t"
1029 borderDistance 0.0
1030 ]
1031 LabelGraphics
1032 [
1033 text "
1034 CommSubsystem class
1035 CommSubsystem class UndefinedPart
1036 "
1037 fontSize 14
1038 fontName "Consolas"
1039 alignment "left"
1040 anchor "tl"
1041 borderDistance 6
1042 ]
1043 ]
1044
1045 node
1046 [
1047 id 28
1048 graphics
1049 [
1050 w 269.5
1051 h 54
1052 type "rectangle"
1053 fill "#FFFFFF"
1054 fill2 "#FFFFFF"
1055 outline "#000000"
1056 ]
1057 LabelGraphics
1058 [
1059 text "null"
1060 outline "#000000"
1061 fill "#FFFFFF"
1062 fontSize 16
1063 fontName "Monospace"
1064 autoSizePolicy "node_width"
1065 anchor "t"
1066 borderDistance 0.0
1067 ]
1068 LabelGraphics
1069 [
1070 text "
1071 CommSubsystem class
1072 CommSubsystem class UndefinedPart
1073 "
1074 fontSize 14
1075 fontName "Consolas"
1076 alignment "left"
1077 anchor "tl"
1078 borderDistance 6
1079 ]
1080 ]
1081
1082 node
1083 [
1084 id 29
1085 graphics
1086 [
1087 w 112.2
1088 h 26
1089 type "rectangle"
1090 fill "#FFFFFF"
1091 fill2 "#FFFFFF"
1092 outline "#000000"
1093 ]
1094 LabelGraphics
1095 [
1096 text "New Integers"
1097 outline "#000000"
1098 fill "#FFFFFF"
1099 fontSize 16
1100 fontName "Monospace"
1101 autoSizePolicy "node_width"
1102 anchor "t"
1103 borderDistance 0.0
1104 ]
1105 LabelGraphics
1106 [
1107 text "
1108 "
1109 fontSize 14
1110 fontName "Consolas"
1111 alignment "left"
1112 anchor "tl"
1113 borderDistance 6
1114 ]
1115 ]
1116
1117 node
1118 [
1119 id 30
1120 graphics
1121 [
1122 w 85.80000000000001
1123 h 26
1124 type "rectangle"
1125 fill "#FFFFFF"
1126 fill2 "#FFFFFF"
1127 outline "#000000"
1128 ]
1129 LabelGraphics
1130 [
1131 text "New Reals"
1132 outline "#000000"
1133 fill "#FFFFFF"
1134 fontSize 16
1135 fontName "Monospace"
1136 autoSizePolicy "node_width"
1137 anchor "t"
1138 borderDistance 0.0
1139 ]
1140 LabelGraphics
1141 [
1142 text "
1143 "
1144 fontSize 14
1145 fontName "Consolas"
1146 alignment "left"
1147 anchor "tl"
1148 borderDistance 6
1149 ]
1150 ]
1151
1152 node
1153 [
1154 id 31
1155 graphics
1156 [
1157 w 103.4
1158 h 26
1159 type "rectangle"
1160 fill "#FFFFFF"
1161 fill2 "#FFFFFF"
1162 outline "#000000"
1163 ]
1164 LabelGraphics
1165 [
1166 text "New Strings"
1167 outline "#000000"
1168 fill "#FFFFFF"
1169 fontSize 16
1170 fontName "Monospace"
1171 autoSizePolicy "node_width"
1172 anchor "t"
1173 borderDistance 0.0
1174 ]
1175 LabelGraphics
1176 [
1177 text "
1178 "
1179 fontSize 14
1180 fontName "Consolas"
1181 alignment "left"
1182 anchor "tl"
1183 borderDistance 6
1184 ]
1185 ]
1186
1187 node
1188 [
1189 id 32
1190 graphics
1191 [
1192 w 103.4
1193 h 26
1194 type "rectangle"
1195 fill "#FFFFFF"
1196 fill2 "#FFFFFF"
1197 outline "#000000"
1198 ]
1199 LabelGraphics
1200 [
1201 text "New Objects"
1202 outline "#000000"
1203 fill "#FFFFFF"
1204 fontSize 16
1205 fontName "Monospace"
1206 autoSizePolicy "node_width"
1207 anchor "t"
1208 borderDistance 0.0
1209 ]
1210 LabelGraphics
1211 [
1212 text "
1213 "
1214 fontSize 14
1215 fontName "Consolas"
1216 alignment "left"
1217 anchor "tl"
1218 borderDistance 6
1219 ]
1220 ]
1221 edge
1222 [
1223 source 6
1224 target 7
1225 graphics
1226 [
1227 fill "#000000"
1228 width 3
1229 targetArrow "standard"
1230 ]
1231 LabelGraphics
1232 [
1233 text "groundStationNetwork reference ConstellationMission"
1234 fontSize 14
1235 fontName "Consolas"
1236 configuration "AutoFlippingLabel"
1237 model "six_pos"
1238 position "thead"
1239 ]
1240 ]
1241 edge
1242 [
1243 source 6
1244 target 12
1245 graphics
1246 [
1247 fill "#000000"
1248 width 3
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "spacecraft reference ConstellationMission"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 6
1264 target 13
1265 graphics
1266 [
1267 fill "#000000"
1268 width 3
1269 targetArrow "standard"
1270 ]
1271 LabelGraphics
1272 [
1273 text "spacecraft reference ConstellationMission"
1274 fontSize 14
1275 fontName "Consolas"
1276 configuration "AutoFlippingLabel"
1277 model "six_pos"
1278 position "thead"
1279 ]
1280 ]
1281 edge
1282 [
1283 source 6
1284 target 17
1285 graphics
1286 [
1287 fill "#000000"
1288 width 3
1289 targetArrow "standard"
1290 ]
1291 LabelGraphics
1292 [
1293 text "spacecraft reference ConstellationMission"
1294 fontSize 14
1295 fontName "Consolas"
1296 configuration "AutoFlippingLabel"
1297 model "six_pos"
1298 position "thead"
1299 ]
1300 ]
1301 edge
1302 [
1303 source 6
1304 target 19
1305 graphics
1306 [
1307 fill "#000000"
1308 width 3
1309 targetArrow "standard"
1310 ]
1311 LabelGraphics
1312 [
1313 text "spacecraft reference ConstellationMission"
1314 fontSize 14
1315 fontName "Consolas"
1316 configuration "AutoFlippingLabel"
1317 model "six_pos"
1318 position "thead"
1319 ]
1320 ]
1321 edge
1322 [
1323 source 6
1324 target 21
1325 graphics
1326 [
1327 fill "#000000"
1328 width 3
1329 targetArrow "standard"
1330 ]
1331 LabelGraphics
1332 [
1333 text "spacecraft reference ConstellationMission"
1334 fontSize 14
1335 fontName "Consolas"
1336 configuration "AutoFlippingLabel"
1337 model "six_pos"
1338 position "thead"
1339 ]
1340 ]
1341 edge
1342 [
1343 source 6
1344 target 22
1345 graphics
1346 [
1347 fill "#000000"
1348 width 3
1349 targetArrow "standard"
1350 ]
1351 LabelGraphics
1352 [
1353 text "spacecraft reference ConstellationMission"
1354 fontSize 14
1355 fontName "Consolas"
1356 configuration "AutoFlippingLabel"
1357 model "six_pos"
1358 position "thead"
1359 ]
1360 ]
1361 edge
1362 [
1363 source 7
1364 target 8
1365 graphics
1366 [
1367 fill "#000000"
1368 width 3
1369 targetArrow "standard"
1370 ]
1371 LabelGraphics
1372 [
1373 text "commSubsystem reference CommunicatingElement"
1374 fontSize 14
1375 fontName "Consolas"
1376 configuration "AutoFlippingLabel"
1377 model "six_pos"
1378 position "thead"
1379 ]
1380 ]
1381 edge
1382 [
1383 source 7
1384 target 9
1385 graphics
1386 [
1387 fill "#000000"
1388 width 3
1389 targetArrow "standard"
1390 ]
1391 LabelGraphics
1392 [
1393 text "commSubsystem reference CommunicatingElement"
1394 fontSize 14
1395 fontName "Consolas"
1396 configuration "AutoFlippingLabel"
1397 model "six_pos"
1398 position "thead"
1399 ]
1400 ]
1401 edge
1402 [
1403 source 13
1404 target 14
1405 graphics
1406 [
1407 fill "#000000"
1408 width 3
1409 targetArrow "standard"
1410 ]
1411 LabelGraphics
1412 [
1413 text "commSubsystem reference CommunicatingElement"
1414 fontSize 14
1415 fontName "Consolas"
1416 configuration "AutoFlippingLabel"
1417 model "six_pos"
1418 position "thead"
1419 ]
1420 ]
1421 edge
1422 [
1423 source 12
1424 target 16
1425 graphics
1426 [
1427 fill "#000000"
1428 width 3
1429 targetArrow "standard"
1430 ]
1431 LabelGraphics
1432 [
1433 text "commSubsystem reference CommunicatingElement"
1434 fontSize 14
1435 fontName "Consolas"
1436 configuration "AutoFlippingLabel"
1437 model "six_pos"
1438 position "thead"
1439 ]
1440 ]
1441 edge
1442 [
1443 source 21
1444 target 23
1445 graphics
1446 [
1447 fill "#000000"
1448 width 3
1449 targetArrow "standard"
1450 ]
1451 LabelGraphics
1452 [
1453 text "commSubsystem reference CommunicatingElement"
1454 fontSize 14
1455 fontName "Consolas"
1456 configuration "AutoFlippingLabel"
1457 model "six_pos"
1458 position "thead"
1459 ]
1460 ]
1461 edge
1462 [
1463 source 19
1464 target 24
1465 graphics
1466 [
1467 fill "#000000"
1468 width 3
1469 targetArrow "standard"
1470 ]
1471 LabelGraphics
1472 [
1473 text "commSubsystem reference CommunicatingElement"
1474 fontSize 14
1475 fontName "Consolas"
1476 configuration "AutoFlippingLabel"
1477 model "six_pos"
1478 position "thead"
1479 ]
1480 ]
1481 edge
1482 [
1483 source 17
1484 target 27
1485 graphics
1486 [
1487 fill "#000000"
1488 width 3
1489 targetArrow "standard"
1490 ]
1491 LabelGraphics
1492 [
1493 text "commSubsystem reference CommunicatingElement"
1494 fontSize 14
1495 fontName "Consolas"
1496 configuration "AutoFlippingLabel"
1497 model "six_pos"
1498 position "thead"
1499 ]
1500 ]
1501 edge
1502 [
1503 source 22
1504 target 28
1505 graphics
1506 [
1507 fill "#000000"
1508 width 3
1509 targetArrow "standard"
1510 ]
1511 LabelGraphics
1512 [
1513 text "commSubsystem reference CommunicatingElement"
1514 fontSize 14
1515 fontName "Consolas"
1516 configuration "AutoFlippingLabel"
1517 model "six_pos"
1518 position "thead"
1519 ]
1520 ]
1521 edge
1522 [
1523 source 13
1524 target 15
1525 graphics
1526 [
1527 fill "#000000"
1528 width 3
1529 targetArrow "standard"
1530 ]
1531 LabelGraphics
1532 [
1533 text "payload reference Spacecraft"
1534 fontSize 14
1535 fontName "Consolas"
1536 configuration "AutoFlippingLabel"
1537 model "six_pos"
1538 position "thead"
1539 ]
1540 ]
1541 edge
1542 [
1543 source 12
1544 target 18
1545 graphics
1546 [
1547 fill "#000000"
1548 width 3
1549 targetArrow "standard"
1550 ]
1551 LabelGraphics
1552 [
1553 text "payload reference Spacecraft"
1554 fontSize 14
1555 fontName "Consolas"
1556 configuration "AutoFlippingLabel"
1557 model "six_pos"
1558 position "thead"
1559 ]
1560 ]
1561 edge
1562 [
1563 source 17
1564 target 20
1565 graphics
1566 [
1567 fill "#000000"
1568 width 3
1569 targetArrow "standard"
1570 ]
1571 LabelGraphics
1572 [
1573 text "payload reference Spacecraft"
1574 fontSize 14
1575 fontName "Consolas"
1576 configuration "AutoFlippingLabel"
1577 model "six_pos"
1578 position "thead"
1579 ]
1580 ]
1581 edge
1582 [
1583 source 19
1584 target 25
1585 graphics
1586 [
1587 fill "#000000"
1588 width 3
1589 targetArrow "standard"
1590 ]
1591 LabelGraphics
1592 [
1593 text "payload reference Spacecraft"
1594 fontSize 14
1595 fontName "Consolas"
1596 configuration "AutoFlippingLabel"
1597 model "six_pos"
1598 position "thead"
1599 ]
1600 ]
1601 edge
1602 [
1603 source 22
1604 target 26
1605 graphics
1606 [
1607 fill "#000000"
1608 width 3
1609 targetArrow "standard"
1610 ]
1611 LabelGraphics
1612 [
1613 text "payload reference Spacecraft"
1614 fontSize 14
1615 fontName "Consolas"
1616 configuration "AutoFlippingLabel"
1617 model "six_pos"
1618 position "thead"
1619 ]
1620 ]
1621 edge
1622 [
1623 source 8
1624 target 1
1625 graphics
1626 [
1627 fill "#000000"
1628 targetArrow "standard"
1629 ]
1630 LabelGraphics
1631 [
1632 text "band attribute CommSubsystem"
1633 fontSize 14
1634 fontName "Consolas"
1635 configuration "AutoFlippingLabel"
1636 model "six_pos"
1637 position "thead"
1638 ]
1639 ]
1640 edge
1641 [
1642 source 9
1643 target 2
1644 graphics
1645 [
1646 fill "#000000"
1647 targetArrow "standard"
1648 ]
1649 LabelGraphics
1650 [
1651 text "band attribute CommSubsystem"
1652 fontSize 14
1653 fontName "Consolas"
1654 configuration "AutoFlippingLabel"
1655 model "six_pos"
1656 position "thead"
1657 ]
1658 ]
1659 edge
1660 [
1661 source 14
1662 target 0
1663 graphics
1664 [
1665 fill "#000000"
1666 targetArrow "standard"
1667 ]
1668 LabelGraphics
1669 [
1670 text "band attribute CommSubsystem"
1671 fontSize 14
1672 fontName "Consolas"
1673 configuration "AutoFlippingLabel"
1674 model "six_pos"
1675 position "thead"
1676 ]
1677 ]
1678 edge
1679 [
1680 source 16
1681 target 2
1682 graphics
1683 [
1684 fill "#000000"
1685 targetArrow "standard"
1686 ]
1687 LabelGraphics
1688 [
1689 text "band attribute CommSubsystem"
1690 fontSize 14
1691 fontName "Consolas"
1692 configuration "AutoFlippingLabel"
1693 model "six_pos"
1694 position "thead"
1695 ]
1696 ]
1697 edge
1698 [
1699 source 23
1700 target 1
1701 graphics
1702 [
1703 fill "#000000"
1704 targetArrow "standard"
1705 ]
1706 LabelGraphics
1707 [
1708 text "band attribute CommSubsystem"
1709 fontSize 14
1710 fontName "Consolas"
1711 configuration "AutoFlippingLabel"
1712 model "six_pos"
1713 position "thead"
1714 ]
1715 ]
1716 edge
1717 [
1718 source 24
1719 target 2
1720 graphics
1721 [
1722 fill "#000000"
1723 targetArrow "standard"
1724 ]
1725 LabelGraphics
1726 [
1727 text "band attribute CommSubsystem"
1728 fontSize 14
1729 fontName "Consolas"
1730 configuration "AutoFlippingLabel"
1731 model "six_pos"
1732 position "thead"
1733 ]
1734 ]
1735 edge
1736 [
1737 source 27
1738 target 1
1739 graphics
1740 [
1741 fill "#000000"
1742 targetArrow "standard"
1743 ]
1744 LabelGraphics
1745 [
1746 text "band attribute CommSubsystem"
1747 fontSize 14
1748 fontName "Consolas"
1749 configuration "AutoFlippingLabel"
1750 model "six_pos"
1751 position "thead"
1752 ]
1753 ]
1754 edge
1755 [
1756 source 28
1757 target 1
1758 graphics
1759 [
1760 fill "#000000"
1761 targetArrow "standard"
1762 ]
1763 LabelGraphics
1764 [
1765 text "band attribute CommSubsystem"
1766 fontSize 14
1767 fontName "Consolas"
1768 configuration "AutoFlippingLabel"
1769 model "six_pos"
1770 position "thead"
1771 ]
1772 ]
1773 edge
1774 [
1775 source 8
1776 target 4
1777 graphics
1778 [
1779 fill "#000000"
1780 targetArrow "standard"
1781 ]
1782 LabelGraphics
1783 [
1784 text "gain attribute CommSubsystem"
1785 fontSize 14
1786 fontName "Consolas"
1787 configuration "AutoFlippingLabel"
1788 model "six_pos"
1789 position "thead"
1790 ]
1791 ]
1792 edge
1793 [
1794 source 9
1795 target 5
1796 graphics
1797 [
1798 fill "#000000"
1799 targetArrow "standard"
1800 ]
1801 LabelGraphics
1802 [
1803 text "gain attribute CommSubsystem"
1804 fontSize 14
1805 fontName "Consolas"
1806 configuration "AutoFlippingLabel"
1807 model "six_pos"
1808 position "thead"
1809 ]
1810 ]
1811 edge
1812 [
1813 source 14
1814 target 5
1815 graphics
1816 [
1817 fill "#000000"
1818 targetArrow "standard"
1819 ]
1820 LabelGraphics
1821 [
1822 text "gain attribute CommSubsystem"
1823 fontSize 14
1824 fontName "Consolas"
1825 configuration "AutoFlippingLabel"
1826 model "six_pos"
1827 position "thead"
1828 ]
1829 ]
1830 edge
1831 [
1832 source 16
1833 target 3
1834 graphics
1835 [
1836 fill "#000000"
1837 targetArrow "standard"
1838 ]
1839 LabelGraphics
1840 [
1841 text "gain attribute CommSubsystem"
1842 fontSize 14
1843 fontName "Consolas"
1844 configuration "AutoFlippingLabel"
1845 model "six_pos"
1846 position "thead"
1847 ]
1848 ]
1849 edge
1850 [
1851 source 24
1852 target 4
1853 graphics
1854 [
1855 fill "#000000"
1856 targetArrow "standard"
1857 ]
1858 LabelGraphics
1859 [
1860 text "gain attribute CommSubsystem"
1861 fontSize 14
1862 fontName "Consolas"
1863 configuration "AutoFlippingLabel"
1864 model "six_pos"
1865 position "thead"
1866 ]
1867 ]
1868 edge
1869 [
1870 source 23
1871 target 4
1872 graphics
1873 [
1874 fill "#000000"
1875 targetArrow "standard"
1876 ]
1877 LabelGraphics
1878 [
1879 text "gain attribute CommSubsystem"
1880 fontSize 14
1881 fontName "Consolas"
1882 configuration "AutoFlippingLabel"
1883 model "six_pos"
1884 position "thead"
1885 ]
1886 ]
1887 edge
1888 [
1889 source 27
1890 target 4
1891 graphics
1892 [
1893 fill "#000000"
1894 targetArrow "standard"
1895 ]
1896 LabelGraphics
1897 [
1898 text "gain attribute CommSubsystem"
1899 fontSize 14
1900 fontName "Consolas"
1901 configuration "AutoFlippingLabel"
1902 model "six_pos"
1903 position "thead"
1904 ]
1905 ]
1906 edge
1907 [
1908 source 28
1909 target 3
1910 graphics
1911 [
1912 fill "#000000"
1913 targetArrow "standard"
1914 ]
1915 LabelGraphics
1916 [
1917 text "gain attribute CommSubsystem"
1918 fontSize 14
1919 fontName "Consolas"
1920 configuration "AutoFlippingLabel"
1921 model "six_pos"
1922 position "thead"
1923 ]
1924 ]
1925]
1926
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.png
new file mode 100644
index 00000000..4d65f5ba
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.png
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.xmi
new file mode 100644
index 00000000..b0c5bef1
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/outputs/models/5.xmi
@@ -0,0 +1,30 @@
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:CubeSat6U">
8 <commSubsystem band="X" gain="MEDIUM"/>
9 </spacecraft>
10 <spacecraft xsi:type="satellite:CubeSat6U">
11 <commSubsystem gain="HIGH"/>
12 <payload xsi:type="satellite:InterferometryPayload"/>
13 </spacecraft>
14 <spacecraft xsi:type="satellite:SmallSat">
15 <commSubsystem band="X" gain="MEDIUM"/>
16 <payload xsi:type="satellite:InterferometryPayload"/>
17 </spacecraft>
18 <spacecraft xsi:type="satellite:SmallSat">
19 <commSubsystem band="Ka" gain="MEDIUM"/>
20 <payload xsi:type="satellite:InterferometryPayload"/>
21 </spacecraft>
22 <spacecraft xsi:type="satellite:SmallSat">
23 <commSubsystem band="Ka"/>
24 <payload xsi:type="satellite:InterferometryPayload"/>
25 </spacecraft>
26 <spacecraft xsi:type="satellite:SmallSat">
27 <commSubsystem band="X"/>
28 <payload xsi:type="satellite:InterferometryPayload"/>
29 </spacecraft>
30</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..c6c34dfc
--- /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;715;4234;39649;4468544142;39591;20421;147;938;0;10
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..0cdd345c
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/plugin.xml
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated satellite -->
5 <package class="hu.bme.mit.inf.dslreasoner.domains.satellite.SatellitePackage" genModel="model/satellite.genmodel" uri="http://www.example.org/satellite"/>
6 </extension>
7 <extension id="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries" point="org.eclipse.viatra.query.runtime.queryspecification">
8 <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">
9 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLinkDoesNotStartAtContainingElement"/>
10 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads"/>
11 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.noLinkToGroundStation"/>
12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.communicationLoop"/>
13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetBand"/>
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incompatibleSourceAndTargetGain"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.uhfAntennaGainNotLow"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.xAntennaGainNotMedium"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.kaAntennaGainLow"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.cubeSatWithKaAntenna"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.coverageMetric"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.timeMetric"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.satellite.queries.costMetric"/>
23 </group>
24 </extension>
25</plugin>
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/.gitignore
new file mode 100644
index 00000000..3e7cd5e2
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/.gitignore
@@ -0,0 +1,2 @@
1/.CoverageMetric.java._trace
2/.SatelliteMetrics.java._trace
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/internal/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/internal/.gitignore
new file mode 100644
index 00000000..d3195cfc
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/metrics/internal/.gitignore
@@ -0,0 +1,2 @@
1/.MissionCoverage.java._trace
2/.SatelliteMetricsAll.java._trace
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..5f0d5b4b
--- /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,22 @@
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
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..dde3c20f
--- /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 hu.bme.mit.inf.dslreasoner.domains.satellite.DirectedCommunicationLink;
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.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(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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..f5835baf
--- /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.CommunicatingElement;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
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.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.basicenumerables.PositivePatternCall;
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;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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/CostMetric.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CostMetric.java
new file mode 100644
index 00000000..474719b2
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CostMetric.java
@@ -0,0 +1,544 @@
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.MissionCost;
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.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.matchers.aggregators.sum;
26import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
27import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
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.AggregatorConstraint;
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.basicdeferred.TypeFilterConstraint;
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 * // Cost
47 *
48 * pattern costMetric(Cost : java Double) {
49 * Cost == sum find missionCost(_, #_);
50 * }
51 * </pre></code>
52 *
53 * @see Matcher
54 * @see Match
55 *
56 */
57@SuppressWarnings("all")
58public final class CostMetric extends BaseGeneratedEMFQuerySpecification<CostMetric.Matcher> {
59 /**
60 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.costMetric 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 Double fCost;
73
74 private static List<String> parameterNames = makeImmutableList("Cost");
75
76 private Match(final Double pCost) {
77 this.fCost = pCost;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 if ("Cost".equals(parameterName)) return this.fCost;
83 return null;
84 }
85
86 public Double getCost() {
87 return this.fCost;
88 }
89
90 @Override
91 public boolean set(final String parameterName, final Object newValue) {
92 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
93 if ("Cost".equals(parameterName) ) {
94 this.fCost = (Double) newValue;
95 return true;
96 }
97 return false;
98 }
99
100 public void setCost(final Double pCost) {
101 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
102 this.fCost = pCost;
103 }
104
105 @Override
106 public String patternName() {
107 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.costMetric";
108 }
109
110 @Override
111 public List<String> parameterNames() {
112 return CostMetric.Match.parameterNames;
113 }
114
115 @Override
116 public Object[] toArray() {
117 return new Object[]{fCost};
118 }
119
120 @Override
121 public CostMetric.Match toImmutable() {
122 return isMutable() ? newMatch(fCost) : this;
123 }
124
125 @Override
126 public String prettyPrint() {
127 StringBuilder result = new StringBuilder();
128 result.append("\"Cost\"=" + prettyPrintValue(fCost));
129 return result.toString();
130 }
131
132 @Override
133 public int hashCode() {
134 return Objects.hash(fCost);
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 CostMetric.Match)) {
145 CostMetric.Match other = (CostMetric.Match) obj;
146 return Objects.equals(fCost, other.fCost);
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 CostMetric specification() {
159 return CostMetric.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 CostMetric.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 pCost the fixed value of pattern parameter Cost, or null if not bound.
178 * @return the new, mutable (partial) match object.
179 *
180 */
181 public static CostMetric.Match newMutableMatch(final Double pCost) {
182 return new Mutable(pCost);
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 pCost the fixed value of pattern parameter Cost, or null if not bound.
190 * @return the (partial) match object.
191 *
192 */
193 public static CostMetric.Match newMatch(final Double pCost) {
194 return new Immutable(pCost);
195 }
196
197 private static final class Mutable extends CostMetric.Match {
198 Mutable(final Double pCost) {
199 super(pCost);
200 }
201
202 @Override
203 public boolean isMutable() {
204 return true;
205 }
206 }
207
208 private static final class Immutable extends CostMetric.Match {
209 Immutable(final Double pCost) {
210 super(pCost);
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.satellite.queries.costMetric 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 * // Cost
232 *
233 * pattern costMetric(Cost : java Double) {
234 * Cost == sum find missionCost(_, #_);
235 * }
236 * </pre></code>
237 *
238 * @see Match
239 * @see CostMetric
240 *
241 */
242 public static class Matcher extends BaseMatcher<CostMetric.Match> {
243 /**
244 * Initializes the pattern matcher within an existing VIATRA Query engine.
245 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
246 *
247 * @param engine the existing VIATRA Query engine in which this matcher will be created.
248 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
249 *
250 */
251 public static CostMetric.Matcher on(final ViatraQueryEngine engine) {
252 // check if matcher already exists
253 Matcher matcher = engine.getExistingMatcher(querySpecification());
254 if (matcher == null) {
255 matcher = (Matcher)engine.getMatcher(querySpecification());
256 }
257 return matcher;
258 }
259
260 /**
261 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
262 * @return an initialized matcher
263 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
264 *
265 */
266 public static CostMetric.Matcher create() {
267 return new Matcher();
268 }
269
270 private static final int POSITION_COST = 0;
271
272 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(CostMetric.Matcher.class);
273
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 private Matcher() {
283 super(querySpecification());
284 }
285
286 /**
287 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
288 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
289 * @return matches represented as a Match object.
290 *
291 */
292 public Collection<CostMetric.Match> getAllMatches(final Double pCost) {
293 return rawStreamAllMatches(new Object[]{pCost}).collect(Collectors.toSet());
294 }
295
296 /**
297 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
298 * </p>
299 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
300 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
301 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
302 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
303 * @return a stream of matches represented as a Match object.
304 *
305 */
306 public Stream<CostMetric.Match> streamAllMatches(final Double pCost) {
307 return rawStreamAllMatches(new Object[]{pCost});
308 }
309
310 /**
311 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
312 * Neither determinism nor randomness of selection is guaranteed.
313 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
314 * @return a match represented as a Match object, or null if no match is found.
315 *
316 */
317 public Optional<CostMetric.Match> getOneArbitraryMatch(final Double pCost) {
318 return rawGetOneArbitraryMatch(new Object[]{pCost});
319 }
320
321 /**
322 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
323 * under any possible substitution of the unspecified parameters (if any).
324 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
325 * @return true if the input is a valid (partial) match of the pattern.
326 *
327 */
328 public boolean hasMatch(final Double pCost) {
329 return rawHasMatch(new Object[]{pCost});
330 }
331
332 /**
333 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
334 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
335 * @return the number of pattern matches found.
336 *
337 */
338 public int countMatches(final Double pCost) {
339 return rawCountMatches(new Object[]{pCost});
340 }
341
342 /**
343 * Executes the given processor on 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 pCost the fixed value of pattern parameter Cost, or null if not bound.
346 * @param processor the action that will process the selected match.
347 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
348 *
349 */
350 public boolean forOneArbitraryMatch(final Double pCost, final Consumer<? super CostMetric.Match> processor) {
351 return rawForOneArbitraryMatch(new Object[]{pCost}, processor);
352 }
353
354 /**
355 * Returns a new (partial) match.
356 * This can be used e.g. to call the matcher with a partial match.
357 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
358 * @param pCost the fixed value of pattern parameter Cost, or null if not bound.
359 * @return the (partial) match object.
360 *
361 */
362 public CostMetric.Match newMatch(final Double pCost) {
363 return CostMetric.Match.newMatch(pCost);
364 }
365
366 /**
367 * Retrieve the set of values that occur in matches for Cost.
368 * @return the Set of all values or empty set if there are no matches
369 *
370 */
371 protected Stream<Double> rawStreamAllValuesOfCost(final Object[] parameters) {
372 return rawStreamAllValues(POSITION_COST, parameters).map(Double.class::cast);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for Cost.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 public Set<Double> getAllValuesOfCost() {
381 return rawStreamAllValuesOfCost(emptyArray()).collect(Collectors.toSet());
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for Cost.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Stream<Double> streamAllValuesOfCost() {
390 return rawStreamAllValuesOfCost(emptyArray());
391 }
392
393 @Override
394 protected CostMetric.Match tupleToMatch(final Tuple t) {
395 try {
396 return CostMetric.Match.newMatch((Double) t.get(POSITION_COST));
397 } catch(ClassCastException e) {
398 LOGGER.error("Element(s) in tuple not properly typed!",e);
399 return null;
400 }
401 }
402
403 @Override
404 protected CostMetric.Match arrayToMatch(final Object[] match) {
405 try {
406 return CostMetric.Match.newMatch((Double) match[POSITION_COST]);
407 } catch(ClassCastException e) {
408 LOGGER.error("Element(s) in array not properly typed!",e);
409 return null;
410 }
411 }
412
413 @Override
414 protected CostMetric.Match arrayToMatchMutable(final Object[] match) {
415 try {
416 return CostMetric.Match.newMutableMatch((Double) match[POSITION_COST]);
417 } catch(ClassCastException e) {
418 LOGGER.error("Element(s) in array not properly typed!",e);
419 return null;
420 }
421 }
422
423 /**
424 * @return the singleton instance of the query specification of this pattern
425 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
426 *
427 */
428 public static IQuerySpecification<CostMetric.Matcher> querySpecification() {
429 return CostMetric.instance();
430 }
431 }
432
433 private CostMetric() {
434 super(GeneratedPQuery.INSTANCE);
435 }
436
437 /**
438 * @return the singleton instance of the query specification
439 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
440 *
441 */
442 public static CostMetric instance() {
443 try{
444 return LazyHolder.INSTANCE;
445 } catch (ExceptionInInitializerError err) {
446 throw processInitializerError(err);
447 }
448 }
449
450 @Override
451 protected CostMetric.Matcher instantiate(final ViatraQueryEngine engine) {
452 return CostMetric.Matcher.on(engine);
453 }
454
455 @Override
456 public CostMetric.Matcher instantiate() {
457 return CostMetric.Matcher.create();
458 }
459
460 @Override
461 public CostMetric.Match newEmptyMatch() {
462 return CostMetric.Match.newEmptyMatch();
463 }
464
465 @Override
466 public CostMetric.Match newMatch(final Object... parameters) {
467 return CostMetric.Match.newMatch((java.lang.Double) parameters[0]);
468 }
469
470 /**
471 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CostMetric (visibility: PUBLIC, simpleName: CostMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CostMetric, 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
472 * <b>not</b> at the class load time of the outer class,
473 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CostMetric (visibility: PUBLIC, simpleName: CostMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CostMetric, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
474 *
475 * <p> This workaround is required e.g. to support recursion.
476 *
477 */
478 private static class LazyHolder {
479 private static final CostMetric INSTANCE = new CostMetric();
480
481 /**
482 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
483 * This initialization order is required to support indirect recursion.
484 *
485 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
486 *
487 */
488 private static final Object STATIC_INITIALIZER = ensureInitialized();
489
490 public static Object ensureInitialized() {
491 INSTANCE.ensureInitializedInternal();
492 return null;
493 }
494 }
495
496 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
497 private static final CostMetric.GeneratedPQuery INSTANCE = new GeneratedPQuery();
498
499 private final PParameter parameter_Cost = new PParameter("Cost", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
500
501 private final List<PParameter> parameters = Arrays.asList(parameter_Cost);
502
503 private GeneratedPQuery() {
504 super(PVisibility.PUBLIC);
505 }
506
507 @Override
508 public String getFullyQualifiedName() {
509 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.costMetric";
510 }
511
512 @Override
513 public List<String> getParameterNames() {
514 return Arrays.asList("Cost");
515 }
516
517 @Override
518 public List<PParameter> getParameters() {
519 return parameters;
520 }
521
522 @Override
523 public Set<PBody> doGetContainedBodies() {
524 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
525 Set<PBody> bodies = new LinkedHashSet<>();
526 {
527 PBody body = new PBody(this);
528 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
529 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
530 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
531 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
532 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
533 new ExportedParameter(body, var_Cost, parameter_Cost)
534 ));
535 // Cost == sum find missionCost(_, #_)
536 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
537 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var___0_, var___1_), MissionCost.instance().getInternalQueryRepresentation(), var__virtual_0_, 1);
538 new Equality(body, var_Cost, var__virtual_0_);
539 bodies.add(body);
540 }
541 return bodies;
542 }
543 }
544}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CoverageMetric.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CoverageMetric.java
new file mode 100644
index 00000000..23b02ce4
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/CoverageMetric.java
@@ -0,0 +1,552 @@
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.MissionCoverage;
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.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.matchers.aggregators.sum;
26import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
27import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
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.AggregatorConstraint;
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.basicdeferred.TypeFilterConstraint;
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 * //
47 * // Metrics
48 * //
49 *
50 * // Coverage
51 *
52 * pattern coverageMetric(Coverage : java Double) {
53 * Coverage == sum find missionCoverage(_, #_);
54 * }
55 * </pre></code>
56 *
57 * @see Matcher
58 * @see Match
59 *
60 */
61@SuppressWarnings("all")
62public final class CoverageMetric extends BaseGeneratedEMFQuerySpecification<CoverageMetric.Matcher> {
63 /**
64 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.coverageMetric pattern,
65 * to be used in conjunction with {@link Matcher}.
66 *
67 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
68 * Each instance is a (possibly partial) substitution of pattern parameters,
69 * usable to represent a match of the pattern in the result of a query,
70 * or to specify the bound (fixed) input parameters when issuing a query.
71 *
72 * @see Matcher
73 *
74 */
75 public static abstract class Match extends BasePatternMatch {
76 private Double fCoverage;
77
78 private static List<String> parameterNames = makeImmutableList("Coverage");
79
80 private Match(final Double pCoverage) {
81 this.fCoverage = pCoverage;
82 }
83
84 @Override
85 public Object get(final String parameterName) {
86 if ("Coverage".equals(parameterName)) return this.fCoverage;
87 return null;
88 }
89
90 public Double getCoverage() {
91 return this.fCoverage;
92 }
93
94 @Override
95 public boolean set(final String parameterName, final Object newValue) {
96 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
97 if ("Coverage".equals(parameterName) ) {
98 this.fCoverage = (Double) newValue;
99 return true;
100 }
101 return false;
102 }
103
104 public void setCoverage(final Double pCoverage) {
105 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
106 this.fCoverage = pCoverage;
107 }
108
109 @Override
110 public String patternName() {
111 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.coverageMetric";
112 }
113
114 @Override
115 public List<String> parameterNames() {
116 return CoverageMetric.Match.parameterNames;
117 }
118
119 @Override
120 public Object[] toArray() {
121 return new Object[]{fCoverage};
122 }
123
124 @Override
125 public CoverageMetric.Match toImmutable() {
126 return isMutable() ? newMatch(fCoverage) : this;
127 }
128
129 @Override
130 public String prettyPrint() {
131 StringBuilder result = new StringBuilder();
132 result.append("\"Coverage\"=" + prettyPrintValue(fCoverage));
133 return result.toString();
134 }
135
136 @Override
137 public int hashCode() {
138 return Objects.hash(fCoverage);
139 }
140
141 @Override
142 public boolean equals(final Object obj) {
143 if (this == obj)
144 return true;
145 if (obj == null) {
146 return false;
147 }
148 if ((obj instanceof CoverageMetric.Match)) {
149 CoverageMetric.Match other = (CoverageMetric.Match) obj;
150 return Objects.equals(fCoverage, other.fCoverage);
151 } else {
152 // this should be infrequent
153 if (!(obj instanceof IPatternMatch)) {
154 return false;
155 }
156 IPatternMatch otherSig = (IPatternMatch) obj;
157 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
158 }
159 }
160
161 @Override
162 public CoverageMetric specification() {
163 return CoverageMetric.instance();
164 }
165
166 /**
167 * Returns an empty, mutable match.
168 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
169 *
170 * @return the empty match.
171 *
172 */
173 public static CoverageMetric.Match newEmptyMatch() {
174 return new Mutable(null);
175 }
176
177 /**
178 * Returns a mutable (partial) match.
179 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
180 *
181 * @param pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
182 * @return the new, mutable (partial) match object.
183 *
184 */
185 public static CoverageMetric.Match newMutableMatch(final Double pCoverage) {
186 return new Mutable(pCoverage);
187 }
188
189 /**
190 * Returns a new (partial) match.
191 * This can be used e.g. to call the matcher with a partial match.
192 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
193 * @param pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
194 * @return the (partial) match object.
195 *
196 */
197 public static CoverageMetric.Match newMatch(final Double pCoverage) {
198 return new Immutable(pCoverage);
199 }
200
201 private static final class Mutable extends CoverageMetric.Match {
202 Mutable(final Double pCoverage) {
203 super(pCoverage);
204 }
205
206 @Override
207 public boolean isMutable() {
208 return true;
209 }
210 }
211
212 private static final class Immutable extends CoverageMetric.Match {
213 Immutable(final Double pCoverage) {
214 super(pCoverage);
215 }
216
217 @Override
218 public boolean isMutable() {
219 return false;
220 }
221 }
222 }
223
224 /**
225 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.coverageMetric pattern,
226 * providing pattern-specific query methods.
227 *
228 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
229 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
230 *
231 * <p>Matches of the pattern will be represented as {@link Match}.
232 *
233 * <p>Original source:
234 * <code><pre>
235 * //
236 * // Metrics
237 * //
238 *
239 * // Coverage
240 *
241 * pattern coverageMetric(Coverage : java Double) {
242 * Coverage == sum find missionCoverage(_, #_);
243 * }
244 * </pre></code>
245 *
246 * @see Match
247 * @see CoverageMetric
248 *
249 */
250 public static class Matcher extends BaseMatcher<CoverageMetric.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 CoverageMetric.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 CoverageMetric.Matcher create() {
275 return new Matcher();
276 }
277
278 private static final int POSITION_COVERAGE = 0;
279
280 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(CoverageMetric.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 pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
297 * @return matches represented as a Match object.
298 *
299 */
300 public Collection<CoverageMetric.Match> getAllMatches(final Double pCoverage) {
301 return rawStreamAllMatches(new Object[]{pCoverage}).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 pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
311 * @return a stream of matches represented as a Match object.
312 *
313 */
314 public Stream<CoverageMetric.Match> streamAllMatches(final Double pCoverage) {
315 return rawStreamAllMatches(new Object[]{pCoverage});
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 pCoverage the fixed value of pattern parameter Coverage, 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<CoverageMetric.Match> getOneArbitraryMatch(final Double pCoverage) {
326 return rawGetOneArbitraryMatch(new Object[]{pCoverage});
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 pCoverage the fixed value of pattern parameter Coverage, 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 Double pCoverage) {
337 return rawHasMatch(new Object[]{pCoverage});
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 pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
343 * @return the number of pattern matches found.
344 *
345 */
346 public int countMatches(final Double pCoverage) {
347 return rawCountMatches(new Object[]{pCoverage});
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 pCoverage the fixed value of pattern parameter Coverage, 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 Double pCoverage, final Consumer<? super CoverageMetric.Match> processor) {
359 return rawForOneArbitraryMatch(new Object[]{pCoverage}, 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 pCoverage the fixed value of pattern parameter Coverage, or null if not bound.
367 * @return the (partial) match object.
368 *
369 */
370 public CoverageMetric.Match newMatch(final Double pCoverage) {
371 return CoverageMetric.Match.newMatch(pCoverage);
372 }
373
374 /**
375 * Retrieve the set of values that occur in matches for Coverage.
376 * @return the Set of all values or empty set if there are no matches
377 *
378 */
379 protected Stream<Double> rawStreamAllValuesOfCoverage(final Object[] parameters) {
380 return rawStreamAllValues(POSITION_COVERAGE, parameters).map(Double.class::cast);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for Coverage.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 public Set<Double> getAllValuesOfCoverage() {
389 return rawStreamAllValuesOfCoverage(emptyArray()).collect(Collectors.toSet());
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for Coverage.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Stream<Double> streamAllValuesOfCoverage() {
398 return rawStreamAllValuesOfCoverage(emptyArray());
399 }
400
401 @Override
402 protected CoverageMetric.Match tupleToMatch(final Tuple t) {
403 try {
404 return CoverageMetric.Match.newMatch((Double) t.get(POSITION_COVERAGE));
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 CoverageMetric.Match arrayToMatch(final Object[] match) {
413 try {
414 return CoverageMetric.Match.newMatch((Double) match[POSITION_COVERAGE]);
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 CoverageMetric.Match arrayToMatchMutable(final Object[] match) {
423 try {
424 return CoverageMetric.Match.newMutableMatch((Double) match[POSITION_COVERAGE]);
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<CoverageMetric.Matcher> querySpecification() {
437 return CoverageMetric.instance();
438 }
439 }
440
441 private CoverageMetric() {
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 CoverageMetric instance() {
451 try{
452 return LazyHolder.INSTANCE;
453 } catch (ExceptionInInitializerError err) {
454 throw processInitializerError(err);
455 }
456 }
457
458 @Override
459 protected CoverageMetric.Matcher instantiate(final ViatraQueryEngine engine) {
460 return CoverageMetric.Matcher.on(engine);
461 }
462
463 @Override
464 public CoverageMetric.Matcher instantiate() {
465 return CoverageMetric.Matcher.create();
466 }
467
468 @Override
469 public CoverageMetric.Match newEmptyMatch() {
470 return CoverageMetric.Match.newEmptyMatch();
471 }
472
473 @Override
474 public CoverageMetric.Match newMatch(final Object... parameters) {
475 return CoverageMetric.Match.newMatch((java.lang.Double) parameters[0]);
476 }
477
478 /**
479 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CoverageMetric (visibility: PUBLIC, simpleName: CoverageMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CoverageMetric, 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.CoverageMetric (visibility: PUBLIC, simpleName: CoverageMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CoverageMetric, 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 CoverageMetric INSTANCE = new CoverageMetric();
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 CoverageMetric.GeneratedPQuery INSTANCE = new GeneratedPQuery();
506
507 private final PParameter parameter_Coverage = new PParameter("Coverage", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
508
509 private final List<PParameter> parameters = Arrays.asList(parameter_Coverage);
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.coverageMetric";
518 }
519
520 @Override
521 public List<String> getParameterNames() {
522 return Arrays.asList("Coverage");
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_Coverage = body.getOrCreateVariableByName("Coverage");
537 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
538 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
539 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Coverage), new JavaTransitiveInstancesKey(java.lang.Double.class));
540 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
541 new ExportedParameter(body, var_Coverage, parameter_Coverage)
542 ));
543 // Coverage == sum find missionCoverage(_, #_)
544 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
545 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var___0_, var___1_), MissionCoverage.instance().getInternalQueryRepresentation(), var__virtual_0_, 1);
546 new Equality(body, var_Coverage, var__virtual_0_);
547 bodies.add(body);
548 }
549 return bodies;
550 }
551 }
552}
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..c15563ff
--- /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.Spacecraft;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SmallSat;
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.emf.ecore.EDataType;
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.EDataTypeInSlotsKey;
30import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
31import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..4cacc34b
--- /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.DirectedCommunicationLink;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand;
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.emf.ecore.EDataType;
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.EDataTypeInSlotsKey;
30import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
31import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
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;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..3f247613
--- /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.DirectedCommunicationLink;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain;
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.emf.ecore.EDataType;
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.EDataTypeInSlotsKey;
30import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
31import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
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;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..18f6c32f
--- /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 hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem;
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.basicenumerables.ConstantValue;
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 * // 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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..598f3a6b
--- /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.Spacecraft;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
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;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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/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..39af9d5b
--- /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,548 @@
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.InterferometryMission;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads;
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.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.ExportedParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
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 * // At least two spacecraft must have the interferometry payload configured
47 *
48 * //{@literal @}Constraint(severity = "error", key = {Mission},
49 * // message = "Interferometry mission needs at least two spacecraft configured with the interferometry payload.")
50 * pattern notEnoughInterferometryPayloads(Mission : InterferometryMission) {
51 * InterferometryMission(Mission);
52 * neg find atLeastTwoInterferometryPayloads(Mission);
53 * }
54 * </pre></code>
55 *
56 * @see Matcher
57 * @see Match
58 *
59 */
60@SuppressWarnings("all")
61public final class NotEnoughInterferometryPayloads extends BaseGeneratedEMFQuerySpecification<NotEnoughInterferometryPayloads.Matcher> {
62 /**
63 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads 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 InterferometryMission fMission;
76
77 private static List<String> parameterNames = makeImmutableList("Mission");
78
79 private Match(final InterferometryMission pMission) {
80 this.fMission = pMission;
81 }
82
83 @Override
84 public Object get(final String parameterName) {
85 if ("Mission".equals(parameterName)) return this.fMission;
86 return null;
87 }
88
89 public InterferometryMission getMission() {
90 return this.fMission;
91 }
92
93 @Override
94 public boolean set(final String parameterName, final Object newValue) {
95 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
96 if ("Mission".equals(parameterName) ) {
97 this.fMission = (InterferometryMission) newValue;
98 return true;
99 }
100 return false;
101 }
102
103 public void setMission(final InterferometryMission pMission) {
104 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
105 this.fMission = pMission;
106 }
107
108 @Override
109 public String patternName() {
110 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads";
111 }
112
113 @Override
114 public List<String> parameterNames() {
115 return NotEnoughInterferometryPayloads.Match.parameterNames;
116 }
117
118 @Override
119 public Object[] toArray() {
120 return new Object[]{fMission};
121 }
122
123 @Override
124 public NotEnoughInterferometryPayloads.Match toImmutable() {
125 return isMutable() ? newMatch(fMission) : this;
126 }
127
128 @Override
129 public String prettyPrint() {
130 StringBuilder result = new StringBuilder();
131 result.append("\"Mission\"=" + prettyPrintValue(fMission));
132 return result.toString();
133 }
134
135 @Override
136 public int hashCode() {
137 return Objects.hash(fMission);
138 }
139
140 @Override
141 public boolean equals(final Object obj) {
142 if (this == obj)
143 return true;
144 if (obj == null) {
145 return false;
146 }
147 if ((obj instanceof NotEnoughInterferometryPayloads.Match)) {
148 NotEnoughInterferometryPayloads.Match other = (NotEnoughInterferometryPayloads.Match) obj;
149 return Objects.equals(fMission, other.fMission);
150 } else {
151 // this should be infrequent
152 if (!(obj instanceof IPatternMatch)) {
153 return false;
154 }
155 IPatternMatch otherSig = (IPatternMatch) obj;
156 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
157 }
158 }
159
160 @Override
161 public NotEnoughInterferometryPayloads specification() {
162 return NotEnoughInterferometryPayloads.instance();
163 }
164
165 /**
166 * Returns an empty, mutable match.
167 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
168 *
169 * @return the empty match.
170 *
171 */
172 public static NotEnoughInterferometryPayloads.Match newEmptyMatch() {
173 return new Mutable(null);
174 }
175
176 /**
177 * Returns a mutable (partial) match.
178 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
179 *
180 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
181 * @return the new, mutable (partial) match object.
182 *
183 */
184 public static NotEnoughInterferometryPayloads.Match newMutableMatch(final InterferometryMission pMission) {
185 return new Mutable(pMission);
186 }
187
188 /**
189 * Returns a new (partial) match.
190 * This can be used e.g. to call the matcher with a partial match.
191 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
192 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
193 * @return the (partial) match object.
194 *
195 */
196 public static NotEnoughInterferometryPayloads.Match newMatch(final InterferometryMission pMission) {
197 return new Immutable(pMission);
198 }
199
200 private static final class Mutable extends NotEnoughInterferometryPayloads.Match {
201 Mutable(final InterferometryMission pMission) {
202 super(pMission);
203 }
204
205 @Override
206 public boolean isMutable() {
207 return true;
208 }
209 }
210
211 private static final class Immutable extends NotEnoughInterferometryPayloads.Match {
212 Immutable(final InterferometryMission pMission) {
213 super(pMission);
214 }
215
216 @Override
217 public boolean isMutable() {
218 return false;
219 }
220 }
221 }
222
223 /**
224 * Generated pattern matcher API of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads pattern,
225 * providing pattern-specific query methods.
226 *
227 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
228 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
229 *
230 * <p>Matches of the pattern will be represented as {@link Match}.
231 *
232 * <p>Original source:
233 * <code><pre>
234 * // At least two spacecraft must have the interferometry payload configured
235 *
236 * //{@literal @}Constraint(severity = "error", key = {Mission},
237 * // message = "Interferometry mission needs at least two spacecraft configured with the interferometry payload.")
238 * pattern notEnoughInterferometryPayloads(Mission : InterferometryMission) {
239 * InterferometryMission(Mission);
240 * neg find atLeastTwoInterferometryPayloads(Mission);
241 * }
242 * </pre></code>
243 *
244 * @see Match
245 * @see NotEnoughInterferometryPayloads
246 *
247 */
248 public static class Matcher extends BaseMatcher<NotEnoughInterferometryPayloads.Match> {
249 /**
250 * Initializes the pattern matcher within an existing VIATRA Query engine.
251 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
252 *
253 * @param engine the existing VIATRA Query engine in which this matcher will be created.
254 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
255 *
256 */
257 public static NotEnoughInterferometryPayloads.Matcher on(final ViatraQueryEngine engine) {
258 // check if matcher already exists
259 Matcher matcher = engine.getExistingMatcher(querySpecification());
260 if (matcher == null) {
261 matcher = (Matcher)engine.getMatcher(querySpecification());
262 }
263 return matcher;
264 }
265
266 /**
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 * @return an initialized matcher
269 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
270 *
271 */
272 public static NotEnoughInterferometryPayloads.Matcher create() {
273 return new Matcher();
274 }
275
276 private static final int POSITION_MISSION = 0;
277
278 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NotEnoughInterferometryPayloads.Matcher.class);
279
280 /**
281 * Initializes the pattern matcher within an existing VIATRA Query engine.
282 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
283 *
284 * @param engine the existing VIATRA Query engine in which this matcher will be created.
285 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
286 *
287 */
288 private Matcher() {
289 super(querySpecification());
290 }
291
292 /**
293 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
294 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
295 * @return matches represented as a Match object.
296 *
297 */
298 public Collection<NotEnoughInterferometryPayloads.Match> getAllMatches(final InterferometryMission pMission) {
299 return rawStreamAllMatches(new Object[]{pMission}).collect(Collectors.toSet());
300 }
301
302 /**
303 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
304 * </p>
305 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
306 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
307 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
308 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
309 * @return a stream of matches represented as a Match object.
310 *
311 */
312 public Stream<NotEnoughInterferometryPayloads.Match> streamAllMatches(final InterferometryMission pMission) {
313 return rawStreamAllMatches(new Object[]{pMission});
314 }
315
316 /**
317 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
318 * Neither determinism nor randomness of selection is guaranteed.
319 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
320 * @return a match represented as a Match object, or null if no match is found.
321 *
322 */
323 public Optional<NotEnoughInterferometryPayloads.Match> getOneArbitraryMatch(final InterferometryMission pMission) {
324 return rawGetOneArbitraryMatch(new Object[]{pMission});
325 }
326
327 /**
328 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
329 * under any possible substitution of the unspecified parameters (if any).
330 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
331 * @return true if the input is a valid (partial) match of the pattern.
332 *
333 */
334 public boolean hasMatch(final InterferometryMission pMission) {
335 return rawHasMatch(new Object[]{pMission});
336 }
337
338 /**
339 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
340 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
341 * @return the number of pattern matches found.
342 *
343 */
344 public int countMatches(final InterferometryMission pMission) {
345 return rawCountMatches(new Object[]{pMission});
346 }
347
348 /**
349 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
350 * Neither determinism nor randomness of selection is guaranteed.
351 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
352 * @param processor the action that will process the selected match.
353 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
354 *
355 */
356 public boolean forOneArbitraryMatch(final InterferometryMission pMission, final Consumer<? super NotEnoughInterferometryPayloads.Match> processor) {
357 return rawForOneArbitraryMatch(new Object[]{pMission}, processor);
358 }
359
360 /**
361 * Returns a new (partial) match.
362 * This can be used e.g. to call the matcher with a partial match.
363 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
364 * @param pMission the fixed value of pattern parameter Mission, or null if not bound.
365 * @return the (partial) match object.
366 *
367 */
368 public NotEnoughInterferometryPayloads.Match newMatch(final InterferometryMission pMission) {
369 return NotEnoughInterferometryPayloads.Match.newMatch(pMission);
370 }
371
372 /**
373 * Retrieve the set of values that occur in matches for Mission.
374 * @return the Set of all values or empty set if there are no matches
375 *
376 */
377 protected Stream<InterferometryMission> rawStreamAllValuesOfMission(final Object[] parameters) {
378 return rawStreamAllValues(POSITION_MISSION, parameters).map(InterferometryMission.class::cast);
379 }
380
381 /**
382 * Retrieve the set of values that occur in matches for Mission.
383 * @return the Set of all values or empty set if there are no matches
384 *
385 */
386 public Set<InterferometryMission> getAllValuesOfMission() {
387 return rawStreamAllValuesOfMission(emptyArray()).collect(Collectors.toSet());
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for Mission.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 public Stream<InterferometryMission> streamAllValuesOfMission() {
396 return rawStreamAllValuesOfMission(emptyArray());
397 }
398
399 @Override
400 protected NotEnoughInterferometryPayloads.Match tupleToMatch(final Tuple t) {
401 try {
402 return NotEnoughInterferometryPayloads.Match.newMatch((InterferometryMission) t.get(POSITION_MISSION));
403 } catch(ClassCastException e) {
404 LOGGER.error("Element(s) in tuple not properly typed!",e);
405 return null;
406 }
407 }
408
409 @Override
410 protected NotEnoughInterferometryPayloads.Match arrayToMatch(final Object[] match) {
411 try {
412 return NotEnoughInterferometryPayloads.Match.newMatch((InterferometryMission) match[POSITION_MISSION]);
413 } catch(ClassCastException e) {
414 LOGGER.error("Element(s) in array not properly typed!",e);
415 return null;
416 }
417 }
418
419 @Override
420 protected NotEnoughInterferometryPayloads.Match arrayToMatchMutable(final Object[] match) {
421 try {
422 return NotEnoughInterferometryPayloads.Match.newMutableMatch((InterferometryMission) match[POSITION_MISSION]);
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in array not properly typed!",e);
425 return null;
426 }
427 }
428
429 /**
430 * @return the singleton instance of the query specification of this pattern
431 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
432 *
433 */
434 public static IQuerySpecification<NotEnoughInterferometryPayloads.Matcher> querySpecification() {
435 return NotEnoughInterferometryPayloads.instance();
436 }
437 }
438
439 private NotEnoughInterferometryPayloads() {
440 super(GeneratedPQuery.INSTANCE);
441 }
442
443 /**
444 * @return the singleton instance of the query specification
445 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
446 *
447 */
448 public static NotEnoughInterferometryPayloads instance() {
449 try{
450 return LazyHolder.INSTANCE;
451 } catch (ExceptionInInitializerError err) {
452 throw processInitializerError(err);
453 }
454 }
455
456 @Override
457 protected NotEnoughInterferometryPayloads.Matcher instantiate(final ViatraQueryEngine engine) {
458 return NotEnoughInterferometryPayloads.Matcher.on(engine);
459 }
460
461 @Override
462 public NotEnoughInterferometryPayloads.Matcher instantiate() {
463 return NotEnoughInterferometryPayloads.Matcher.create();
464 }
465
466 @Override
467 public NotEnoughInterferometryPayloads.Match newEmptyMatch() {
468 return NotEnoughInterferometryPayloads.Match.newEmptyMatch();
469 }
470
471 @Override
472 public NotEnoughInterferometryPayloads.Match newMatch(final Object... parameters) {
473 return NotEnoughInterferometryPayloads.Match.newMatch((hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission) parameters[0]);
474 }
475
476 /**
477 * 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
478 * <b>not</b> at the class load time of the outer class,
479 * 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()}.
480 *
481 * <p> This workaround is required e.g. to support recursion.
482 *
483 */
484 private static class LazyHolder {
485 private static final NotEnoughInterferometryPayloads INSTANCE = new NotEnoughInterferometryPayloads();
486
487 /**
488 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
489 * This initialization order is required to support indirect recursion.
490 *
491 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
492 *
493 */
494 private static final Object STATIC_INITIALIZER = ensureInitialized();
495
496 public static Object ensureInitialized() {
497 INSTANCE.ensureInitializedInternal();
498 return null;
499 }
500 }
501
502 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
503 private static final NotEnoughInterferometryPayloads.GeneratedPQuery INSTANCE = new GeneratedPQuery();
504
505 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
506
507 private final List<PParameter> parameters = Arrays.asList(parameter_Mission);
508
509 private GeneratedPQuery() {
510 super(PVisibility.PUBLIC);
511 }
512
513 @Override
514 public String getFullyQualifiedName() {
515 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.notEnoughInterferometryPayloads";
516 }
517
518 @Override
519 public List<String> getParameterNames() {
520 return Arrays.asList("Mission");
521 }
522
523 @Override
524 public List<PParameter> getParameters() {
525 return parameters;
526 }
527
528 @Override
529 public Set<PBody> doGetContainedBodies() {
530 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
531 Set<PBody> bodies = new LinkedHashSet<>();
532 {
533 PBody body = new PBody(this);
534 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
535 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
536 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
537 new ExportedParameter(body, var_Mission, parameter_Mission)
538 ));
539 // InterferometryMission(Mission)
540 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
541 // neg find atLeastTwoInterferometryPayloads(Mission)
542 new NegativePatternCall(body, Tuples.flatTupleOf(var_Mission), AtLeastTwoInterferometryPayloads.instance().getInternalQueryRepresentation());
543 bodies.add(body);
544 }
545 return bodies;
546 }
547 }
548}
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..b6601c28
--- /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.CostMetric;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CoverageMetric;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric;
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>communicationLoop</li>
35 * <li>incompatibleSourceAndTargetBand</li>
36 * <li>incompatibleSourceAndTargetGain</li>
37 * <li>uhfAntennaGainNotLow</li>
38 * <li>xAntennaGainNotMedium</li>
39 * <li>kaAntennaGainLow</li>
40 * <li>threeUCubeSatWithNonUhfCrossLink</li>
41 * <li>cubeSatWithKaAntenna</li>
42 * <li>coverageMetric</li>
43 * <li>timeMetric</li>
44 * <li>costMetric</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(CommunicationLoop.instance());
73 querySpecifications.add(IncompatibleSourceAndTargetBand.instance());
74 querySpecifications.add(IncompatibleSourceAndTargetGain.instance());
75 querySpecifications.add(UhfAntennaGainNotLow.instance());
76 querySpecifications.add(XAntennaGainNotMedium.instance());
77 querySpecifications.add(KaAntennaGainLow.instance());
78 querySpecifications.add(ThreeUCubeSatWithNonUhfCrossLink.instance());
79 querySpecifications.add(CubeSatWithKaAntenna.instance());
80 querySpecifications.add(CoverageMetric.instance());
81 querySpecifications.add(TimeMetric.instance());
82 querySpecifications.add(CostMetric.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 CommunicationLoop getCommunicationLoop() {
110 return CommunicationLoop.instance();
111 }
112
113 public CommunicationLoop.Matcher getCommunicationLoop(final ViatraQueryEngine engine) {
114 return CommunicationLoop.Matcher.on(engine);
115 }
116
117 public IncompatibleSourceAndTargetBand getIncompatibleSourceAndTargetBand() {
118 return IncompatibleSourceAndTargetBand.instance();
119 }
120
121 public IncompatibleSourceAndTargetBand.Matcher getIncompatibleSourceAndTargetBand(final ViatraQueryEngine engine) {
122 return IncompatibleSourceAndTargetBand.Matcher.on(engine);
123 }
124
125 public IncompatibleSourceAndTargetGain getIncompatibleSourceAndTargetGain() {
126 return IncompatibleSourceAndTargetGain.instance();
127 }
128
129 public IncompatibleSourceAndTargetGain.Matcher getIncompatibleSourceAndTargetGain(final ViatraQueryEngine engine) {
130 return IncompatibleSourceAndTargetGain.Matcher.on(engine);
131 }
132
133 public UhfAntennaGainNotLow getUhfAntennaGainNotLow() {
134 return UhfAntennaGainNotLow.instance();
135 }
136
137 public UhfAntennaGainNotLow.Matcher getUhfAntennaGainNotLow(final ViatraQueryEngine engine) {
138 return UhfAntennaGainNotLow.Matcher.on(engine);
139 }
140
141 public XAntennaGainNotMedium getXAntennaGainNotMedium() {
142 return XAntennaGainNotMedium.instance();
143 }
144
145 public XAntennaGainNotMedium.Matcher getXAntennaGainNotMedium(final ViatraQueryEngine engine) {
146 return XAntennaGainNotMedium.Matcher.on(engine);
147 }
148
149 public KaAntennaGainLow getKaAntennaGainLow() {
150 return KaAntennaGainLow.instance();
151 }
152
153 public KaAntennaGainLow.Matcher getKaAntennaGainLow(final ViatraQueryEngine engine) {
154 return KaAntennaGainLow.Matcher.on(engine);
155 }
156
157 public ThreeUCubeSatWithNonUhfCrossLink getThreeUCubeSatWithNonUhfCrossLink() {
158 return ThreeUCubeSatWithNonUhfCrossLink.instance();
159 }
160
161 public ThreeUCubeSatWithNonUhfCrossLink.Matcher getThreeUCubeSatWithNonUhfCrossLink(final ViatraQueryEngine engine) {
162 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.on(engine);
163 }
164
165 public CubeSatWithKaAntenna getCubeSatWithKaAntenna() {
166 return CubeSatWithKaAntenna.instance();
167 }
168
169 public CubeSatWithKaAntenna.Matcher getCubeSatWithKaAntenna(final ViatraQueryEngine engine) {
170 return CubeSatWithKaAntenna.Matcher.on(engine);
171 }
172
173 public CoverageMetric getCoverageMetric() {
174 return CoverageMetric.instance();
175 }
176
177 public CoverageMetric.Matcher getCoverageMetric(final ViatraQueryEngine engine) {
178 return CoverageMetric.Matcher.on(engine);
179 }
180
181 public TimeMetric getTimeMetric() {
182 return TimeMetric.instance();
183 }
184
185 public TimeMetric.Matcher getTimeMetric(final ViatraQueryEngine engine) {
186 return TimeMetric.Matcher.on(engine);
187 }
188
189 public CostMetric getCostMetric() {
190 return CostMetric.instance();
191 }
192
193 public CostMetric.Matcher getCostMetric(final ViatraQueryEngine engine) {
194 return CostMetric.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/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..6500c9d3
--- /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,613 @@
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.Spacecraft;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork;
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.emf.ecore.EDataType;
22import org.eclipse.viatra.query.runtime.api.IPatternMatch;
23import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
25import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
26import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
27import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
28import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
29import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
30import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
31import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
32import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
41import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
44import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
46import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
47import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
48
49/**
50 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
51 *
52 * <p>Original source:
53 * <code><pre>
54 * // 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
55 * // but cross-link using UHF
56 *
57 * {@literal @}Constraint(severity = "error", key = {Sat},
58 * message = "3U CubeSats can only cross-link using UHF.")
59 * pattern threeUCubeSatWithNonUhfCrossLink(Sat : Spacecraft) {
60 * Spacecraft.kind(Sat, SpacecraftKind::CubeSat3U);
61 * CommunicatingElement.commSubsystem(Sat, SourceComm);
62 * neg find commSubsystemBandUhf(SourceComm);
63 * DirectedCommunicationLink.source(Link, SourceComm);
64 * DirectedCommunicationLink.target(Link, TargetComm);
65 * CommunicatingElement.commSubsystem(Target, TargetComm);
66 * neg find groundStationNetwork(Target);
67 * }
68 * </pre></code>
69 *
70 * @see Matcher
71 * @see Match
72 *
73 */
74@SuppressWarnings("all")
75public final class ThreeUCubeSatWithNonUhfCrossLink extends BaseGeneratedEMFQuerySpecification<ThreeUCubeSatWithNonUhfCrossLink.Matcher> {
76 /**
77 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink pattern,
78 * to be used in conjunction with {@link Matcher}.
79 *
80 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
81 * Each instance is a (possibly partial) substitution of pattern parameters,
82 * usable to represent a match of the pattern in the result of a query,
83 * or to specify the bound (fixed) input parameters when issuing a query.
84 *
85 * @see Matcher
86 *
87 */
88 public static abstract class Match extends BasePatternMatch {
89 private Spacecraft fSat;
90
91 private static List<String> parameterNames = makeImmutableList("Sat");
92
93 private Match(final Spacecraft pSat) {
94 this.fSat = pSat;
95 }
96
97 @Override
98 public Object get(final String parameterName) {
99 if ("Sat".equals(parameterName)) return this.fSat;
100 return null;
101 }
102
103 public Spacecraft getSat() {
104 return this.fSat;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("Sat".equals(parameterName) ) {
111 this.fSat = (Spacecraft) newValue;
112 return true;
113 }
114 return false;
115 }
116
117 public void setSat(final Spacecraft pSat) {
118 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
119 this.fSat = pSat;
120 }
121
122 @Override
123 public String patternName() {
124 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink";
125 }
126
127 @Override
128 public List<String> parameterNames() {
129 return ThreeUCubeSatWithNonUhfCrossLink.Match.parameterNames;
130 }
131
132 @Override
133 public Object[] toArray() {
134 return new Object[]{fSat};
135 }
136
137 @Override
138 public ThreeUCubeSatWithNonUhfCrossLink.Match toImmutable() {
139 return isMutable() ? newMatch(fSat) : this;
140 }
141
142 @Override
143 public String prettyPrint() {
144 StringBuilder result = new StringBuilder();
145 result.append("\"Sat\"=" + prettyPrintValue(fSat));
146 return result.toString();
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(fSat);
152 }
153
154 @Override
155 public boolean equals(final Object obj) {
156 if (this == obj)
157 return true;
158 if (obj == null) {
159 return false;
160 }
161 if ((obj instanceof ThreeUCubeSatWithNonUhfCrossLink.Match)) {
162 ThreeUCubeSatWithNonUhfCrossLink.Match other = (ThreeUCubeSatWithNonUhfCrossLink.Match) obj;
163 return Objects.equals(fSat, other.fSat);
164 } else {
165 // this should be infrequent
166 if (!(obj instanceof IPatternMatch)) {
167 return false;
168 }
169 IPatternMatch otherSig = (IPatternMatch) obj;
170 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
171 }
172 }
173
174 @Override
175 public ThreeUCubeSatWithNonUhfCrossLink specification() {
176 return ThreeUCubeSatWithNonUhfCrossLink.instance();
177 }
178
179 /**
180 * Returns an empty, mutable match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @return the empty match.
184 *
185 */
186 public static ThreeUCubeSatWithNonUhfCrossLink.Match newEmptyMatch() {
187 return new Mutable(null);
188 }
189
190 /**
191 * Returns a mutable (partial) match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static ThreeUCubeSatWithNonUhfCrossLink.Match newMutableMatch(final Spacecraft pSat) {
199 return new Mutable(pSat);
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 pSat the fixed value of pattern parameter Sat, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final Spacecraft pSat) {
211 return new Immutable(pSat);
212 }
213
214 private static final class Mutable extends ThreeUCubeSatWithNonUhfCrossLink.Match {
215 Mutable(final Spacecraft pSat) {
216 super(pSat);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends ThreeUCubeSatWithNonUhfCrossLink.Match {
226 Immutable(final Spacecraft pSat) {
227 super(pSat);
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.satellite.queries.threeUCubeSatWithNonUhfCrossLink 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 * // 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
249 * // but cross-link using UHF
250 *
251 * {@literal @}Constraint(severity = "error", key = {Sat},
252 * message = "3U CubeSats can only cross-link using UHF.")
253 * pattern threeUCubeSatWithNonUhfCrossLink(Sat : Spacecraft) {
254 * Spacecraft.kind(Sat, SpacecraftKind::CubeSat3U);
255 * CommunicatingElement.commSubsystem(Sat, SourceComm);
256 * neg find commSubsystemBandUhf(SourceComm);
257 * DirectedCommunicationLink.source(Link, SourceComm);
258 * DirectedCommunicationLink.target(Link, TargetComm);
259 * CommunicatingElement.commSubsystem(Target, TargetComm);
260 * neg find groundStationNetwork(Target);
261 * }
262 * </pre></code>
263 *
264 * @see Match
265 * @see ThreeUCubeSatWithNonUhfCrossLink
266 *
267 */
268 public static class Matcher extends BaseMatcher<ThreeUCubeSatWithNonUhfCrossLink.Match> {
269 /**
270 * Initializes the pattern matcher within an existing VIATRA Query engine.
271 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
272 *
273 * @param engine the existing VIATRA Query engine in which this matcher will be created.
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 *
276 */
277 public static ThreeUCubeSatWithNonUhfCrossLink.Matcher on(final ViatraQueryEngine engine) {
278 // check if matcher already exists
279 Matcher matcher = engine.getExistingMatcher(querySpecification());
280 if (matcher == null) {
281 matcher = (Matcher)engine.getMatcher(querySpecification());
282 }
283 return matcher;
284 }
285
286 /**
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 * @return an initialized matcher
289 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
290 *
291 */
292 public static ThreeUCubeSatWithNonUhfCrossLink.Matcher create() {
293 return new Matcher();
294 }
295
296 private static final int POSITION_SAT = 0;
297
298 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(ThreeUCubeSatWithNonUhfCrossLink.Matcher.class);
299
300 /**
301 * Initializes the pattern matcher within an existing VIATRA Query engine.
302 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
303 *
304 * @param engine the existing VIATRA Query engine in which this matcher will be created.
305 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
306 *
307 */
308 private Matcher() {
309 super(querySpecification());
310 }
311
312 /**
313 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
314 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
315 * @return matches represented as a Match object.
316 *
317 */
318 public Collection<ThreeUCubeSatWithNonUhfCrossLink.Match> getAllMatches(final Spacecraft pSat) {
319 return rawStreamAllMatches(new Object[]{pSat}).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 pSat the fixed value of pattern parameter Sat, or null if not bound.
329 * @return a stream of matches represented as a Match object.
330 *
331 */
332 public Stream<ThreeUCubeSatWithNonUhfCrossLink.Match> streamAllMatches(final Spacecraft pSat) {
333 return rawStreamAllMatches(new Object[]{pSat});
334 }
335
336 /**
337 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
338 * Neither determinism nor randomness of selection is guaranteed.
339 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
340 * @return a match represented as a Match object, or null if no match is found.
341 *
342 */
343 public Optional<ThreeUCubeSatWithNonUhfCrossLink.Match> getOneArbitraryMatch(final Spacecraft pSat) {
344 return rawGetOneArbitraryMatch(new Object[]{pSat});
345 }
346
347 /**
348 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
349 * under any possible substitution of the unspecified parameters (if any).
350 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
351 * @return true if the input is a valid (partial) match of the pattern.
352 *
353 */
354 public boolean hasMatch(final Spacecraft pSat) {
355 return rawHasMatch(new Object[]{pSat});
356 }
357
358 /**
359 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
360 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
361 * @return the number of pattern matches found.
362 *
363 */
364 public int countMatches(final Spacecraft pSat) {
365 return rawCountMatches(new Object[]{pSat});
366 }
367
368 /**
369 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
370 * Neither determinism nor randomness of selection is guaranteed.
371 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
372 * @param processor the action that will process the selected match.
373 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
374 *
375 */
376 public boolean forOneArbitraryMatch(final Spacecraft pSat, final Consumer<? super ThreeUCubeSatWithNonUhfCrossLink.Match> processor) {
377 return rawForOneArbitraryMatch(new Object[]{pSat}, processor);
378 }
379
380 /**
381 * Returns a new (partial) match.
382 * This can be used e.g. to call the matcher with a partial match.
383 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
384 * @param pSat the fixed value of pattern parameter Sat, or null if not bound.
385 * @return the (partial) match object.
386 *
387 */
388 public ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final Spacecraft pSat) {
389 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch(pSat);
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for Sat.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 protected Stream<Spacecraft> rawStreamAllValuesOfSat(final Object[] parameters) {
398 return rawStreamAllValues(POSITION_SAT, parameters).map(Spacecraft.class::cast);
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for Sat.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 public Set<Spacecraft> getAllValuesOfSat() {
407 return rawStreamAllValuesOfSat(emptyArray()).collect(Collectors.toSet());
408 }
409
410 /**
411 * Retrieve the set of values that occur in matches for Sat.
412 * @return the Set of all values or empty set if there are no matches
413 *
414 */
415 public Stream<Spacecraft> streamAllValuesOfSat() {
416 return rawStreamAllValuesOfSat(emptyArray());
417 }
418
419 @Override
420 protected ThreeUCubeSatWithNonUhfCrossLink.Match tupleToMatch(final Tuple t) {
421 try {
422 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((Spacecraft) t.get(POSITION_SAT));
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in tuple not properly typed!",e);
425 return null;
426 }
427 }
428
429 @Override
430 protected ThreeUCubeSatWithNonUhfCrossLink.Match arrayToMatch(final Object[] match) {
431 try {
432 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((Spacecraft) match[POSITION_SAT]);
433 } catch(ClassCastException e) {
434 LOGGER.error("Element(s) in array not properly typed!",e);
435 return null;
436 }
437 }
438
439 @Override
440 protected ThreeUCubeSatWithNonUhfCrossLink.Match arrayToMatchMutable(final Object[] match) {
441 try {
442 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMutableMatch((Spacecraft) match[POSITION_SAT]);
443 } catch(ClassCastException e) {
444 LOGGER.error("Element(s) in array not properly typed!",e);
445 return null;
446 }
447 }
448
449 /**
450 * @return the singleton instance of the query specification of this pattern
451 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
452 *
453 */
454 public static IQuerySpecification<ThreeUCubeSatWithNonUhfCrossLink.Matcher> querySpecification() {
455 return ThreeUCubeSatWithNonUhfCrossLink.instance();
456 }
457 }
458
459 private ThreeUCubeSatWithNonUhfCrossLink() {
460 super(GeneratedPQuery.INSTANCE);
461 }
462
463 /**
464 * @return the singleton instance of the query specification
465 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
466 *
467 */
468 public static ThreeUCubeSatWithNonUhfCrossLink instance() {
469 try{
470 return LazyHolder.INSTANCE;
471 } catch (ExceptionInInitializerError err) {
472 throw processInitializerError(err);
473 }
474 }
475
476 @Override
477 protected ThreeUCubeSatWithNonUhfCrossLink.Matcher instantiate(final ViatraQueryEngine engine) {
478 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.on(engine);
479 }
480
481 @Override
482 public ThreeUCubeSatWithNonUhfCrossLink.Matcher instantiate() {
483 return ThreeUCubeSatWithNonUhfCrossLink.Matcher.create();
484 }
485
486 @Override
487 public ThreeUCubeSatWithNonUhfCrossLink.Match newEmptyMatch() {
488 return ThreeUCubeSatWithNonUhfCrossLink.Match.newEmptyMatch();
489 }
490
491 @Override
492 public ThreeUCubeSatWithNonUhfCrossLink.Match newMatch(final Object... parameters) {
493 return ThreeUCubeSatWithNonUhfCrossLink.Match.newMatch((hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft) parameters[0]);
494 }
495
496 /**
497 * 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
498 * <b>not</b> at the class load time of the outer class,
499 * 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()}.
500 *
501 * <p> This workaround is required e.g. to support recursion.
502 *
503 */
504 private static class LazyHolder {
505 private static final ThreeUCubeSatWithNonUhfCrossLink INSTANCE = new ThreeUCubeSatWithNonUhfCrossLink();
506
507 /**
508 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
509 * This initialization order is required to support indirect recursion.
510 *
511 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
512 *
513 */
514 private static final Object STATIC_INITIALIZER = ensureInitialized();
515
516 public static Object ensureInitialized() {
517 INSTANCE.ensureInitializedInternal();
518 return null;
519 }
520 }
521
522 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
523 private static final ThreeUCubeSatWithNonUhfCrossLink.GeneratedPQuery INSTANCE = new GeneratedPQuery();
524
525 private final PParameter parameter_Sat = new PParameter("Sat", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
526
527 private final List<PParameter> parameters = Arrays.asList(parameter_Sat);
528
529 private GeneratedPQuery() {
530 super(PVisibility.PUBLIC);
531 }
532
533 @Override
534 public String getFullyQualifiedName() {
535 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.threeUCubeSatWithNonUhfCrossLink";
536 }
537
538 @Override
539 public List<String> getParameterNames() {
540 return Arrays.asList("Sat");
541 }
542
543 @Override
544 public List<PParameter> getParameters() {
545 return parameters;
546 }
547
548 @Override
549 public Set<PBody> doGetContainedBodies() {
550 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
551 Set<PBody> bodies = new LinkedHashSet<>();
552 {
553 PBody body = new PBody(this);
554 PVariable var_Sat = body.getOrCreateVariableByName("Sat");
555 PVariable var_SourceComm = body.getOrCreateVariableByName("SourceComm");
556 PVariable var_Link = body.getOrCreateVariableByName("Link");
557 PVariable var_TargetComm = body.getOrCreateVariableByName("TargetComm");
558 PVariable var_Target = body.getOrCreateVariableByName("Target");
559 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
560 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
561 new ExportedParameter(body, var_Sat, parameter_Sat)
562 ));
563 // Spacecraft.kind(Sat, SpacecraftKind::CubeSat3U)
564 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
565 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "CubeSat3U").getInstance());
566 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
567 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
568 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
569 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
570 new Equality(body, var__virtual_1_, var__virtual_0_);
571 // CommunicatingElement.commSubsystem(Sat, SourceComm)
572 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
573 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
574 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
575 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
576 new Equality(body, var__virtual_2_, var_SourceComm);
577 // neg find commSubsystemBandUhf(SourceComm)
578 new NegativePatternCall(body, Tuples.flatTupleOf(var_SourceComm), CommSubsystemBandUhf.instance().getInternalQueryRepresentation());
579 // DirectedCommunicationLink.source(Link, SourceComm)
580 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
581 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
582 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
583 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
584 new Equality(body, var__virtual_3_, var_SourceComm);
585 // DirectedCommunicationLink.target(Link, TargetComm)
586 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
587 PVariable var__virtual_4_ = body.getOrCreateVariableByName(".virtual{4}");
588 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_4_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
589 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
590 new Equality(body, var__virtual_4_, var_TargetComm);
591 // CommunicatingElement.commSubsystem(Target, TargetComm)
592 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
593 PVariable var__virtual_5_ = body.getOrCreateVariableByName(".virtual{5}");
594 new TypeConstraint(body, Tuples.flatTupleOf(var_Target, var__virtual_5_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
595 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_5_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
596 new Equality(body, var__virtual_5_, var_TargetComm);
597 // neg find groundStationNetwork(Target)
598 new NegativePatternCall(body, Tuples.flatTupleOf(var_Target), GroundStationNetwork.instance().getInternalQueryRepresentation());
599 bodies.add(body);
600 }
601 {
602 PAnnotation annotation = new PAnnotation("Constraint");
603 annotation.addAttribute("severity", "error");
604 annotation.addAttribute("key", Arrays.asList(new Object[] {
605 new ParameterReference("Sat")
606 }));
607 annotation.addAttribute("message", "3U CubeSats can only cross-link using UHF.");
608 addAnnotation(annotation);
609 }
610 return bodies;
611 }
612 }
613}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/TimeMetric.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/TimeMetric.java
new file mode 100644
index 00000000..45d4cc35
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/TimeMetric.java
@@ -0,0 +1,544 @@
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.MissionTime;
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.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.matchers.aggregators.sum;
26import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
27import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
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.AggregatorConstraint;
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.basicdeferred.TypeFilterConstraint;
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 * // Time
47 *
48 * pattern timeMetric(Time : java Double) {
49 * Time == sum find missionTime(_, #_);
50 * }
51 * </pre></code>
52 *
53 * @see Matcher
54 * @see Match
55 *
56 */
57@SuppressWarnings("all")
58public final class TimeMetric extends BaseGeneratedEMFQuerySpecification<TimeMetric.Matcher> {
59 /**
60 * Pattern-specific match representation of the hu.bme.mit.inf.dslreasoner.domains.satellite.queries.timeMetric 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 Double fTime;
73
74 private static List<String> parameterNames = makeImmutableList("Time");
75
76 private Match(final Double pTime) {
77 this.fTime = pTime;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 if ("Time".equals(parameterName)) return this.fTime;
83 return null;
84 }
85
86 public Double getTime() {
87 return this.fTime;
88 }
89
90 @Override
91 public boolean set(final String parameterName, final Object newValue) {
92 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
93 if ("Time".equals(parameterName) ) {
94 this.fTime = (Double) newValue;
95 return true;
96 }
97 return false;
98 }
99
100 public void setTime(final Double pTime) {
101 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
102 this.fTime = pTime;
103 }
104
105 @Override
106 public String patternName() {
107 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.timeMetric";
108 }
109
110 @Override
111 public List<String> parameterNames() {
112 return TimeMetric.Match.parameterNames;
113 }
114
115 @Override
116 public Object[] toArray() {
117 return new Object[]{fTime};
118 }
119
120 @Override
121 public TimeMetric.Match toImmutable() {
122 return isMutable() ? newMatch(fTime) : this;
123 }
124
125 @Override
126 public String prettyPrint() {
127 StringBuilder result = new StringBuilder();
128 result.append("\"Time\"=" + prettyPrintValue(fTime));
129 return result.toString();
130 }
131
132 @Override
133 public int hashCode() {
134 return Objects.hash(fTime);
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 TimeMetric.Match)) {
145 TimeMetric.Match other = (TimeMetric.Match) obj;
146 return Objects.equals(fTime, other.fTime);
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 TimeMetric specification() {
159 return TimeMetric.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 TimeMetric.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 pTime the fixed value of pattern parameter Time, or null if not bound.
178 * @return the new, mutable (partial) match object.
179 *
180 */
181 public static TimeMetric.Match newMutableMatch(final Double pTime) {
182 return new Mutable(pTime);
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 pTime the fixed value of pattern parameter Time, or null if not bound.
190 * @return the (partial) match object.
191 *
192 */
193 public static TimeMetric.Match newMatch(final Double pTime) {
194 return new Immutable(pTime);
195 }
196
197 private static final class Mutable extends TimeMetric.Match {
198 Mutable(final Double pTime) {
199 super(pTime);
200 }
201
202 @Override
203 public boolean isMutable() {
204 return true;
205 }
206 }
207
208 private static final class Immutable extends TimeMetric.Match {
209 Immutable(final Double pTime) {
210 super(pTime);
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.satellite.queries.timeMetric 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 * // Time
232 *
233 * pattern timeMetric(Time : java Double) {
234 * Time == sum find missionTime(_, #_);
235 * }
236 * </pre></code>
237 *
238 * @see Match
239 * @see TimeMetric
240 *
241 */
242 public static class Matcher extends BaseMatcher<TimeMetric.Match> {
243 /**
244 * Initializes the pattern matcher within an existing VIATRA Query engine.
245 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
246 *
247 * @param engine the existing VIATRA Query engine in which this matcher will be created.
248 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
249 *
250 */
251 public static TimeMetric.Matcher on(final ViatraQueryEngine engine) {
252 // check if matcher already exists
253 Matcher matcher = engine.getExistingMatcher(querySpecification());
254 if (matcher == null) {
255 matcher = (Matcher)engine.getMatcher(querySpecification());
256 }
257 return matcher;
258 }
259
260 /**
261 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
262 * @return an initialized matcher
263 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
264 *
265 */
266 public static TimeMetric.Matcher create() {
267 return new Matcher();
268 }
269
270 private static final int POSITION_TIME = 0;
271
272 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(TimeMetric.Matcher.class);
273
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 private Matcher() {
283 super(querySpecification());
284 }
285
286 /**
287 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
288 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
289 * @return matches represented as a Match object.
290 *
291 */
292 public Collection<TimeMetric.Match> getAllMatches(final Double pTime) {
293 return rawStreamAllMatches(new Object[]{pTime}).collect(Collectors.toSet());
294 }
295
296 /**
297 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
298 * </p>
299 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
300 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
301 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
302 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
303 * @return a stream of matches represented as a Match object.
304 *
305 */
306 public Stream<TimeMetric.Match> streamAllMatches(final Double pTime) {
307 return rawStreamAllMatches(new Object[]{pTime});
308 }
309
310 /**
311 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
312 * Neither determinism nor randomness of selection is guaranteed.
313 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
314 * @return a match represented as a Match object, or null if no match is found.
315 *
316 */
317 public Optional<TimeMetric.Match> getOneArbitraryMatch(final Double pTime) {
318 return rawGetOneArbitraryMatch(new Object[]{pTime});
319 }
320
321 /**
322 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
323 * under any possible substitution of the unspecified parameters (if any).
324 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
325 * @return true if the input is a valid (partial) match of the pattern.
326 *
327 */
328 public boolean hasMatch(final Double pTime) {
329 return rawHasMatch(new Object[]{pTime});
330 }
331
332 /**
333 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
334 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
335 * @return the number of pattern matches found.
336 *
337 */
338 public int countMatches(final Double pTime) {
339 return rawCountMatches(new Object[]{pTime});
340 }
341
342 /**
343 * Executes the given processor on 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 pTime the fixed value of pattern parameter Time, or null if not bound.
346 * @param processor the action that will process the selected match.
347 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
348 *
349 */
350 public boolean forOneArbitraryMatch(final Double pTime, final Consumer<? super TimeMetric.Match> processor) {
351 return rawForOneArbitraryMatch(new Object[]{pTime}, processor);
352 }
353
354 /**
355 * Returns a new (partial) match.
356 * This can be used e.g. to call the matcher with a partial match.
357 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
358 * @param pTime the fixed value of pattern parameter Time, or null if not bound.
359 * @return the (partial) match object.
360 *
361 */
362 public TimeMetric.Match newMatch(final Double pTime) {
363 return TimeMetric.Match.newMatch(pTime);
364 }
365
366 /**
367 * Retrieve the set of values that occur in matches for Time.
368 * @return the Set of all values or empty set if there are no matches
369 *
370 */
371 protected Stream<Double> rawStreamAllValuesOfTime(final Object[] parameters) {
372 return rawStreamAllValues(POSITION_TIME, parameters).map(Double.class::cast);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for Time.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 public Set<Double> getAllValuesOfTime() {
381 return rawStreamAllValuesOfTime(emptyArray()).collect(Collectors.toSet());
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for Time.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Stream<Double> streamAllValuesOfTime() {
390 return rawStreamAllValuesOfTime(emptyArray());
391 }
392
393 @Override
394 protected TimeMetric.Match tupleToMatch(final Tuple t) {
395 try {
396 return TimeMetric.Match.newMatch((Double) t.get(POSITION_TIME));
397 } catch(ClassCastException e) {
398 LOGGER.error("Element(s) in tuple not properly typed!",e);
399 return null;
400 }
401 }
402
403 @Override
404 protected TimeMetric.Match arrayToMatch(final Object[] match) {
405 try {
406 return TimeMetric.Match.newMatch((Double) match[POSITION_TIME]);
407 } catch(ClassCastException e) {
408 LOGGER.error("Element(s) in array not properly typed!",e);
409 return null;
410 }
411 }
412
413 @Override
414 protected TimeMetric.Match arrayToMatchMutable(final Object[] match) {
415 try {
416 return TimeMetric.Match.newMutableMatch((Double) match[POSITION_TIME]);
417 } catch(ClassCastException e) {
418 LOGGER.error("Element(s) in array not properly typed!",e);
419 return null;
420 }
421 }
422
423 /**
424 * @return the singleton instance of the query specification of this pattern
425 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
426 *
427 */
428 public static IQuerySpecification<TimeMetric.Matcher> querySpecification() {
429 return TimeMetric.instance();
430 }
431 }
432
433 private TimeMetric() {
434 super(GeneratedPQuery.INSTANCE);
435 }
436
437 /**
438 * @return the singleton instance of the query specification
439 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
440 *
441 */
442 public static TimeMetric instance() {
443 try{
444 return LazyHolder.INSTANCE;
445 } catch (ExceptionInInitializerError err) {
446 throw processInitializerError(err);
447 }
448 }
449
450 @Override
451 protected TimeMetric.Matcher instantiate(final ViatraQueryEngine engine) {
452 return TimeMetric.Matcher.on(engine);
453 }
454
455 @Override
456 public TimeMetric.Matcher instantiate() {
457 return TimeMetric.Matcher.create();
458 }
459
460 @Override
461 public TimeMetric.Match newEmptyMatch() {
462 return TimeMetric.Match.newEmptyMatch();
463 }
464
465 @Override
466 public TimeMetric.Match newMatch(final Object... parameters) {
467 return TimeMetric.Match.newMatch((java.lang.Double) parameters[0]);
468 }
469
470 /**
471 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric (visibility: PUBLIC, simpleName: TimeMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric, 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
472 * <b>not</b> at the class load time of the outer class,
473 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric (visibility: PUBLIC, simpleName: TimeMetric, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: hu.bme.mit.inf.dslreasoner.domains.satellite.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
474 *
475 * <p> This workaround is required e.g. to support recursion.
476 *
477 */
478 private static class LazyHolder {
479 private static final TimeMetric INSTANCE = new TimeMetric();
480
481 /**
482 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
483 * This initialization order is required to support indirect recursion.
484 *
485 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
486 *
487 */
488 private static final Object STATIC_INITIALIZER = ensureInitialized();
489
490 public static Object ensureInitialized() {
491 INSTANCE.ensureInitializedInternal();
492 return null;
493 }
494 }
495
496 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
497 private static final TimeMetric.GeneratedPQuery INSTANCE = new GeneratedPQuery();
498
499 private final PParameter parameter_Time = new PParameter("Time", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
500
501 private final List<PParameter> parameters = Arrays.asList(parameter_Time);
502
503 private GeneratedPQuery() {
504 super(PVisibility.PUBLIC);
505 }
506
507 @Override
508 public String getFullyQualifiedName() {
509 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.timeMetric";
510 }
511
512 @Override
513 public List<String> getParameterNames() {
514 return Arrays.asList("Time");
515 }
516
517 @Override
518 public List<PParameter> getParameters() {
519 return parameters;
520 }
521
522 @Override
523 public Set<PBody> doGetContainedBodies() {
524 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
525 Set<PBody> bodies = new LinkedHashSet<>();
526 {
527 PBody body = new PBody(this);
528 PVariable var_Time = body.getOrCreateVariableByName("Time");
529 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
530 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
531 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Time), new JavaTransitiveInstancesKey(java.lang.Double.class));
532 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
533 new ExportedParameter(body, var_Time, parameter_Time)
534 ));
535 // Time == sum find missionTime(_, #_)
536 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
537 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var___0_, var___1_), MissionTime.instance().getInternalQueryRepresentation(), var__virtual_0_, 1);
538 new Equality(body, var_Time, var__virtual_0_);
539 bodies.add(body);
540 }
541 return bodies;
542 }
543 }
544}
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..62222ded
--- /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.CommSubsystem;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow;
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.emf.ecore.EDataType;
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.EDataTypeInSlotsKey;
30import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
31import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..dbe6d26e
--- /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.CommSubsystem;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium;
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.emf.ecore.EDataType;
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.EDataTypeInSlotsKey;
30import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
31import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
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((hu.bme.mit.inf.dslreasoner.domains.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", "hu.bme.mit.inf.dslreasoner.domains.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..f72ce8f1
--- /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,33 @@
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
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AdditionalCommSubsystemCost.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AdditionalCommSubsystemCost.java
new file mode 100644
index 00000000..61b1da52
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/AdditionalCommSubsystemCost.java
@@ -0,0 +1,173 @@
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.SpacecraftWithTwoCommSubsystems;
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.context.common.JavaTransitiveInstancesKey;
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.Equality;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
27import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
29import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
30
31/**
32 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
33 *
34 * <p>Original source:
35 * <code><pre>
36 * private pattern additionalCommSubsystemCost(Spacecraft : Spacecraft, Cost : java Double) {
37 * find spacecraftWithTwoCommSubsystems(Spacecraft);
38 * Cost == 100000.0;
39 * } or {
40 * neg find spacecraftWithTwoCommSubsystems(Spacecraft);
41 * Cost == 0.0;
42 * }
43 * </pre></code>
44 *
45 * @see GenericPatternMatcher
46 * @see GenericPatternMatch
47 *
48 */
49@SuppressWarnings("all")
50public final class AdditionalCommSubsystemCost extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
51 private AdditionalCommSubsystemCost() {
52 super(GeneratedPQuery.INSTANCE);
53 }
54
55 /**
56 * @return the singleton instance of the query specification
57 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
58 *
59 */
60 public static AdditionalCommSubsystemCost instance() {
61 try{
62 return LazyHolder.INSTANCE;
63 } catch (ExceptionInInitializerError err) {
64 throw processInitializerError(err);
65 }
66 }
67
68 /**
69 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AdditionalCommSubsystemCost (visibility: PUBLIC, simpleName: AdditionalCommSubsystemCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AdditionalCommSubsystemCost, 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
70 * <b>not</b> at the class load time of the outer class,
71 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AdditionalCommSubsystemCost (visibility: PUBLIC, simpleName: AdditionalCommSubsystemCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AdditionalCommSubsystemCost, 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()}.
72 *
73 * <p> This workaround is required e.g. to support recursion.
74 *
75 */
76 private static class LazyHolder {
77 private static final AdditionalCommSubsystemCost INSTANCE = new AdditionalCommSubsystemCost();
78
79 /**
80 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
81 * This initialization order is required to support indirect recursion.
82 *
83 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
84 *
85 */
86 private static final Object STATIC_INITIALIZER = ensureInitialized();
87
88 public static Object ensureInitialized() {
89 INSTANCE.ensureInitializedInternal();
90 return null;
91 }
92 }
93
94 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
95 private static final AdditionalCommSubsystemCost.GeneratedPQuery INSTANCE = new GeneratedPQuery();
96
97 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
98
99 private final PParameter parameter_Cost = new PParameter("Cost", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
100
101 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Cost);
102
103 private GeneratedPQuery() {
104 super(PVisibility.PRIVATE);
105 }
106
107 @Override
108 public String getFullyQualifiedName() {
109 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.additionalCommSubsystemCost";
110 }
111
112 @Override
113 public List<String> getParameterNames() {
114 return Arrays.asList("Spacecraft","Cost");
115 }
116
117 @Override
118 public List<PParameter> getParameters() {
119 return parameters;
120 }
121
122 @Override
123 public Set<PBody> doGetContainedBodies() {
124 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
125 Set<PBody> bodies = new LinkedHashSet<>();
126 {
127 PBody body = new PBody(this);
128 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
129 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
131 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
132 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
133 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
134 new ExportedParameter(body, var_Cost, parameter_Cost)
135 ));
136 // find spacecraftWithTwoCommSubsystems(Spacecraft)
137 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft), SpacecraftWithTwoCommSubsystems.instance().getInternalQueryRepresentation());
138 // Cost == 100000.0
139 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
140 new ConstantValue(body, var__virtual_0_, 100000.0);
141 new Equality(body, var_Cost, var__virtual_0_);
142 bodies.add(body);
143 }
144 {
145 PBody body = new PBody(this);
146 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
147 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
148 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
149 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
150 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
151 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
152 new ExportedParameter(body, var_Cost, parameter_Cost)
153 ));
154 // neg find spacecraftWithTwoCommSubsystems(Spacecraft)
155 new NegativePatternCall(body, Tuples.flatTupleOf(var_Spacecraft), SpacecraftWithTwoCommSubsystems.instance().getInternalQueryRepresentation());
156 // Cost == 0.0
157 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
158 new ConstantValue(body, var__virtual_0_, 0.0);
159 new Equality(body, var_Cost, var__virtual_0_);
160 bodies.add(body);
161 }
162 return bodies;
163 }
164 }
165
166 private static double evaluateExpression_1_1() {
167 return 100000.0;
168 }
169
170 private static double evaluateExpression_2_1() {
171 return 0.0;
172 }
173}
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..d560ac93
--- /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", "hu.bme.mit.inf.dslreasoner.domains.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/BasePrice.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/BasePrice.java
new file mode 100644
index 00000000..c70f4c8b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/BasePrice.java
@@ -0,0 +1,216 @@
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.context.common.JavaTransitiveInstancesKey;
19import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
20import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
27import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
29import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
30
31/**
32 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
33 *
34 * <p>Original source:
35 * <code><pre>
36 * private pattern basePrice(Spacecraft : Spacecraft, BasePrice : java Double) {
37 * Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat3U);
38 * BasePrice == 250000.0;
39 * } or {
40 * Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat6U);
41 * BasePrice == 750000.0;
42 * } or {
43 * Spacecraft.kind(Spacecraft, SpacecraftKind::SmallSat);
44 * BasePrice == 3000000.0;
45 * }
46 * </pre></code>
47 *
48 * @see GenericPatternMatcher
49 * @see GenericPatternMatch
50 *
51 */
52@SuppressWarnings("all")
53public final class BasePrice extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
54 private BasePrice() {
55 super(GeneratedPQuery.INSTANCE);
56 }
57
58 /**
59 * @return the singleton instance of the query specification
60 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
61 *
62 */
63 public static BasePrice instance() {
64 try{
65 return LazyHolder.INSTANCE;
66 } catch (ExceptionInInitializerError err) {
67 throw processInitializerError(err);
68 }
69 }
70
71 /**
72 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice (visibility: PUBLIC, simpleName: BasePrice, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice, 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
73 * <b>not</b> at the class load time of the outer class,
74 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice (visibility: PUBLIC, simpleName: BasePrice, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice, 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()}.
75 *
76 * <p> This workaround is required e.g. to support recursion.
77 *
78 */
79 private static class LazyHolder {
80 private static final BasePrice INSTANCE = new BasePrice();
81
82 /**
83 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
84 * This initialization order is required to support indirect recursion.
85 *
86 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
87 *
88 */
89 private static final Object STATIC_INITIALIZER = ensureInitialized();
90
91 public static Object ensureInitialized() {
92 INSTANCE.ensureInitializedInternal();
93 return null;
94 }
95 }
96
97 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
98 private static final BasePrice.GeneratedPQuery INSTANCE = new GeneratedPQuery();
99
100 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
101
102 private final PParameter parameter_BasePrice = new PParameter("BasePrice", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
103
104 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_BasePrice);
105
106 private GeneratedPQuery() {
107 super(PVisibility.PRIVATE);
108 }
109
110 @Override
111 public String getFullyQualifiedName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.basePrice";
113 }
114
115 @Override
116 public List<String> getParameterNames() {
117 return Arrays.asList("Spacecraft","BasePrice");
118 }
119
120 @Override
121 public List<PParameter> getParameters() {
122 return parameters;
123 }
124
125 @Override
126 public Set<PBody> doGetContainedBodies() {
127 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
128 Set<PBody> bodies = new LinkedHashSet<>();
129 {
130 PBody body = new PBody(this);
131 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
132 PVariable var_BasePrice = body.getOrCreateVariableByName("BasePrice");
133 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
134 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_BasePrice), new JavaTransitiveInstancesKey(java.lang.Double.class));
135 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
136 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
137 new ExportedParameter(body, var_BasePrice, parameter_BasePrice)
138 ));
139 // Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat3U)
140 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
141 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "CubeSat3U").getInstance());
142 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
143 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
144 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
145 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
146 new Equality(body, var__virtual_1_, var__virtual_0_);
147 // BasePrice == 250000.0
148 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
149 new ConstantValue(body, var__virtual_2_, 250000.0);
150 new Equality(body, var_BasePrice, var__virtual_2_);
151 bodies.add(body);
152 }
153 {
154 PBody body = new PBody(this);
155 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
156 PVariable var_BasePrice = body.getOrCreateVariableByName("BasePrice");
157 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
158 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_BasePrice), new JavaTransitiveInstancesKey(java.lang.Double.class));
159 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
160 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
161 new ExportedParameter(body, var_BasePrice, parameter_BasePrice)
162 ));
163 // Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat6U)
164 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
165 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "CubeSat6U").getInstance());
166 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
167 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
168 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
169 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
170 new Equality(body, var__virtual_1_, var__virtual_0_);
171 // BasePrice == 750000.0
172 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
173 new ConstantValue(body, var__virtual_2_, 750000.0);
174 new Equality(body, var_BasePrice, var__virtual_2_);
175 bodies.add(body);
176 }
177 {
178 PBody body = new PBody(this);
179 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
180 PVariable var_BasePrice = body.getOrCreateVariableByName("BasePrice");
181 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
182 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_BasePrice), new JavaTransitiveInstancesKey(java.lang.Double.class));
183 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
184 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
185 new ExportedParameter(body, var_BasePrice, parameter_BasePrice)
186 ));
187 // Spacecraft.kind(Spacecraft, SpacecraftKind::SmallSat)
188 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
189 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "SmallSat").getInstance());
190 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
191 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
192 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
193 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
194 new Equality(body, var__virtual_1_, var__virtual_0_);
195 // BasePrice == 3000000.0
196 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
197 new ConstantValue(body, var__virtual_2_, 3000000.0);
198 new Equality(body, var_BasePrice, var__virtual_2_);
199 bodies.add(body);
200 }
201 return bodies;
202 }
203 }
204
205 private static double evaluateExpression_1_1() {
206 return 250000.0;
207 }
208
209 private static double evaluateExpression_2_1() {
210 return 750000.0;
211 }
212
213 private static double evaluateExpression_3_1() {
214 return 3000000.0;
215 }
216}
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..a0009587
--- /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", "hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Band = new PParameter("Band", "hu.bme.mit.inf.dslreasoner.domains.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..51175ce3
--- /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", "hu.bme.mit.inf.dslreasoner.domains.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..e2e0e2a1
--- /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", "hu.bme.mit.inf.dslreasoner.domains.satellite.CommSubsystem", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommSubsystem")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Gain = new PParameter("Gain", "hu.bme.mit.inf.dslreasoner.domains.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..04ee67da
--- /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", "hu.bme.mit.inf.dslreasoner.domains.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..4b3bc03b
--- /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", "hu.bme.mit.inf.dslreasoner.domains.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/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..d6f5c53b
--- /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", "hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
92
93 private final PParameter parameter_Target = new PParameter("Target", "hu.bme.mit.inf.dslreasoner.domains.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..93b1a01b
--- /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", "hu.bme.mit.inf.dslreasoner.domains.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/IncomingData.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IncomingData.java
new file mode 100644
index 00000000..114bbf33
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/IncomingData.java
@@ -0,0 +1,145 @@
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.IndirectCommunicationLink;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData;
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.context.common.JavaTransitiveInstancesKey;
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.ExportedParameter;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
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 incomingData(Spacecraft : Spacecraft, Source : Spacecraft, Data : java Double) {
35 * find indirectCommunicationLink(Source, Spacecraft);
36 * find scienceData(Source, Data);
37 * }
38 * </pre></code>
39 *
40 * @see GenericPatternMatcher
41 * @see GenericPatternMatch
42 *
43 */
44@SuppressWarnings("all")
45public final class IncomingData extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
46 private IncomingData() {
47 super(GeneratedPQuery.INSTANCE);
48 }
49
50 /**
51 * @return the singleton instance of the query specification
52 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
53 *
54 */
55 public static IncomingData instance() {
56 try{
57 return LazyHolder.INSTANCE;
58 } catch (ExceptionInInitializerError err) {
59 throw processInitializerError(err);
60 }
61 }
62
63 /**
64 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IncomingData (visibility: PUBLIC, simpleName: IncomingData, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IncomingData, 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
65 * <b>not</b> at the class load time of the outer class,
66 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IncomingData (visibility: PUBLIC, simpleName: IncomingData, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IncomingData, 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()}.
67 *
68 * <p> This workaround is required e.g. to support recursion.
69 *
70 */
71 private static class LazyHolder {
72 private static final IncomingData INSTANCE = new IncomingData();
73
74 /**
75 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
76 * This initialization order is required to support indirect recursion.
77 *
78 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
79 *
80 */
81 private static final Object STATIC_INITIALIZER = ensureInitialized();
82
83 public static Object ensureInitialized() {
84 INSTANCE.ensureInitializedInternal();
85 return null;
86 }
87 }
88
89 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
90 private static final IncomingData.GeneratedPQuery INSTANCE = new GeneratedPQuery();
91
92 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
93
94 private final PParameter parameter_Source = new PParameter("Source", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
95
96 private final PParameter parameter_Data = new PParameter("Data", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
97
98 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Source, parameter_Data);
99
100 private GeneratedPQuery() {
101 super(PVisibility.PRIVATE);
102 }
103
104 @Override
105 public String getFullyQualifiedName() {
106 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.incomingData";
107 }
108
109 @Override
110 public List<String> getParameterNames() {
111 return Arrays.asList("Spacecraft","Source","Data");
112 }
113
114 @Override
115 public List<PParameter> getParameters() {
116 return parameters;
117 }
118
119 @Override
120 public Set<PBody> doGetContainedBodies() {
121 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
122 Set<PBody> bodies = new LinkedHashSet<>();
123 {
124 PBody body = new PBody(this);
125 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
126 PVariable var_Source = body.getOrCreateVariableByName("Source");
127 PVariable var_Data = body.getOrCreateVariableByName("Data");
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
129 new TypeConstraint(body, Tuples.flatTupleOf(var_Source), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
130 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Data), new JavaTransitiveInstancesKey(java.lang.Double.class));
131 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
132 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
133 new ExportedParameter(body, var_Source, parameter_Source),
134 new ExportedParameter(body, var_Data, parameter_Data)
135 ));
136 // find indirectCommunicationLink(Source, Spacecraft)
137 new PositivePatternCall(body, Tuples.flatTupleOf(var_Source, var_Spacecraft), IndirectCommunicationLink.instance().getInternalQueryRepresentation());
138 // find scienceData(Source, Data)
139 new PositivePatternCall(body, Tuples.flatTupleOf(var_Source, var_Data), ScienceData.instance().getInternalQueryRepresentation());
140 bodies.add(body);
141 }
142 return bodies;
143 }
144 }
145}
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..6d5e475c
--- /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", "hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
89
90 private final PParameter parameter_Target = new PParameter("Target", "hu.bme.mit.inf.dslreasoner.domains.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/InterferometryPayloadCost.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/InterferometryPayloadCost.java
new file mode 100644
index 00000000..205d896a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/InterferometryPayloadCost.java
@@ -0,0 +1,175 @@
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.context.common.JavaTransitiveInstancesKey;
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.Equality;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
27import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
29import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
30
31/**
32 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
33 *
34 * <p>Original source:
35 * <code><pre>
36 * private pattern interferometryPayloadCost(Spacecraft : Spacecraft, Cost : java Double) {
37 * find spacecraftWithInterferometryPayload(_, Spacecraft);
38 * Cost == 50000.0;
39 * } or {
40 * neg find spacecraftWithInterferometryPayload(_, Spacecraft);
41 * Cost == 0.0;
42 * }
43 * </pre></code>
44 *
45 * @see GenericPatternMatcher
46 * @see GenericPatternMatch
47 *
48 */
49@SuppressWarnings("all")
50public final class InterferometryPayloadCost extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
51 private InterferometryPayloadCost() {
52 super(GeneratedPQuery.INSTANCE);
53 }
54
55 /**
56 * @return the singleton instance of the query specification
57 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
58 *
59 */
60 public static InterferometryPayloadCost instance() {
61 try{
62 return LazyHolder.INSTANCE;
63 } catch (ExceptionInInitializerError err) {
64 throw processInitializerError(err);
65 }
66 }
67
68 /**
69 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost (visibility: PUBLIC, simpleName: InterferometryPayloadCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost, 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
70 * <b>not</b> at the class load time of the outer class,
71 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost (visibility: PUBLIC, simpleName: InterferometryPayloadCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost, 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()}.
72 *
73 * <p> This workaround is required e.g. to support recursion.
74 *
75 */
76 private static class LazyHolder {
77 private static final InterferometryPayloadCost INSTANCE = new InterferometryPayloadCost();
78
79 /**
80 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
81 * This initialization order is required to support indirect recursion.
82 *
83 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
84 *
85 */
86 private static final Object STATIC_INITIALIZER = ensureInitialized();
87
88 public static Object ensureInitialized() {
89 INSTANCE.ensureInitializedInternal();
90 return null;
91 }
92 }
93
94 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
95 private static final InterferometryPayloadCost.GeneratedPQuery INSTANCE = new GeneratedPQuery();
96
97 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
98
99 private final PParameter parameter_Cost = new PParameter("Cost", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
100
101 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Cost);
102
103 private GeneratedPQuery() {
104 super(PVisibility.PRIVATE);
105 }
106
107 @Override
108 public String getFullyQualifiedName() {
109 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.interferometryPayloadCost";
110 }
111
112 @Override
113 public List<String> getParameterNames() {
114 return Arrays.asList("Spacecraft","Cost");
115 }
116
117 @Override
118 public List<PParameter> getParameters() {
119 return parameters;
120 }
121
122 @Override
123 public Set<PBody> doGetContainedBodies() {
124 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
125 Set<PBody> bodies = new LinkedHashSet<>();
126 {
127 PBody body = new PBody(this);
128 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
129 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
130 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
131 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
132 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
133 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
134 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
135 new ExportedParameter(body, var_Cost, parameter_Cost)
136 ));
137 // find spacecraftWithInterferometryPayload(_, Spacecraft)
138 new PositivePatternCall(body, Tuples.flatTupleOf(var___0_, var_Spacecraft), SpacecraftWithInterferometryPayload.instance().getInternalQueryRepresentation());
139 // Cost == 50000.0
140 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
141 new ConstantValue(body, var__virtual_0_, 50000.0);
142 new Equality(body, var_Cost, var__virtual_0_);
143 bodies.add(body);
144 }
145 {
146 PBody body = new PBody(this);
147 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
148 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
149 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
150 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
151 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
152 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
153 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
154 new ExportedParameter(body, var_Cost, parameter_Cost)
155 ));
156 // neg find spacecraftWithInterferometryPayload(_, Spacecraft)
157 new NegativePatternCall(body, Tuples.flatTupleOf(var___0_, var_Spacecraft), SpacecraftWithInterferometryPayload.instance().getInternalQueryRepresentation());
158 // Cost == 0.0
159 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
160 new ConstantValue(body, var__virtual_0_, 0.0);
161 new Equality(body, var_Cost, var__virtual_0_);
162 bodies.add(body);
163 }
164 return bodies;
165 }
166 }
167
168 private static double evaluateExpression_1_1() {
169 return 50000.0;
170 }
171
172 private static double evaluateExpression_2_1() {
173 return 0.0;
174 }
175}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCost.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCost.java
new file mode 100644
index 00000000..0374195f
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCost.java
@@ -0,0 +1,183 @@
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.SpacecraftCost;
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.emf.ecore.EDataType;
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.emf.types.EDataTypeInSlotsKey;
17import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
18import org.eclipse.viatra.query.runtime.matchers.aggregators.sum;
19import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
20import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
21import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
22import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
23import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
24import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
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.Tuples;
35
36/**
37 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
38 *
39 * <p>Original source:
40 * <code><pre>
41 * private pattern missionCost(Mission : InterferometryMission, Cost : java Double) {
42 * InterferometryMission.observationTime(Mission, ObservationTime);
43 * SpacecraftCost == sum find spacecraftCost(Mission, _, #_);
44 * Cost == eval(SpacecraftCost + 100000.0 ObservationTime);
45 * }
46 * </pre></code>
47 *
48 * @see GenericPatternMatcher
49 * @see GenericPatternMatch
50 *
51 */
52@SuppressWarnings("all")
53public final class MissionCost extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
54 private MissionCost() {
55 super(GeneratedPQuery.INSTANCE);
56 }
57
58 /**
59 * @return the singleton instance of the query specification
60 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
61 *
62 */
63 public static MissionCost instance() {
64 try{
65 return LazyHolder.INSTANCE;
66 } catch (ExceptionInInitializerError err) {
67 throw processInitializerError(err);
68 }
69 }
70
71 /**
72 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCost (visibility: PUBLIC, simpleName: MissionCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCost, 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
73 * <b>not</b> at the class load time of the outer class,
74 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCost (visibility: PUBLIC, simpleName: MissionCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCost, 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()}.
75 *
76 * <p> This workaround is required e.g. to support recursion.
77 *
78 */
79 private static class LazyHolder {
80 private static final MissionCost INSTANCE = new MissionCost();
81
82 /**
83 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
84 * This initialization order is required to support indirect recursion.
85 *
86 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
87 *
88 */
89 private static final Object STATIC_INITIALIZER = ensureInitialized();
90
91 public static Object ensureInitialized() {
92 INSTANCE.ensureInitializedInternal();
93 return null;
94 }
95 }
96
97 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
98 private static final MissionCost.GeneratedPQuery INSTANCE = new GeneratedPQuery();
99
100 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
101
102 private final PParameter parameter_Cost = new PParameter("Cost", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
103
104 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Cost);
105
106 private GeneratedPQuery() {
107 super(PVisibility.PRIVATE);
108 }
109
110 @Override
111 public String getFullyQualifiedName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.missionCost";
113 }
114
115 @Override
116 public List<String> getParameterNames() {
117 return Arrays.asList("Mission","Cost");
118 }
119
120 @Override
121 public List<PParameter> getParameters() {
122 return parameters;
123 }
124
125 @Override
126 public Set<PBody> doGetContainedBodies() {
127 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
128 Set<PBody> bodies = new LinkedHashSet<>();
129 {
130 PBody body = new PBody(this);
131 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
132 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
133 PVariable var_ObservationTime = body.getOrCreateVariableByName("ObservationTime");
134 PVariable var_SpacecraftCost = body.getOrCreateVariableByName("SpacecraftCost");
135 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
136 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
137 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
138 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
139 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
140 new ExportedParameter(body, var_Mission, parameter_Mission),
141 new ExportedParameter(body, var_Cost, parameter_Cost)
142 ));
143 // InterferometryMission.observationTime(Mission, ObservationTime)
144 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
145 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
146 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "InterferometryMission", "observationTime")));
147 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EFloat")));
148 new Equality(body, var__virtual_0_, var_ObservationTime);
149 // SpacecraftCost == sum find spacecraftCost(Mission, _, #_)
150 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
151 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var_Mission, var___0_, var___1_), SpacecraftCost.instance().getInternalQueryRepresentation(), var__virtual_1_, 2);
152 new Equality(body, var_SpacecraftCost, var__virtual_1_);
153 // Cost == eval(SpacecraftCost + 100000.0 * ObservationTime)
154 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
155 new ExpressionEvaluation(body, new IExpressionEvaluator() {
156
157 @Override
158 public String getShortDescription() {
159 return "Expression evaluation from pattern missionCost";
160 }
161
162 @Override
163 public Iterable<String> getInputParameterNames() {
164 return Arrays.asList("ObservationTime", "SpacecraftCost");}
165
166 @Override
167 public Object evaluateExpression(IValueProvider provider) throws Exception {
168 Float ObservationTime = (Float) provider.getValue("ObservationTime");
169 Double SpacecraftCost = (Double) provider.getValue("SpacecraftCost");
170 return evaluateExpression_1_1(ObservationTime, SpacecraftCost);
171 }
172 }, var__virtual_2_ );
173 new Equality(body, var_Cost, var__virtual_2_);
174 bodies.add(body);
175 }
176 return bodies;
177 }
178 }
179
180 private static double evaluateExpression_1_1(final Float ObservationTime, final Double SpacecraftCost) {
181 return ((SpacecraftCost).doubleValue() + (100000.0 * (ObservationTime).floatValue()));
182 }
183}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCoverage.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCoverage.java
new file mode 100644
index 00000000..583c2175
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionCoverage.java
@@ -0,0 +1,183 @@
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.emf.ecore.EDataType;
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.emf.types.EDataTypeInSlotsKey;
17import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
18import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
19import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
20import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
21import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
22import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
23import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
26import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter;
28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
33import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
34
35/**
36 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
37 *
38 * <p>Original source:
39 * <code><pre>
40 * private pattern missionCoverage(Mission : InterferometryMission, Coverage : java Double) {
41 * InterferometryMission.observationTime(Mission, ObservationTime);
42 * ObserverCount == count find spacecraftWithInterferometryPayload(Mission, _);
43 * Coverage == eval(Math.pow(1 - 2.0 / ObserverCount, 1 + 9 (1.0 / ObservationTime)) + 0.05 ObservationTime / 3);
44 * }
45 * </pre></code>
46 *
47 * @see GenericPatternMatcher
48 * @see GenericPatternMatch
49 *
50 */
51@SuppressWarnings("all")
52public final class MissionCoverage extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
53 private MissionCoverage() {
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 MissionCoverage 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.MissionCoverage (visibility: PUBLIC, simpleName: MissionCoverage, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCoverage, 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.MissionCoverage (visibility: PUBLIC, simpleName: MissionCoverage, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCoverage, 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 MissionCoverage INSTANCE = new MissionCoverage();
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 MissionCoverage.GeneratedPQuery INSTANCE = new GeneratedPQuery();
98
99 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
100
101 private final PParameter parameter_Coverage = new PParameter("Coverage", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
102
103 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Coverage);
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.missionCoverage";
112 }
113
114 @Override
115 public List<String> getParameterNames() {
116 return Arrays.asList("Mission","Coverage");
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_Mission = body.getOrCreateVariableByName("Mission");
131 PVariable var_Coverage = body.getOrCreateVariableByName("Coverage");
132 PVariable var_ObservationTime = body.getOrCreateVariableByName("ObservationTime");
133 PVariable var_ObserverCount = body.getOrCreateVariableByName("ObserverCount");
134 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
135 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
136 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Coverage), new JavaTransitiveInstancesKey(java.lang.Double.class));
137 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
138 new ExportedParameter(body, var_Mission, parameter_Mission),
139 new ExportedParameter(body, var_Coverage, parameter_Coverage)
140 ));
141 // InterferometryMission.observationTime(Mission, ObservationTime)
142 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
143 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
144 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "InterferometryMission", "observationTime")));
145 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EFloat")));
146 new Equality(body, var__virtual_0_, var_ObservationTime);
147 // ObserverCount == count find spacecraftWithInterferometryPayload(Mission, _)
148 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
149 new PatternMatchCounter(body, Tuples.flatTupleOf(var_Mission, var___0_), SpacecraftWithInterferometryPayload.instance().getInternalQueryRepresentation(), var__virtual_1_);
150 new Equality(body, var_ObserverCount, var__virtual_1_);
151 // Coverage == eval(Math.pow(1 - 2.0 / ObserverCount, 1 + 9 * (1.0 / ObservationTime)) + 0.05 * ObservationTime / 3)
152 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
153 new ExpressionEvaluation(body, new IExpressionEvaluator() {
154
155 @Override
156 public String getShortDescription() {
157 return "Expression evaluation from pattern missionCoverage";
158 }
159
160 @Override
161 public Iterable<String> getInputParameterNames() {
162 return Arrays.asList("ObservationTime", "ObserverCount");}
163
164 @Override
165 public Object evaluateExpression(IValueProvider provider) throws Exception {
166 Float ObservationTime = (Float) provider.getValue("ObservationTime");
167 Integer ObserverCount = (Integer) provider.getValue("ObserverCount");
168 return evaluateExpression_1_1(ObservationTime, ObserverCount);
169 }
170 }, var__virtual_2_ );
171 new Equality(body, var_Coverage, var__virtual_2_);
172 bodies.add(body);
173 }
174 return bodies;
175 }
176 }
177
178 private static double evaluateExpression_1_1(final Float ObservationTime, final Integer ObserverCount) {
179 double _pow = Math.pow((1 - (2.0 / (ObserverCount).intValue())), (1 + (9 * (1.0 / (ObservationTime).floatValue()))));
180 double _plus = (_pow + ((0.05 * (ObservationTime).floatValue()) / 3));
181 return _plus;
182 }
183}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionTime.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionTime.java
new file mode 100644
index 00000000..3ad42bf5
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/MissionTime.java
@@ -0,0 +1,183 @@
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.TransmitTime;
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.emf.ecore.EDataType;
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.emf.types.EDataTypeInSlotsKey;
17import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
18import org.eclipse.viatra.query.runtime.matchers.aggregators.sum;
19import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
20import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
21import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
22import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
23import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
24import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
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.Tuples;
35
36/**
37 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
38 *
39 * <p>Original source:
40 * <code><pre>
41 * private pattern missionTime(Mission : InterferometryMission, Time : java Double) {
42 * InterferometryMission.observationTime(Mission, ObservationTime);
43 * TrasmitTime == sum find transmitTime(Mission, _, #_);
44 * Time == eval(TrasmitTime + 60.0 ObservationTime);
45 * }
46 * </pre></code>
47 *
48 * @see GenericPatternMatcher
49 * @see GenericPatternMatch
50 *
51 */
52@SuppressWarnings("all")
53public final class MissionTime extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
54 private MissionTime() {
55 super(GeneratedPQuery.INSTANCE);
56 }
57
58 /**
59 * @return the singleton instance of the query specification
60 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
61 *
62 */
63 public static MissionTime instance() {
64 try{
65 return LazyHolder.INSTANCE;
66 } catch (ExceptionInInitializerError err) {
67 throw processInitializerError(err);
68 }
69 }
70
71 /**
72 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionTime (visibility: PUBLIC, simpleName: MissionTime, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionTime, 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
73 * <b>not</b> at the class load time of the outer class,
74 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionTime (visibility: PUBLIC, simpleName: MissionTime, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionTime, 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()}.
75 *
76 * <p> This workaround is required e.g. to support recursion.
77 *
78 */
79 private static class LazyHolder {
80 private static final MissionTime INSTANCE = new MissionTime();
81
82 /**
83 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
84 * This initialization order is required to support indirect recursion.
85 *
86 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
87 *
88 */
89 private static final Object STATIC_INITIALIZER = ensureInitialized();
90
91 public static Object ensureInitialized() {
92 INSTANCE.ensureInitializedInternal();
93 return null;
94 }
95 }
96
97 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
98 private static final MissionTime.GeneratedPQuery INSTANCE = new GeneratedPQuery();
99
100 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
101
102 private final PParameter parameter_Time = new PParameter("Time", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
103
104 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Time);
105
106 private GeneratedPQuery() {
107 super(PVisibility.PRIVATE);
108 }
109
110 @Override
111 public String getFullyQualifiedName() {
112 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.missionTime";
113 }
114
115 @Override
116 public List<String> getParameterNames() {
117 return Arrays.asList("Mission","Time");
118 }
119
120 @Override
121 public List<PParameter> getParameters() {
122 return parameters;
123 }
124
125 @Override
126 public Set<PBody> doGetContainedBodies() {
127 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
128 Set<PBody> bodies = new LinkedHashSet<>();
129 {
130 PBody body = new PBody(this);
131 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
132 PVariable var_Time = body.getOrCreateVariableByName("Time");
133 PVariable var_ObservationTime = body.getOrCreateVariableByName("ObservationTime");
134 PVariable var_TrasmitTime = body.getOrCreateVariableByName("TrasmitTime");
135 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
136 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
137 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
138 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Time), new JavaTransitiveInstancesKey(java.lang.Double.class));
139 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
140 new ExportedParameter(body, var_Mission, parameter_Mission),
141 new ExportedParameter(body, var_Time, parameter_Time)
142 ));
143 // InterferometryMission.observationTime(Mission, ObservationTime)
144 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
145 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
146 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "InterferometryMission", "observationTime")));
147 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EFloat")));
148 new Equality(body, var__virtual_0_, var_ObservationTime);
149 // TrasmitTime == sum find transmitTime(Mission, _, #_)
150 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
151 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var_Mission, var___0_, var___1_), TransmitTime.instance().getInternalQueryRepresentation(), var__virtual_1_, 2);
152 new Equality(body, var_TrasmitTime, var__virtual_1_);
153 // Time == eval(TrasmitTime + 60.0 * ObservationTime)
154 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
155 new ExpressionEvaluation(body, new IExpressionEvaluator() {
156
157 @Override
158 public String getShortDescription() {
159 return "Expression evaluation from pattern missionTime";
160 }
161
162 @Override
163 public Iterable<String> getInputParameterNames() {
164 return Arrays.asList("ObservationTime", "TrasmitTime");}
165
166 @Override
167 public Object evaluateExpression(IValueProvider provider) throws Exception {
168 Float ObservationTime = (Float) provider.getValue("ObservationTime");
169 Double TrasmitTime = (Double) provider.getValue("TrasmitTime");
170 return evaluateExpression_1_1(ObservationTime, TrasmitTime);
171 }
172 }, var__virtual_2_ );
173 new Equality(body, var_Time, var__virtual_2_);
174 bodies.add(body);
175 }
176 return bodies;
177 }
178 }
179
180 private static double evaluateExpression_1_1(final Float ObservationTime, final Double TrasmitTime) {
181 return ((TrasmitTime).doubleValue() + (60.0 * (ObservationTime).floatValue()));
182 }
183}
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..2f310711
--- /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,156 @@
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.CostMetric;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CoverageMetric;
10import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.CubeSatWithKaAntenna;
11import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetBand;
12import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.IncompatibleSourceAndTargetGain;
13import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.KaAntennaGainLow;
14import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NoLinkToGroundStation;
15import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.NotEnoughInterferometryPayloads;
16import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.ThreeUCubeSatWithNonUhfCrossLink;
17import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.TimeMetric;
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.AdditionalCommSubsystemCost;
21import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.AtLeastTwoInterferometryPayloads;
22import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice;
23import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBand;
24import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemBandUhf;
25import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGain;
26import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainLow;
27import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.CommSubsystemGainMedium;
28import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.DirectCommunicationLink;
29import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.GroundStationNetwork;
30import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IncomingData;
31import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.IndirectCommunicationLink;
32import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost;
33import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCost;
34import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionCoverage;
35import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.MissionTime;
36import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData;
37import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SmallSat;
38import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftCost;
39import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftOfKind;
40import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftUplink;
41import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithInterferometryPayload;
42import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithTwoCommSubsystems;
43import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate;
44import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitTime;
45import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
46
47/**
48 * A pattern group formed of all patterns defined in SatelliteQueries.vql.
49 *
50 * <p>A private group that includes private patterns as well. Only intended use case is for pattern testing.
51 *
52 * <p> From package hu.bme.mit.inf.dslreasoner.domains.satellite.queries, the group contains the definition of the following patterns: <ul>
53 * <li>communicationLinkDoesNotStartAtContainingElement</li>
54 * <li>notEnoughInterferometryPayloads</li>
55 * <li>atLeastTwoInterferometryPayloads</li>
56 * <li>spacecraftWithInterferometryPayload</li>
57 * <li>noLinkToGroundStation</li>
58 * <li>communicationLoop</li>
59 * <li>indirectCommunicationLink</li>
60 * <li>directCommunicationLink</li>
61 * <li>incompatibleSourceAndTargetBand</li>
62 * <li>commSubsystemBand</li>
63 * <li>incompatibleSourceAndTargetGain</li>
64 * <li>commSubsystemGain</li>
65 * <li>uhfAntennaGainNotLow</li>
66 * <li>commSubsystemGainLow</li>
67 * <li>xAntennaGainNotMedium</li>
68 * <li>commSubsystemGainMedium</li>
69 * <li>kaAntennaGainLow</li>
70 * <li>threeUCubeSatWithNonUhfCrossLink</li>
71 * <li>commSubsystemBandUhf</li>
72 * <li>groundStationNetwork</li>
73 * <li>cubeSatWithKaAntenna</li>
74 * <li>smallSat</li>
75 * <li>coverageMetric</li>
76 * <li>missionCoverage</li>
77 * <li>timeMetric</li>
78 * <li>missionTime</li>
79 * <li>transmitTime</li>
80 * <li>incomingData</li>
81 * <li>scienceData</li>
82 * <li>transmitRate</li>
83 * <li>spacecraftUplink</li>
84 * <li>costMetric</li>
85 * <li>missionCost</li>
86 * <li>spacecraftCost</li>
87 * <li>spacecraftOfKind</li>
88 * <li>basePrice</li>
89 * <li>interferometryPayloadCost</li>
90 * <li>additionalCommSubsystemCost</li>
91 * <li>spacecraftWithTwoCommSubsystems</li>
92 * </ul>
93 *
94 * @see IQueryGroup
95 *
96 */
97@SuppressWarnings("all")
98public final class SatelliteQueriesAll extends BaseGeneratedPatternGroup {
99 /**
100 * Access the pattern group.
101 *
102 * @return the singleton instance of the group
103 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
104 *
105 */
106 public static SatelliteQueriesAll instance() {
107 if (INSTANCE == null) {
108 INSTANCE = new SatelliteQueriesAll();
109 }
110 return INSTANCE;
111 }
112
113 private static SatelliteQueriesAll INSTANCE;
114
115 private SatelliteQueriesAll() {
116 querySpecifications.add(CommunicationLinkDoesNotStartAtContainingElement.instance());
117 querySpecifications.add(NotEnoughInterferometryPayloads.instance());
118 querySpecifications.add(AtLeastTwoInterferometryPayloads.instance());
119 querySpecifications.add(SpacecraftWithInterferometryPayload.instance());
120 querySpecifications.add(NoLinkToGroundStation.instance());
121 querySpecifications.add(CommunicationLoop.instance());
122 querySpecifications.add(IndirectCommunicationLink.instance());
123 querySpecifications.add(DirectCommunicationLink.instance());
124 querySpecifications.add(IncompatibleSourceAndTargetBand.instance());
125 querySpecifications.add(CommSubsystemBand.instance());
126 querySpecifications.add(IncompatibleSourceAndTargetGain.instance());
127 querySpecifications.add(CommSubsystemGain.instance());
128 querySpecifications.add(UhfAntennaGainNotLow.instance());
129 querySpecifications.add(CommSubsystemGainLow.instance());
130 querySpecifications.add(XAntennaGainNotMedium.instance());
131 querySpecifications.add(CommSubsystemGainMedium.instance());
132 querySpecifications.add(KaAntennaGainLow.instance());
133 querySpecifications.add(ThreeUCubeSatWithNonUhfCrossLink.instance());
134 querySpecifications.add(CommSubsystemBandUhf.instance());
135 querySpecifications.add(GroundStationNetwork.instance());
136 querySpecifications.add(CubeSatWithKaAntenna.instance());
137 querySpecifications.add(SmallSat.instance());
138 querySpecifications.add(CoverageMetric.instance());
139 querySpecifications.add(MissionCoverage.instance());
140 querySpecifications.add(TimeMetric.instance());
141 querySpecifications.add(MissionTime.instance());
142 querySpecifications.add(TransmitTime.instance());
143 querySpecifications.add(IncomingData.instance());
144 querySpecifications.add(ScienceData.instance());
145 querySpecifications.add(TransmitRate.instance());
146 querySpecifications.add(SpacecraftUplink.instance());
147 querySpecifications.add(CostMetric.instance());
148 querySpecifications.add(MissionCost.instance());
149 querySpecifications.add(SpacecraftCost.instance());
150 querySpecifications.add(SpacecraftOfKind.instance());
151 querySpecifications.add(BasePrice.instance());
152 querySpecifications.add(InterferometryPayloadCost.instance());
153 querySpecifications.add(AdditionalCommSubsystemCost.instance());
154 querySpecifications.add(SpacecraftWithTwoCommSubsystems.instance());
155 }
156}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/ScienceData.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/ScienceData.java
new file mode 100644
index 00000000..b558e51e
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/ScienceData.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.context.common.JavaTransitiveInstancesKey;
19import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
20import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
21import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
22import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
26import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
29import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
30import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
31import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
32
33/**
34 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
35 *
36 * <p>Original source:
37 * <code><pre>
38 * private pattern scienceData(Spacecraft : Spacecraft, Data : java Double) {
39 * ConstellationMission.spacecraft(Mission, Spacecraft);
40 * InterferometryMission.observationTime(Mission, ObservationTime);
41 * Data == eval(12.0 ObservationTime);
42 * }
43 * </pre></code>
44 *
45 * @see GenericPatternMatcher
46 * @see GenericPatternMatch
47 *
48 */
49@SuppressWarnings("all")
50public final class ScienceData extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
51 private ScienceData() {
52 super(GeneratedPQuery.INSTANCE);
53 }
54
55 /**
56 * @return the singleton instance of the query specification
57 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
58 *
59 */
60 public static ScienceData instance() {
61 try{
62 return LazyHolder.INSTANCE;
63 } catch (ExceptionInInitializerError err) {
64 throw processInitializerError(err);
65 }
66 }
67
68 /**
69 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData (visibility: PUBLIC, simpleName: ScienceData, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData, 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
70 * <b>not</b> at the class load time of the outer class,
71 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData (visibility: PUBLIC, simpleName: ScienceData, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData, 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()}.
72 *
73 * <p> This workaround is required e.g. to support recursion.
74 *
75 */
76 private static class LazyHolder {
77 private static final ScienceData INSTANCE = new ScienceData();
78
79 /**
80 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
81 * This initialization order is required to support indirect recursion.
82 *
83 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
84 *
85 */
86 private static final Object STATIC_INITIALIZER = ensureInitialized();
87
88 public static Object ensureInitialized() {
89 INSTANCE.ensureInitializedInternal();
90 return null;
91 }
92 }
93
94 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
95 private static final ScienceData.GeneratedPQuery INSTANCE = new GeneratedPQuery();
96
97 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
98
99 private final PParameter parameter_Data = new PParameter("Data", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
100
101 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Data);
102
103 private GeneratedPQuery() {
104 super(PVisibility.PRIVATE);
105 }
106
107 @Override
108 public String getFullyQualifiedName() {
109 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.scienceData";
110 }
111
112 @Override
113 public List<String> getParameterNames() {
114 return Arrays.asList("Spacecraft","Data");
115 }
116
117 @Override
118 public List<PParameter> getParameters() {
119 return parameters;
120 }
121
122 @Override
123 public Set<PBody> doGetContainedBodies() {
124 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
125 Set<PBody> bodies = new LinkedHashSet<>();
126 {
127 PBody body = new PBody(this);
128 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
129 PVariable var_Data = body.getOrCreateVariableByName("Data");
130 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
131 PVariable var_ObservationTime = body.getOrCreateVariableByName("ObservationTime");
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
133 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Data), new JavaTransitiveInstancesKey(java.lang.Double.class));
134 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
135 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
136 new ExportedParameter(body, var_Data, parameter_Data)
137 ));
138 // ConstellationMission.spacecraft(Mission, Spacecraft)
139 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
140 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
141 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
142 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
143 new Equality(body, var__virtual_0_, var_Spacecraft);
144 // InterferometryMission.observationTime(Mission, ObservationTime)
145 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
146 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
147 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "InterferometryMission", "observationTime")));
148 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EFloat")));
149 new Equality(body, var__virtual_1_, var_ObservationTime);
150 // Data == eval(12.0 * ObservationTime)
151 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
152 new ExpressionEvaluation(body, new IExpressionEvaluator() {
153
154 @Override
155 public String getShortDescription() {
156 return "Expression evaluation from pattern scienceData";
157 }
158
159 @Override
160 public Iterable<String> getInputParameterNames() {
161 return Arrays.asList("ObservationTime");}
162
163 @Override
164 public Object evaluateExpression(IValueProvider provider) throws Exception {
165 Float ObservationTime = (Float) provider.getValue("ObservationTime");
166 return evaluateExpression_1_1(ObservationTime);
167 }
168 }, var__virtual_2_ );
169 new Equality(body, var_Data, var__virtual_2_);
170 bodies.add(body);
171 }
172 return bodies;
173 }
174 }
175
176 private static double evaluateExpression_1_1(final Float ObservationTime) {
177 return (12.0 * (ObservationTime).floatValue());
178 }
179}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SmallSat.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SmallSat.java
new file mode 100644
index 00000000..d74ed28a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SmallSat.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 smallSat(Sat : Spacecraft) {
35 * Spacecraft.kind(Sat, SpacecraftKind::SmallSat);
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class SmallSat extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private SmallSat() {
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 SmallSat 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.SmallSat (visibility: PUBLIC, simpleName: SmallSat, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SmallSat, 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.SmallSat (visibility: PUBLIC, simpleName: SmallSat, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SmallSat, 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 SmallSat INSTANCE = new SmallSat();
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 SmallSat.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Sat = new PParameter("Sat", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Sat);
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.smallSat";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Sat");
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_Sat = body.getOrCreateVariableByName("Sat");
121 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
122 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
123 new ExportedParameter(body, var_Sat, parameter_Sat)
124 ));
125 // Spacecraft.kind(Sat, SpacecraftKind::SmallSat)
126 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
127 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "SpacecraftKind", "SmallSat").getInstance());
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
129 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Sat, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
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/SpacecraftCost.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftCost.java
new file mode 100644
index 00000000..65fed74a
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftCost.java
@@ -0,0 +1,215 @@
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.AdditionalCommSubsystemCost;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.BasePrice;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.InterferometryPayloadCost;
9import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftOfKind;
10import java.util.Arrays;
11import java.util.LinkedHashSet;
12import java.util.List;
13import java.util.Set;
14import org.eclipse.emf.ecore.EClass;
15import org.eclipse.emf.ecore.EDataType;
16import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
17import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
18import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
19import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
20import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
21import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
22import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
23import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
24import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
25import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
26import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
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.Tuples;
38
39/**
40 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
41 *
42 * <p>Original source:
43 * <code><pre>
44 * private pattern spacecraftCost(Mission : InterferometryMission, Spacecraft : Spacecraft, Cost : java Double) {
45 * ConstellationMission.spacecraft(Mission, Spacecraft);
46 * Spacecraft.kind(Spacecraft, Kind);
47 * KindCount == count find spacecraftOfKind(_, Kind);
48 * find basePrice(Spacecraft, BasePrice);
49 * find interferometryPayloadCost(Spacecraft, InterferometryPayloadCost);
50 * find additionalCommSubsystemCost(Spacecraft, AdditionalCommSubsystemCost);
51 * Cost == eval(BasePrice Math.pow(KindCount, -0.25) + InterferometryPayloadCost + AdditionalCommSubsystemCost);
52 * }
53 * </pre></code>
54 *
55 * @see GenericPatternMatcher
56 * @see GenericPatternMatch
57 *
58 */
59@SuppressWarnings("all")
60public final class SpacecraftCost extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
61 private SpacecraftCost() {
62 super(GeneratedPQuery.INSTANCE);
63 }
64
65 /**
66 * @return the singleton instance of the query specification
67 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
68 *
69 */
70 public static SpacecraftCost instance() {
71 try{
72 return LazyHolder.INSTANCE;
73 } catch (ExceptionInInitializerError err) {
74 throw processInitializerError(err);
75 }
76 }
77
78 /**
79 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftCost (visibility: PUBLIC, simpleName: SpacecraftCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftCost, 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
80 * <b>not</b> at the class load time of the outer class,
81 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftCost (visibility: PUBLIC, simpleName: SpacecraftCost, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftCost, 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()}.
82 *
83 * <p> This workaround is required e.g. to support recursion.
84 *
85 */
86 private static class LazyHolder {
87 private static final SpacecraftCost INSTANCE = new SpacecraftCost();
88
89 /**
90 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
91 * This initialization order is required to support indirect recursion.
92 *
93 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
94 *
95 */
96 private static final Object STATIC_INITIALIZER = ensureInitialized();
97
98 public static Object ensureInitialized() {
99 INSTANCE.ensureInitializedInternal();
100 return null;
101 }
102 }
103
104 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
105 private static final SpacecraftCost.GeneratedPQuery INSTANCE = new GeneratedPQuery();
106
107 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
108
109 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
110
111 private final PParameter parameter_Cost = new PParameter("Cost", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
112
113 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Spacecraft, parameter_Cost);
114
115 private GeneratedPQuery() {
116 super(PVisibility.PRIVATE);
117 }
118
119 @Override
120 public String getFullyQualifiedName() {
121 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.spacecraftCost";
122 }
123
124 @Override
125 public List<String> getParameterNames() {
126 return Arrays.asList("Mission","Spacecraft","Cost");
127 }
128
129 @Override
130 public List<PParameter> getParameters() {
131 return parameters;
132 }
133
134 @Override
135 public Set<PBody> doGetContainedBodies() {
136 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
137 Set<PBody> bodies = new LinkedHashSet<>();
138 {
139 PBody body = new PBody(this);
140 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
141 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
142 PVariable var_Cost = body.getOrCreateVariableByName("Cost");
143 PVariable var_Kind = body.getOrCreateVariableByName("Kind");
144 PVariable var_KindCount = body.getOrCreateVariableByName("KindCount");
145 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
146 PVariable var_BasePrice = body.getOrCreateVariableByName("BasePrice");
147 PVariable var_InterferometryPayloadCost = body.getOrCreateVariableByName("InterferometryPayloadCost");
148 PVariable var_AdditionalCommSubsystemCost = body.getOrCreateVariableByName("AdditionalCommSubsystemCost");
149 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
150 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
151 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_Cost), new JavaTransitiveInstancesKey(java.lang.Double.class));
152 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
153 new ExportedParameter(body, var_Mission, parameter_Mission),
154 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
155 new ExportedParameter(body, var_Cost, parameter_Cost)
156 ));
157 // ConstellationMission.spacecraft(Mission, Spacecraft)
158 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
159 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
160 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
161 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
162 new Equality(body, var__virtual_0_, var_Spacecraft);
163 // Spacecraft.kind(Spacecraft, Kind)
164 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
165 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
166 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
167 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
168 new Equality(body, var__virtual_1_, var_Kind);
169 // KindCount == count find spacecraftOfKind(_, Kind)
170 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
171 new PatternMatchCounter(body, Tuples.flatTupleOf(var___0_, var_Kind), SpacecraftOfKind.instance().getInternalQueryRepresentation(), var__virtual_2_);
172 new Equality(body, var_KindCount, var__virtual_2_);
173 // find basePrice(Spacecraft, BasePrice)
174 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_BasePrice), BasePrice.instance().getInternalQueryRepresentation());
175 // find interferometryPayloadCost(Spacecraft, InterferometryPayloadCost)
176 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_InterferometryPayloadCost), InterferometryPayloadCost.instance().getInternalQueryRepresentation());
177 // find additionalCommSubsystemCost(Spacecraft, AdditionalCommSubsystemCost)
178 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_AdditionalCommSubsystemCost), AdditionalCommSubsystemCost.instance().getInternalQueryRepresentation());
179 // Cost == eval(BasePrice * Math.pow(KindCount, -0.25) + InterferometryPayloadCost + AdditionalCommSubsystemCost)
180 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
181 new ExpressionEvaluation(body, new IExpressionEvaluator() {
182
183 @Override
184 public String getShortDescription() {
185 return "Expression evaluation from pattern spacecraftCost";
186 }
187
188 @Override
189 public Iterable<String> getInputParameterNames() {
190 return Arrays.asList("AdditionalCommSubsystemCost", "BasePrice", "InterferometryPayloadCost", "KindCount");}
191
192 @Override
193 public Object evaluateExpression(IValueProvider provider) throws Exception {
194 Double AdditionalCommSubsystemCost = (Double) provider.getValue("AdditionalCommSubsystemCost");
195 Double BasePrice = (Double) provider.getValue("BasePrice");
196 Double InterferometryPayloadCost = (Double) provider.getValue("InterferometryPayloadCost");
197 Integer KindCount = (Integer) provider.getValue("KindCount");
198 return evaluateExpression_1_1(AdditionalCommSubsystemCost, BasePrice, InterferometryPayloadCost, KindCount);
199 }
200 }, var__virtual_3_ );
201 new Equality(body, var_Cost, var__virtual_3_);
202 bodies.add(body);
203 }
204 return bodies;
205 }
206 }
207
208 private static double evaluateExpression_1_1(final Double AdditionalCommSubsystemCost, final Double BasePrice, final Double InterferometryPayloadCost, final Integer KindCount) {
209 double _pow = Math.pow((KindCount).intValue(), (-0.25));
210 double _multiply = ((BasePrice).doubleValue() * _pow);
211 double _plus = (_multiply + (InterferometryPayloadCost).doubleValue());
212 double _plus_1 = (_plus + (AdditionalCommSubsystemCost).doubleValue());
213 return _plus_1;
214 }
215}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftOfKind.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftOfKind.java
new file mode 100644
index 00000000..5e49aa58
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftOfKind.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 spacecraftOfKind(Spacecraft : Spacecraft, Kind : SpacecraftKind) {
34 * Spacecraft.kind(Spacecraft, Kind);
35 * }
36 * </pre></code>
37 *
38 * @see GenericPatternMatcher
39 * @see GenericPatternMatch
40 *
41 */
42@SuppressWarnings("all")
43public final class SpacecraftOfKind extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
44 private SpacecraftOfKind() {
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 SpacecraftOfKind 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.SpacecraftOfKind (visibility: PUBLIC, simpleName: SpacecraftOfKind, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftOfKind, 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.SpacecraftOfKind (visibility: PUBLIC, simpleName: SpacecraftOfKind, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftOfKind, 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 SpacecraftOfKind INSTANCE = new SpacecraftOfKind();
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 SpacecraftOfKind.GeneratedPQuery INSTANCE = new GeneratedPQuery();
89
90 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Kind = new PParameter("Kind", "hu.bme.mit.inf.dslreasoner.domains.satellite.SpacecraftKind", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "SpacecraftKind")), PParameterDirection.INOUT);
93
94 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Kind);
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.spacecraftOfKind";
103 }
104
105 @Override
106 public List<String> getParameterNames() {
107 return Arrays.asList("Spacecraft","Kind");
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_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
122 PVariable var_Kind = body.getOrCreateVariableByName("Kind");
123 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
124 new TypeConstraint(body, Tuples.flatTupleOf(var_Kind), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
125 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
126 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
127 new ExportedParameter(body, var_Kind, parameter_Kind)
128 ));
129 // Spacecraft.kind(Spacecraft, Kind)
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
131 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "Spacecraft", "kind")));
133 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "SpacecraftKind")));
134 new Equality(body, var__virtual_0_, var_Kind);
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/SpacecraftUplink.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftUplink.java
new file mode 100644
index 00000000..966ff6f8
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftUplink.java
@@ -0,0 +1,171 @@
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 spacecraftUplink(Spacecraft : Spacecraft, Band : TransceiverBand, Target : CommunicatingElement) {
34 * CommunicatingElement.communicationLink(Spacecraft, Link);
35 * DirectedCommunicationLink.source.band(Link, Band);
36 * DirectedCommunicationLink.target(Link, TargetSubsystem);
37 * CommunicatingElement.commSubsystem(Target, TargetSubsystem);
38 * }
39 * </pre></code>
40 *
41 * @see GenericPatternMatcher
42 * @see GenericPatternMatch
43 *
44 */
45@SuppressWarnings("all")
46public final class SpacecraftUplink extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
47 private SpacecraftUplink() {
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 SpacecraftUplink 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.SpacecraftUplink (visibility: PUBLIC, simpleName: SpacecraftUplink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftUplink, 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.SpacecraftUplink (visibility: PUBLIC, simpleName: SpacecraftUplink, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftUplink, 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 SpacecraftUplink INSTANCE = new SpacecraftUplink();
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 SpacecraftUplink.GeneratedPQuery INSTANCE = new GeneratedPQuery();
92
93 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
94
95 private final PParameter parameter_Band = new PParameter("Band", "hu.bme.mit.inf.dslreasoner.domains.satellite.TransceiverBand", new EDataTypeInSlotsKey((EDataType)getClassifierLiteralSafe("http://www.example.org/satellite", "TransceiverBand")), PParameterDirection.INOUT);
96
97 private final PParameter parameter_Target = new PParameter("Target", "hu.bme.mit.inf.dslreasoner.domains.satellite.CommunicatingElement", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "CommunicatingElement")), PParameterDirection.INOUT);
98
99 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_Band, parameter_Target);
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.spacecraftUplink";
108 }
109
110 @Override
111 public List<String> getParameterNames() {
112 return Arrays.asList("Spacecraft","Band","Target");
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_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
127 PVariable var_Band = body.getOrCreateVariableByName("Band");
128 PVariable var_Target = body.getOrCreateVariableByName("Target");
129 PVariable var_Link = body.getOrCreateVariableByName("Link");
130 PVariable var_TargetSubsystem = body.getOrCreateVariableByName("TargetSubsystem");
131 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
132 new TypeConstraint(body, Tuples.flatTupleOf(var_Band), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
133 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
134 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
135 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
136 new ExportedParameter(body, var_Band, parameter_Band),
137 new ExportedParameter(body, var_Target, parameter_Target)
138 ));
139 // CommunicatingElement.communicationLink(Spacecraft, Link)
140 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
141 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
142 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "communicationLink")));
143 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
144 new Equality(body, var__virtual_0_, var_Link);
145 // DirectedCommunicationLink.source.band(Link, Band)
146 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
147 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
148 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "source")));
149 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
150 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
151 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommSubsystem", "band")));
152 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.example.org/satellite", "TransceiverBand")));
153 new Equality(body, var__virtual_2_, var_Band);
154 // DirectedCommunicationLink.target(Link, TargetSubsystem)
155 new TypeConstraint(body, Tuples.flatTupleOf(var_Link), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "DirectedCommunicationLink")));
156 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
157 new TypeConstraint(body, Tuples.flatTupleOf(var_Link, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "DirectedCommunicationLink", "target")));
158 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
159 new Equality(body, var__virtual_3_, var_TargetSubsystem);
160 // CommunicatingElement.commSubsystem(Target, TargetSubsystem)
161 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommunicatingElement")));
162 PVariable var__virtual_4_ = body.getOrCreateVariableByName(".virtual{4}");
163 new TypeConstraint(body, Tuples.flatTupleOf(var_Target, var__virtual_4_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
164 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
165 new Equality(body, var__virtual_4_, var_TargetSubsystem);
166 bodies.add(body);
167 }
168 return bodies;
169 }
170 }
171}
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..f8e6ca4f
--- /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", "hu.bme.mit.inf.dslreasoner.domains.satellite.ConstellationMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "ConstellationMission")), PParameterDirection.INOUT);
91
92 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.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-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithTwoCommSubsystems.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithTwoCommSubsystems.java
new file mode 100644
index 00000000..98f1be7b
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/SpacecraftWithTwoCommSubsystems.java
@@ -0,0 +1,146 @@
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.basicdeferred.Inequality;
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 spacecraftWithTwoCommSubsystems(Spacecraft : Spacecraft) {
33 * Spacecraft.commSubsystem(Spacecraft, Subsystem1);
34 * Spacecraft.commSubsystem(Spacecraft, Subsystem2);
35 * Subsystem1 != Subsystem2;
36 * }
37 * </pre></code>
38 *
39 * @see GenericPatternMatcher
40 * @see GenericPatternMatch
41 *
42 */
43@SuppressWarnings("all")
44public final class SpacecraftWithTwoCommSubsystems extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
45 private SpacecraftWithTwoCommSubsystems() {
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 SpacecraftWithTwoCommSubsystems 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.SpacecraftWithTwoCommSubsystems (visibility: PUBLIC, simpleName: SpacecraftWithTwoCommSubsystems, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithTwoCommSubsystems, 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.SpacecraftWithTwoCommSubsystems (visibility: PUBLIC, simpleName: SpacecraftWithTwoCommSubsystems, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.SpacecraftWithTwoCommSubsystems, 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 SpacecraftWithTwoCommSubsystems INSTANCE = new SpacecraftWithTwoCommSubsystems();
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 SpacecraftWithTwoCommSubsystems.GeneratedPQuery INSTANCE = new GeneratedPQuery();
90
91 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
92
93 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft);
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.spacecraftWithTwoCommSubsystems";
102 }
103
104 @Override
105 public List<String> getParameterNames() {
106 return Arrays.asList("Spacecraft");
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_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
121 PVariable var_Subsystem1 = body.getOrCreateVariableByName("Subsystem1");
122 PVariable var_Subsystem2 = body.getOrCreateVariableByName("Subsystem2");
123 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
124 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
125 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft)
126 ));
127 // Spacecraft.commSubsystem(Spacecraft, Subsystem1)
128 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
129 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
130 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
131 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
132 new Equality(body, var__virtual_0_, var_Subsystem1);
133 // Spacecraft.commSubsystem(Spacecraft, Subsystem2)
134 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
135 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
136 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "CommunicatingElement", "commSubsystem")));
137 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "CommSubsystem")));
138 new Equality(body, var__virtual_1_, var_Subsystem2);
139 // Subsystem1 != Subsystem2
140 new Inequality(body, var_Subsystem1, var_Subsystem2);
141 bodies.add(body);
142 }
143 return bodies;
144 }
145 }
146}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitRate.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitRate.java
new file mode 100644
index 00000000..2faa7733
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitRate.java
@@ -0,0 +1,277 @@
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.SpacecraftUplink;
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.context.common.JavaTransitiveInstancesKey;
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.Equality;
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
21import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
22import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
23import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
24import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
25import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
26import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
27import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
28import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
29
30/**
31 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
32 *
33 * <p>Original source:
34 * <code><pre>
35 * private pattern transmitRate(Spacecraft : Spacecraft, TransmitRate : java Double) {
36 * find spacecraftUplink(Spacecraft, TransceiverBand::UHF, Target);
37 * Spacecraft(Target);
38 * TransmitRate == 5.0;
39 * } or {
40 * find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
41 * Spacecraft(Target);
42 * TransmitRate == 1.6;
43 * } or {
44 * find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
45 * GroundStationNetwork(Target);
46 * TransmitRate == 0.7;
47 * } or {
48 * find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
49 * Spacecraft(Target);
50 * TransmitRate == 220.0;
51 * } or {
52 * find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
53 * GroundStationNetwork(Target);
54 * TransmitRate == 80.0;
55 * }
56 * </pre></code>
57 *
58 * @see GenericPatternMatcher
59 * @see GenericPatternMatch
60 *
61 */
62@SuppressWarnings("all")
63public final class TransmitRate extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
64 private TransmitRate() {
65 super(GeneratedPQuery.INSTANCE);
66 }
67
68 /**
69 * @return the singleton instance of the query specification
70 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
71 *
72 */
73 public static TransmitRate instance() {
74 try{
75 return LazyHolder.INSTANCE;
76 } catch (ExceptionInInitializerError err) {
77 throw processInitializerError(err);
78 }
79 }
80
81 /**
82 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate (visibility: PUBLIC, simpleName: TransmitRate, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate, 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
83 * <b>not</b> at the class load time of the outer class,
84 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate (visibility: PUBLIC, simpleName: TransmitRate, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate, 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()}.
85 *
86 * <p> This workaround is required e.g. to support recursion.
87 *
88 */
89 private static class LazyHolder {
90 private static final TransmitRate INSTANCE = new TransmitRate();
91
92 /**
93 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
94 * This initialization order is required to support indirect recursion.
95 *
96 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
97 *
98 */
99 private static final Object STATIC_INITIALIZER = ensureInitialized();
100
101 public static Object ensureInitialized() {
102 INSTANCE.ensureInitializedInternal();
103 return null;
104 }
105 }
106
107 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
108 private static final TransmitRate.GeneratedPQuery INSTANCE = new GeneratedPQuery();
109
110 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
111
112 private final PParameter parameter_TransmitRate = new PParameter("TransmitRate", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
113
114 private final List<PParameter> parameters = Arrays.asList(parameter_Spacecraft, parameter_TransmitRate);
115
116 private GeneratedPQuery() {
117 super(PVisibility.PRIVATE);
118 }
119
120 @Override
121 public String getFullyQualifiedName() {
122 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.transmitRate";
123 }
124
125 @Override
126 public List<String> getParameterNames() {
127 return Arrays.asList("Spacecraft","TransmitRate");
128 }
129
130 @Override
131 public List<PParameter> getParameters() {
132 return parameters;
133 }
134
135 @Override
136 public Set<PBody> doGetContainedBodies() {
137 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
138 Set<PBody> bodies = new LinkedHashSet<>();
139 {
140 PBody body = new PBody(this);
141 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
142 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
143 PVariable var_Target = body.getOrCreateVariableByName("Target");
144 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
145 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitRate), new JavaTransitiveInstancesKey(java.lang.Double.class));
146 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
147 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
148 new ExportedParameter(body, var_TransmitRate, parameter_TransmitRate)
149 ));
150 // find spacecraftUplink(Spacecraft, TransceiverBand::UHF, Target)
151 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
152 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "UHF").getInstance());
153 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_, var_Target), SpacecraftUplink.instance().getInternalQueryRepresentation());
154 // Spacecraft(Target)
155 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
156 // TransmitRate == 5.0
157 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
158 new ConstantValue(body, var__virtual_1_, 5.0);
159 new Equality(body, var_TransmitRate, var__virtual_1_);
160 bodies.add(body);
161 }
162 {
163 PBody body = new PBody(this);
164 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
165 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
166 PVariable var_Target = body.getOrCreateVariableByName("Target");
167 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
168 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitRate), new JavaTransitiveInstancesKey(java.lang.Double.class));
169 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
170 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
171 new ExportedParameter(body, var_TransmitRate, parameter_TransmitRate)
172 ));
173 // find spacecraftUplink(Spacecraft, TransceiverBand::X, Target)
174 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
175 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "X").getInstance());
176 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_, var_Target), SpacecraftUplink.instance().getInternalQueryRepresentation());
177 // Spacecraft(Target)
178 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
179 // TransmitRate == 1.6
180 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
181 new ConstantValue(body, var__virtual_1_, 1.6);
182 new Equality(body, var_TransmitRate, var__virtual_1_);
183 bodies.add(body);
184 }
185 {
186 PBody body = new PBody(this);
187 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
188 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
189 PVariable var_Target = body.getOrCreateVariableByName("Target");
190 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
191 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitRate), new JavaTransitiveInstancesKey(java.lang.Double.class));
192 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
193 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
194 new ExportedParameter(body, var_TransmitRate, parameter_TransmitRate)
195 ));
196 // find spacecraftUplink(Spacecraft, TransceiverBand::X, Target)
197 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
198 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "X").getInstance());
199 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_, var_Target), SpacecraftUplink.instance().getInternalQueryRepresentation());
200 // GroundStationNetwork(Target)
201 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
202 // TransmitRate == 0.7
203 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
204 new ConstantValue(body, var__virtual_1_, 0.7);
205 new Equality(body, var_TransmitRate, var__virtual_1_);
206 bodies.add(body);
207 }
208 {
209 PBody body = new PBody(this);
210 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
211 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
212 PVariable var_Target = body.getOrCreateVariableByName("Target");
213 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
214 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitRate), new JavaTransitiveInstancesKey(java.lang.Double.class));
215 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
216 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
217 new ExportedParameter(body, var_TransmitRate, parameter_TransmitRate)
218 ));
219 // find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target)
220 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
221 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "Ka").getInstance());
222 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_, var_Target), SpacecraftUplink.instance().getInternalQueryRepresentation());
223 // Spacecraft(Target)
224 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
225 // TransmitRate == 220.0
226 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
227 new ConstantValue(body, var__virtual_1_, 220.0);
228 new Equality(body, var_TransmitRate, var__virtual_1_);
229 bodies.add(body);
230 }
231 {
232 PBody body = new PBody(this);
233 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
234 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
235 PVariable var_Target = body.getOrCreateVariableByName("Target");
236 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
237 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitRate), new JavaTransitiveInstancesKey(java.lang.Double.class));
238 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
239 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
240 new ExportedParameter(body, var_TransmitRate, parameter_TransmitRate)
241 ));
242 // find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target)
243 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
244 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http://www.example.org/satellite", "TransceiverBand", "Ka").getInstance());
245 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var__virtual_0_, var_Target), SpacecraftUplink.instance().getInternalQueryRepresentation());
246 // GroundStationNetwork(Target)
247 new TypeConstraint(body, Tuples.flatTupleOf(var_Target), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "GroundStationNetwork")));
248 // TransmitRate == 80.0
249 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
250 new ConstantValue(body, var__virtual_1_, 80.0);
251 new Equality(body, var_TransmitRate, var__virtual_1_);
252 bodies.add(body);
253 }
254 return bodies;
255 }
256 }
257
258 private static double evaluateExpression_1_1() {
259 return 5.0;
260 }
261
262 private static double evaluateExpression_2_1() {
263 return 1.6;
264 }
265
266 private static double evaluateExpression_3_1() {
267 return 0.7;
268 }
269
270 private static double evaluateExpression_4_1() {
271 return 220.0;
272 }
273
274 private static double evaluateExpression_5_1() {
275 return 80.0;
276 }
277}
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitTime.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitTime.java
new file mode 100644
index 00000000..eb338bec
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src-gen/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/internal/TransmitTime.java
@@ -0,0 +1,200 @@
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.IncomingData;
7import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.ScienceData;
8import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitRate;
9import java.util.Arrays;
10import java.util.LinkedHashSet;
11import java.util.List;
12import java.util.Set;
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
15import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecificationWithGenericMatcher;
16import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
17import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
18import org.eclipse.viatra.query.runtime.matchers.aggregators.sum;
19import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
20import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey;
21import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
22import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
23import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
24import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
25import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint;
26import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
36import org.eclipse.xtext.xbase.lib.DoubleExtensions;
37
38/**
39 * A pattern-specific query specification that can instantiate GenericPatternMatcher in a type-safe way.
40 *
41 * <p>Original source:
42 * <code><pre>
43 * private pattern transmitTime(Mission : InterferometryMission, Spacecraft : Spacecraft, TransmitTime : java Double) {
44 * ConstellationMission.spacecraft(Mission, Spacecraft);
45 * find scienceData(Spacecraft, ScienceData);
46 * IncomingData == sum find incomingData(Spacecraft, _, #_);
47 * find transmitRate(Spacecraft, TransmitRate);
48 * TransmitTime == eval((ScienceData + IncomingData) / (7.5 TransmitRate));
49 * }
50 * </pre></code>
51 *
52 * @see GenericPatternMatcher
53 * @see GenericPatternMatch
54 *
55 */
56@SuppressWarnings("all")
57public final class TransmitTime extends BaseGeneratedEMFQuerySpecificationWithGenericMatcher {
58 private TransmitTime() {
59 super(GeneratedPQuery.INSTANCE);
60 }
61
62 /**
63 * @return the singleton instance of the query specification
64 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
65 *
66 */
67 public static TransmitTime instance() {
68 try{
69 return LazyHolder.INSTANCE;
70 } catch (ExceptionInInitializerError err) {
71 throw processInitializerError(err);
72 }
73 }
74
75 /**
76 * Inner class allowing the singleton instance of {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitTime (visibility: PUBLIC, simpleName: TransmitTime, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitTime, 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
77 * <b>not</b> at the class load time of the outer class,
78 * but rather at the first call to {@link JvmGenericType: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitTime (visibility: PUBLIC, simpleName: TransmitTime, identifier: hu.bme.mit.inf.dslreasoner.domains.satellite.queries.internal.TransmitTime, 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()}.
79 *
80 * <p> This workaround is required e.g. to support recursion.
81 *
82 */
83 private static class LazyHolder {
84 private static final TransmitTime INSTANCE = new TransmitTime();
85
86 /**
87 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
88 * This initialization order is required to support indirect recursion.
89 *
90 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
91 *
92 */
93 private static final Object STATIC_INITIALIZER = ensureInitialized();
94
95 public static Object ensureInitialized() {
96 INSTANCE.ensureInitializedInternal();
97 return null;
98 }
99 }
100
101 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
102 private static final TransmitTime.GeneratedPQuery INSTANCE = new GeneratedPQuery();
103
104 private final PParameter parameter_Mission = new PParameter("Mission", "hu.bme.mit.inf.dslreasoner.domains.satellite.InterferometryMission", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "InterferometryMission")), PParameterDirection.INOUT);
105
106 private final PParameter parameter_Spacecraft = new PParameter("Spacecraft", "hu.bme.mit.inf.dslreasoner.domains.satellite.Spacecraft", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/satellite", "Spacecraft")), PParameterDirection.INOUT);
107
108 private final PParameter parameter_TransmitTime = new PParameter("TransmitTime", "java.lang.Double", new JavaTransitiveInstancesKey(java.lang.Double.class), PParameterDirection.INOUT);
109
110 private final List<PParameter> parameters = Arrays.asList(parameter_Mission, parameter_Spacecraft, parameter_TransmitTime);
111
112 private GeneratedPQuery() {
113 super(PVisibility.PRIVATE);
114 }
115
116 @Override
117 public String getFullyQualifiedName() {
118 return "hu.bme.mit.inf.dslreasoner.domains.satellite.queries.transmitTime";
119 }
120
121 @Override
122 public List<String> getParameterNames() {
123 return Arrays.asList("Mission","Spacecraft","TransmitTime");
124 }
125
126 @Override
127 public List<PParameter> getParameters() {
128 return parameters;
129 }
130
131 @Override
132 public Set<PBody> doGetContainedBodies() {
133 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
134 Set<PBody> bodies = new LinkedHashSet<>();
135 {
136 PBody body = new PBody(this);
137 PVariable var_Mission = body.getOrCreateVariableByName("Mission");
138 PVariable var_Spacecraft = body.getOrCreateVariableByName("Spacecraft");
139 PVariable var_TransmitTime = body.getOrCreateVariableByName("TransmitTime");
140 PVariable var_ScienceData = body.getOrCreateVariableByName("ScienceData");
141 PVariable var_IncomingData = body.getOrCreateVariableByName("IncomingData");
142 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
143 PVariable var___1_ = body.getOrCreateVariableByName("_<1>");
144 PVariable var_TransmitRate = body.getOrCreateVariableByName("TransmitRate");
145 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "InterferometryMission")));
146 new TypeConstraint(body, Tuples.flatTupleOf(var_Spacecraft), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
147 new TypeFilterConstraint(body, Tuples.flatTupleOf(var_TransmitTime), new JavaTransitiveInstancesKey(java.lang.Double.class));
148 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
149 new ExportedParameter(body, var_Mission, parameter_Mission),
150 new ExportedParameter(body, var_Spacecraft, parameter_Spacecraft),
151 new ExportedParameter(body, var_TransmitTime, parameter_TransmitTime)
152 ));
153 // ConstellationMission.spacecraft(Mission, Spacecraft)
154 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "ConstellationMission")));
155 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
156 new TypeConstraint(body, Tuples.flatTupleOf(var_Mission, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/satellite", "ConstellationMission", "spacecraft")));
157 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/satellite", "Spacecraft")));
158 new Equality(body, var__virtual_0_, var_Spacecraft);
159 // find scienceData(Spacecraft, ScienceData)
160 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_ScienceData), ScienceData.instance().getInternalQueryRepresentation());
161 // IncomingData == sum find incomingData(Spacecraft, _, #_)
162 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
163 new AggregatorConstraint(new sum().getAggregatorLogic(Double.class), body, Tuples.flatTupleOf(var_Spacecraft, var___0_, var___1_), IncomingData.instance().getInternalQueryRepresentation(), var__virtual_1_, 2);
164 new Equality(body, var_IncomingData, var__virtual_1_);
165 // find transmitRate(Spacecraft, TransmitRate)
166 new PositivePatternCall(body, Tuples.flatTupleOf(var_Spacecraft, var_TransmitRate), TransmitRate.instance().getInternalQueryRepresentation());
167 // TransmitTime == eval((ScienceData + IncomingData) / (7.5 * TransmitRate))
168 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
169 new ExpressionEvaluation(body, new IExpressionEvaluator() {
170
171 @Override
172 public String getShortDescription() {
173 return "Expression evaluation from pattern transmitTime";
174 }
175
176 @Override
177 public Iterable<String> getInputParameterNames() {
178 return Arrays.asList("IncomingData", "ScienceData", "TransmitRate");}
179
180 @Override
181 public Object evaluateExpression(IValueProvider provider) throws Exception {
182 Double IncomingData = (Double) provider.getValue("IncomingData");
183 Double ScienceData = (Double) provider.getValue("ScienceData");
184 Double TransmitRate = (Double) provider.getValue("TransmitRate");
185 return evaluateExpression_1_1(IncomingData, ScienceData, TransmitRate);
186 }
187 }, var__virtual_2_ );
188 new Equality(body, var_TransmitTime, var__virtual_2_);
189 bodies.add(body);
190 }
191 return bodies;
192 }
193 }
194
195 private static double evaluateExpression_1_1(final Double IncomingData, final Double ScienceData, final Double TransmitRate) {
196 double _plus = DoubleExtensions.operator_plus(ScienceData, IncomingData);
197 double _divide = (_plus / (7.5 * (TransmitRate).doubleValue()));
198 return _divide;
199 }
200}
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..7ca948cc
--- /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,300 @@
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// No communication loops may exist
46// No spacecraft may directly communicate with itself
47
48@Constraint(severity = "error", key = {Element},
49 message = "Communication loop.")
50pattern communicationLoop(Element : CommunicatingElement) {
51 find indirectCommunicationLink(Element, Element);
52}
53
54private pattern indirectCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
55 find directCommunicationLink+(Source, Target);
56}
57
58private pattern directCommunicationLink(Source : CommunicatingElement, Target : CommunicatingElement) {
59 DirectedCommunicationLink.source(Link, SourceSubsystem);
60 DirectedCommunicationLink.target(Link, TargetSubsystem);
61 CommunicatingElement.commSubsystem(Source, SourceSubsystem);
62 CommunicatingElement.commSubsystem(Target, TargetSubsystem);
63}
64
65// Source and target communication systems must be compatible.
66
67@Constraint(severity = "error", key = {Link},
68 message = "Two ends of a communication link must use the same band.")
69pattern incompatibleSourceAndTargetBand(Link : DirectedCommunicationLink) {
70 DirectedCommunicationLink.source(Link, SourceSubsystem);
71 DirectedCommunicationLink.target(Link, TargetSubsystem);
72 CommSubsystem.band(SourceSubsystem, Band);
73 neg find commSubsystemBand(TargetSubsystem, Band);
74}
75
76private pattern commSubsystemBand(Comm : CommSubsystem, Band : TransceiverBand) {
77 CommSubsystem.band(Comm, Band);
78}
79
80@Constraint(severity = "error", key = {Link},
81 message = "Two ends of a communication link must use the same antenna gain.")
82pattern incompatibleSourceAndTargetGain(Link : DirectedCommunicationLink) {
83 DirectedCommunicationLink.source(Link, SourceSubsystem);
84 DirectedCommunicationLink.target(Link, TargetSubsystem);
85 CommSubsystem.gain(SourceSubsystem, Gain);
86 neg find commSubsystemGain(TargetSubsystem, Gain);
87}
88
89private pattern commSubsystemGain(Comm : CommSubsystem, Gain : AntennaGain) {
90 CommSubsystem.gain(Comm, Gain);
91}
92
93// UHF-band transmitters may only be combined with a low gain antenna
94
95@Constraint(severity = "error", key = {Comm},
96 message = "UHF transceiver must be combined with a low gain antenna.")
97pattern uhfAntennaGainNotLow(Comm : CommSubsystem) {
98 CommSubsystem.band(Comm, TransceiverBand::UHF);
99 // VIATRA will fail to infer a type constraint for the virtual variable introduced
100 // when an enum literal appears in a negative pattern call, so we use a helper pattern
101 // instead of neg find commSubsystemGain(Comm, AntennaGain::LOW);
102 neg find commSubsystemGainLow(Comm);
103}
104
105private pattern commSubsystemGainLow(Comm : CommSubsystem) {
106 CommSubsystem.gain(Comm, AntennaGain::LOW);
107}
108
109// X-band transmitters may only be combined with a medium gain antenna
110
111@Constraint(severity = "error", key = {Comm},
112 message = "X-band transceiver must be combined with a medium gain antenna.")
113pattern xAntennaGainNotMedium(Comm : CommSubsystem) {
114 CommSubsystem.band(Comm, TransceiverBand::X);
115 neg find commSubsystemGainMedium(Comm);
116}
117
118private pattern commSubsystemGainMedium(Comm : CommSubsystem) {
119 CommSubsystem.gain(Comm, AntennaGain::MEDIUM);
120}
121
122// Ka-band transmitters may only be combined with a medium or high gain antenna
123
124@Constraint(severity = "error", key = {Comm},
125 message = "Ka-band transceiver must be combined with a medium or high gain antenna.")
126pattern kaAntennaGainLow(Comm : CommSubsystem) {
127 CommSubsystem.band(Comm, TransceiverBand::Ka);
128 CommSubsystem.gain(Comm, AntennaGain::LOW);
129}
130
131// 3U CubeSats are assumed to only be able to downlink to Earth using an X-band trasmitter,
132// but cross-link using UHF
133
134@Constraint(severity = "error", key = {Sat},
135 message = "3U CubeSats can only cross-link using UHF.")
136pattern threeUCubeSatWithNonUhfCrossLink(Sat : Spacecraft) {
137 Spacecraft.kind(Sat, SpacecraftKind::CubeSat3U);
138 CommunicatingElement.commSubsystem(Sat, SourceComm);
139 neg find commSubsystemBandUhf(SourceComm);
140 DirectedCommunicationLink.source(Link, SourceComm);
141 DirectedCommunicationLink.target(Link, TargetComm);
142 CommunicatingElement.commSubsystem(Target, TargetComm);
143 neg find groundStationNetwork(Target);
144}
145
146private pattern commSubsystemBandUhf(Comm : CommSubsystem) {
147 CommSubsystem.band(Comm, TransceiverBand::UHF);
148}
149
150private pattern groundStationNetwork(Network : GroundStationNetwork) {
151 GroundStationNetwork(Network);
152}
153
154// Only a Small Satellite can be configured with a Ka-band communication system
155
156@Constraint(severity = "error", key = {Spacecraft},
157 message = "Only a Small Satellite can be configured with a Ka-band communication system.")
158pattern cubeSatWithKaAntenna(Spacecraft : Spacecraft) {
159 CommunicatingElement.commSubsystem.band(Spacecraft, TransceiverBand::Ka);
160 neg find smallSat(Spacecraft);
161}
162
163private pattern smallSat(Sat : Spacecraft) {
164 Spacecraft.kind(Sat, SpacecraftKind::SmallSat);
165}
166
167//
168// Metrics
169//
170
171// Coverage
172
173pattern coverageMetric(Coverage : java Double) {
174 Coverage == sum find missionCoverage(_, #_);
175}
176
177private pattern missionCoverage(Mission : InterferometryMission, Coverage : java Double) {
178 InterferometryMission.observationTime(Mission, ObservationTime);
179 ObserverCount == count find spacecraftWithInterferometryPayload(Mission, _);
180 Coverage == eval(Math.pow(1 - 2.0 / ObserverCount, 1 + 9 * (1.0 / ObservationTime)) + 0.05 * ObservationTime / 3);
181}
182
183// Time
184
185pattern timeMetric(Time : java Double) {
186 Time == sum find missionTime(_, #_);
187}
188
189private pattern missionTime(Mission : InterferometryMission, Time : java Double) {
190 InterferometryMission.observationTime(Mission, ObservationTime);
191 TrasmitTime == sum find transmitTime(Mission, _, #_);
192 Time == eval(TrasmitTime + 60.0 * ObservationTime);
193}
194
195private pattern transmitTime(Mission : InterferometryMission, Spacecraft : Spacecraft, TransmitTime : java Double) {
196 ConstellationMission.spacecraft(Mission, Spacecraft);
197 find scienceData(Spacecraft, ScienceData);
198 IncomingData == sum find incomingData(Spacecraft, _, #_);
199 find transmitRate(Spacecraft, TransmitRate);
200 TransmitTime == eval((ScienceData + IncomingData) / (7.5 * TransmitRate));
201}
202
203private pattern incomingData(Spacecraft : Spacecraft, Source : Spacecraft, Data : java Double) {
204 find indirectCommunicationLink(Source, Spacecraft);
205 find scienceData(Source, Data);
206}
207
208private pattern scienceData(Spacecraft : Spacecraft, Data : java Double) {
209 ConstellationMission.spacecraft(Mission, Spacecraft);
210 InterferometryMission.observationTime(Mission, ObservationTime);
211 Data == eval(12.0 * ObservationTime);
212}
213
214private pattern transmitRate(Spacecraft : Spacecraft, TransmitRate : java Double) {
215 find spacecraftUplink(Spacecraft, TransceiverBand::UHF, Target);
216 Spacecraft(Target);
217 TransmitRate == 5.0;
218} or {
219 find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
220 Spacecraft(Target);
221 TransmitRate == 1.6;
222} or {
223 find spacecraftUplink(Spacecraft, TransceiverBand::X, Target);
224 GroundStationNetwork(Target);
225 TransmitRate == 0.7;
226} or {
227 find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
228 Spacecraft(Target);
229 TransmitRate == 220.0;
230} or {
231 find spacecraftUplink(Spacecraft, TransceiverBand::Ka, Target);
232 GroundStationNetwork(Target);
233 TransmitRate == 80.0;
234}
235
236private pattern spacecraftUplink(Spacecraft : Spacecraft, Band : TransceiverBand, Target : CommunicatingElement) {
237 CommunicatingElement.communicationLink(Spacecraft, Link);
238 DirectedCommunicationLink.source.band(Link, Band);
239 DirectedCommunicationLink.target(Link, TargetSubsystem);
240 CommunicatingElement.commSubsystem(Target, TargetSubsystem);
241}
242
243// Cost
244
245pattern costMetric(Cost : java Double) {
246 Cost == sum find missionCost(_, #_);
247}
248
249private pattern missionCost(Mission : InterferometryMission, Cost : java Double) {
250 InterferometryMission.observationTime(Mission, ObservationTime);
251 SpacecraftCost == sum find spacecraftCost(Mission, _, #_);
252 Cost == eval(SpacecraftCost + 100000.0 * ObservationTime);
253}
254
255private pattern spacecraftCost(Mission : InterferometryMission, Spacecraft : Spacecraft, Cost : java Double) {
256 ConstellationMission.spacecraft(Mission, Spacecraft);
257 Spacecraft.kind(Spacecraft, Kind);
258 KindCount == count find spacecraftOfKind(_, Kind);
259 find basePrice(Spacecraft, BasePrice);
260 find interferometryPayloadCost(Spacecraft, InterferometryPayloadCost);
261 find additionalCommSubsystemCost(Spacecraft, AdditionalCommSubsystemCost);
262 Cost == eval(BasePrice * Math.pow(KindCount, -0.25) + InterferometryPayloadCost + AdditionalCommSubsystemCost);
263}
264
265private pattern spacecraftOfKind(Spacecraft : Spacecraft, Kind : SpacecraftKind) {
266 Spacecraft.kind(Spacecraft, Kind);
267}
268
269private pattern basePrice(Spacecraft : Spacecraft, BasePrice : java Double) {
270 Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat3U);
271 BasePrice == 250000.0;
272} or {
273 Spacecraft.kind(Spacecraft, SpacecraftKind::CubeSat6U);
274 BasePrice == 750000.0;
275} or {
276 Spacecraft.kind(Spacecraft, SpacecraftKind::SmallSat);
277 BasePrice == 3000000.0;
278}
279
280private pattern interferometryPayloadCost(Spacecraft : Spacecraft, Cost : java Double) {
281 find spacecraftWithInterferometryPayload(_, Spacecraft);
282 Cost == 50000.0;
283} or {
284 neg find spacecraftWithInterferometryPayload(_, Spacecraft);
285 Cost == 0.0;
286}
287
288private pattern additionalCommSubsystemCost(Spacecraft : Spacecraft, Cost : java Double) {
289 find spacecraftWithTwoCommSubsystems(Spacecraft);
290 Cost == 100000.0;
291} or {
292 neg find spacecraftWithTwoCommSubsystems(Spacecraft);
293 Cost == 0.0;
294}
295
296private pattern spacecraftWithTwoCommSubsystems(Spacecraft : Spacecraft) {
297 Spacecraft.commSubsystem(Spacecraft, Subsystem1);
298 Spacecraft.commSubsystem(Spacecraft, Subsystem2);
299 Subsystem1 != Subsystem2;
300}
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/.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.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>