Create ModelJoin Queries authored by Christopher's avatar Christopher
# Beispiele für ModelJoin Queries
- Beispiele für das Library Metamodel
- Beispiel ohne join für einen kompletten View sollte jedoch nicht mit ModelJoin kompatibel sein
```
View name: completeView
keep supertype library.Person as ViewPerson
keep subtype Employee as ViewEmployee
keep supertype Library as ViewLibrary
keep attribute library.Library.name as viewLibraryName
keep attribute library.Employee.name as viewEmployeeName
keep attribute library.Employee.manager as viewManager
keep attribute library.Library.employees as viewLibraryEmployees
without join
```
- ModelJoin kompatibeles Beispiel mit natural join von einem Element mit sich selbst
```
viewname CompleteView
natural join library.Library with library.Library as ViewLibrary {
keep attributes library.Library.name as viewName
keep outgoing library.Library.employees as type ViewEmployee as reference viewEmployees {
keep supertype library.Person as ViewPerson {
keep attributes library.Person.name as viewName
}
keep outgoing library.Employee.manager as reference viewManager
keep attributes library.Employee.salary as viewSalary
}
}
```
## Benötigter Prozess
- Eingaben:
- Ecore Model
- ModelJoin Query als Text Datei
## Braindump dazu
### Views auf 2 unterschiedlichen Modellen erzeugen:
- für den Join brauchen wir eine neue CompartmentKlasse, welche funktionen zum Zugriff auf die Elemente anbietet Beispiel
- Movie -> Aktor
- Movie aus imdb.Film und library.VideoCassette
- Aktor aus imdb.Actor[playedBy] (über imdb.Figure[figures]) und library.Person[cast]
- library.VideoCassete -cast->0..* library.Person
- imdb.Film -figures->1..* imdb.Figures -plyedBy->1..* imdb.Actors extends imdb.Person
- von imdb zu Library playedBy Relation abbildbar aber nicht anders Rum da keine Information über Figure vorhanden ist
### Sync Regeln auch in ModelJoin enthalten:
- imdb.Person == library.Person
- imdb.Film == library.VideoCassete
### Join ideen
- outer joins brauchen wir vermutlich gar nicht da wir erwarten das die Modelle im vollen sync stehen
- außer wir haben sowas was von a nach b erstellt und ansonsten nur verbindet wenn vorhanden
- library.VideoCassette kann auch nur physisch vorhanden sein wenn sie da ist, sobald ein Film gedreht wird gibt es den der muss aber in einer Bibliothek nicht vorhanden sein
- theta join baut das cartesische produkt und filtert dann mit einer where clausel
- views sollten alle dispatch regel haben das in ihnen aufgerufene Funktionen nicht nach sich selbst suchen
\ No newline at end of file