Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Edwina Langenberg Geändert vor über 7 Jahren
1
Datenmodellierung für INSPIRE-Themen und Umsetzung mit GML
Peter Korduan Universität Rostock Agrar- und Umweltwissenschaftliche Fakultät Professur für Geodäsie und Geoinformatik
2
Übersicht Layer aus Sicht der AG MSRL Datenthemen INSPIRE
Oceanographic and Geographical Features Environmental Monitoring Facilities Observation and Measurement
3
Layertabelle Eutrophierung
4
INSPIRE Datenthemen Annex I Annex II 1. Coordinate reference systems
Annex III 1. Statistical units 2. Buildings 3. Soil 4. Land use 5. Human health and safety 6. Utility and Government services 7. Environmental monitoring facilities 8. Production and indu strial facilities 9. Agricultural and aquaculture facilities 10. Population distribution – demography 11. Area management/restriction/regulation zones & reporting units 12. Natural risk zones 13. Atmospheric conditions 14. Meteorological geographical features 15. Oceanographic geographical features 16. Sea regions 17. Bio-geographical regions 18. Habitats and biotopes 19. Species distribution 20. Energy resources 21. Mineral resources Annex I 1. Coordinate reference systems 2. Geographical grid systems 3. Geographical names 4. Administrative units 5. Addresses 6. Cadastral parcels 7. Transport networks 8. Hydrography 9. Protected sites Annex II 1. Elevation 2. Land cover 3. Orthoimagery 4. Geology
5
Identifizierung nach Artikel 4 der INSPIRE Richtlinie
Auch die Quellen der Daten? INSPIRE Spezifikationen für die Energiewirtschaft, Dr. Peter Korduan
6
Wie sehen die Daten-Spezifikationen genau aus?
Anhänge (Pakete) Spezifikationen (Pakete) Anwendungsschemata (Pakete) FeatureTypen (Klassen) Feature Eigenschaften (Attribute) DatenTypen (Klassen) Code-Listen (Enumeration) Listeneinträge (Values) Beziehungen (Assoziation, Aggregation, Generalisierung, …) Multiplizität... INSPIRE Spezifikationen für die Energiewirtschaft, Dr. Peter Korduan
7
INSPIRE Modell Modelle für INSPIRE sind objektorientiert
Typen werden als Klassen modelliert zusammen mit Beziehungen in Klassendiagrammen Klassen können voneinander abgeleitet sein Attribute können einfache Werte der bekannten Typen Integer, Double oder String haben, oder andern Typen entsprechen MDI-DE, Korduan
8
MDI-DE, Korduan
9
SeaRegions packages
10
Overview of sea areas
11
Overview of SeaBed, SeaSurface and MarineIsoLine
12
Overview of MarineAdministrativeZone
14
Hirarchical Cascade of Environmental Monitoring Facilities
15
Application Schema Environmental Monitoring Facilities
16
Applikation Schema Environmental Monitoring Network
18
Observation and Measurement
An Observation is an action whose result is an estimate of the value of some property of the feature-of-interest, at a specific point in time, obtained using a specified procedure Cox 2008 ISO Standards 19156 Für Repräsentation von gemessenen, modellierten und simulierten Daten Domainübergreifend vor allem für Datenaustausch Für Daten und Qualitätsdaten Handlungsanleitung in INSPIRE/D2.9 MDI-DE, Korduan
19
Basic Observation Type
20
Sampling Feature Type
21
Einführung zu GML MDI-DE, Korduan
22
Namensräume (Namespaces)
Namensräume sind ein Mechanismus um Konflikte in Elementnamen zu lösen Was passiert, wenn zwei Elemente mit einem Name definiert sind? Elementnamen sind mit einem Präfix geschrieben, und das Präfix ist zu einem Namensraum gebunden Der Namensraum ist als URI spezifiziert <mein:Element xmlns:mein=" <dein:Element xmlns:dein=" /> </mein:Element> Mehrere Namensräume können in einem Dokument verwendet werden Eine Defaultnamensraum (ohne Präfix) kann auch definiert werden Ein Schema wird mit einem Zielnamensraum (targetNamespace) definiert - 22
23
XSD – XML Schema Definition
XSD sind selbst XML Dokumente, die eine XML-Grammatik definieren XSD unterstützt verschiedene Datentypen und objekt-orientierte Konzepte wie Abstraktion und Vererbung Der XSD-Namensraum ist Präfix xs oder xsd wird normalerweise hierzu gebunden Für Instanzen eines Schemas gibt es noch einen Namensraum xmlns:xsi=" Die Schemadatei selbst soll in dem Dokument referenziert werden xsi:schemaLocation=" myschema.xsd" xsi:noNamespaceSchemaLocation="defaultSchema.xsd" - 23
24
Beispiel einer XSD… <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd=" targetNamespace=" xmlns:myns=" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:element name="Buch"> <xsd:complexType> <xsd:sequence> <xsd:element name="Titel" type="xsd:string"/> <xsd:element name="Autor" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> <xsd:attribute name="foo"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="(bar|doz)+"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema> - 24
25
...und einer entsprechenden Instanz
<?xml version="1.0" encoding="UTF-8"?> <myns:Buch xmlns:myns=" xmlns:xsi=" xsi:schemaLocation=" schema.xsd" id="buch_1" foo="bar"> <myns:Titel>Harry Potter</myns:Titel> <myns:Autor>J.K. Rowling</myns:Autor> </myns:Buch> - 25
26
Aspekte der XSD Modularität Elemente Konkret, Abstrakt Typen Standard
Einfach, Komplex, Abstrakt Inline, Genannt Vererbung Erweiterung, Einschränkung Substitution Groups - 26
27
Modularität XSD können weitere XSD einbinden Mit anderen Namensräumen
Um existierende Elemente anderer Schemen einzubinden <xsd:import namespace=" schemaLocation="yourSchema.xsd"/> Mit demselben Namensraum Um ein existierendes Schema zu erweitern <xsd:include schemaLocation="weiteresSchema.xsd"/> Ein Schema kann dadurch aus mehreren Dateien entstehen z.B. Geography Markup Language (GML) 3.1.1: 29 Dateien, alle im Namensraum - 27
28
Elemente Elemente sind mit xsd:Element definiert
Attribut Name ist Pflicht: name="Buch" Ein Element kann als Abstrakt definiert werden Attribut: abstract="true" Nützlich im Zusammenhang mit substitutionGroup Ein Elementtyp kann entweder referenziert werden Attribut: type="myns:BuchType" oder inline definiert werden als Kindelement - 28
29
Typen Typen sind: entweder einfach (SimpleType)
einen String (möglicherweise eingeschränkt) können für Attribute und Elemente verwendet werden verschiedene Standardtypen sind definiert (nächste Folien) oder komplex (ComplexType) mit Kindelementen und ggf. Attributen ComplexType, ComplexContent oder mit Attributen aber ohne Kindelemente ComplexType, SimpleContent ein Element, das nur einen String enthält, aber ein Attribut besitzt, ist komplex: ohne Attribute wäre es einfach! - 29
30
Vordefinierte String-Typen
Die folgenden Typen sind alle in dem XSD-Namensraum definiert string Zeichenkette hier ist ein Beispiel language ISO639-1 Kürzel einer Sprache de, eo, tr, ja normalizedString Zeichenkette, bei der LF, CR und TAB durch 1 Leerzeichen ersetzt werden Abstand ist egal token Zeichenkette, bei der jeder Whitespace durch 1 Leerzeichen ersetzt wird und führende und folgende Leerzeichen entfernt werden Abstand ist egal ID (nur bei Attributen) eindeutige ID, darf nicht rein numerisch sein A123445 IDREF (nur bei Attributen) Referenz auf eine ID IDREFS (nur bei Attributen) Referenzen auf IDs A A12443 BAGHOE NMTOKEN (nur bei Attributen) Zeichenkette, die ein Token darstellt hallo NMTOKENS (nur bei Attributen) Zeichenkette, die ein oder mehrere Token darstellt hallo Welt Quelle: - 30
31
Vordefinierte ganzzahlige numerische Typen
integer Ganzzahl -12345, -1, 0, positiveInteger positive Ganzzahl 1, negativeInteger negative Ganzzahl -1, nonNegativeInteger positive Ganzzahl oder 0 0, 23433 nonPositiveInteger negative Ganzzahl oder 0 -3442, 0 byte 8-bit-Integer mit Vorzeichen -1, 125 unsignedByte 8-bit-Integer ohne Vorzeichen 0, 250 short 16-bit-Integer mit Vorzeichen -1, 12555 unsignedShort 16-bit-Integer ohne Vorzeichen 1, 12833 int 32-bit-Integer mit Vorzeichen unsignedInt 32-bit-Integer ohne Vorzeichen long 64-bit-Integer mit Vorzeichen -1, unsignedLong 64-bit-Integer ohne Vorzeichen 0, Quelle: - 31
32
Vordefinierte nicht-ganzzahlige numerische Typen
decimal gebrochene Dezimalzahl -1.23, 123.4, float Fließkommazahl -INF -1E , -0, 0, 12.78E-2, 12, INF, NaN double Quelle: Vordefinierte Datum-/Zeit-Typen time Uhrzeit, ggf. mit Zeitzone 11:20:00.000, 12:20: :00, 14:00Z date Datum (immer ISO8601-Format!) gMonthDay Monat und Tag 12-25 gYear Jahr (bringt aber nichts gegenüber int) 2000 gYearMonth Jahr und Monat dateTime Zeitstempel T09:00:00, T03:00:00Z Duration Zeitdauer, muss immer mit ”P“ beginnen P2Y5M3DT10H30M12S, PT3.24S Quelle: - 32
33
Sonstige vordefinierte Typen
boolean logischer Wert true, false, 1, 0 hexBinary binärer hex-String a6b346e2441e base64Binary binärer base64-String aGFsbG8K anyURI URI; falls Leerzeichen drin sind, mit %20 codieren Quelle: - 33
34
Restriktionen für einfache Datentypen
Die zulässigen Werte einfacher Datentypen können auf verschiedene Weise eingeschränkt werden Aufzählung Muster (regulärer Ausdruck - regexp) Länge Min-/Max-Werten Format (Nachkommastellen bzw. Gesamtanzahl der Stellen) Whitespace Der neue Typ muss immer auf einem existierenden Typ basieren <xsd:restriction base="xsd:string"> <xsd:restriction base="myns:MyType"> Die neuen, eingeschränkten Datentypen können entweder inline einmal definiert und damit verwendet werden oder als neue genannte Typen definiert werden, die wie die vordefinierten Typen weiterverwendet werden können - 34
35
Inline- und genannte Typen
Inline Typdefinitionen werden als Kindelemente einer Elementdefinition bzw. Attributdefinition definiert <xsd:attribute name="foo"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="(bar|doz)+"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> Genannte Typen werden „selbstständig“ definiert <xsd:simpleType name="fooType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="(bar|doz)+"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="foo" type="footype"/> - 35
36
Aufzählung (Enumeration)
Ein String kann auf eine Aufzählung beschränkt werden Nur einen Wert aus einer vordefinierten Liste darf enthalten sein <xsd:simpleType name="FarbenType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="rot"/> <xsd:enumeration value="weiss"/> <xsd:enumeration value="blau"/> <xsd:enumeration value="schwarz"/> <xsd:enumeration value="gelb"/> <xsd:enumeration value="grün"/> </xsd:restriction> </xsd:simpleType> - 36
37
Länge Die Länge eines Strings kann eingeschränkt werden
entweder wird eine exakte Länge vorgegeben <xsd:simpleType name="WährungType"> <xsd:restriction base="xsd:string"> <xsd:length value="3"/> </xsd:restríction> </xsd:simpleType> oder eine minimale Länge und/oder eine maximale Länge <xsd:simpleType name="BenutzernameType"> <xsd:restriction base="xsd:string"> <xsd:minLength value="8"/> </xsd:restríction> </xsd:simpleType> <xsd:simpleType name="KennwortType"> <xsd:restriction base="xsd:string"> <xsd:minLength value="8"/> <xsd:maxLength value="16"/> </xsd:restríction> </xsd:simpleType> - 37
38
Muster Die möglichen Inhalte können mit einem regulären Ausdruck („regexp“) definiert werden <xsd:element name="ISBN"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[-0-9]{13}|unbekannt|ohne"/> </xsd:restriction> </xsd:simpleType> </xsd:element> - 38
39
Werte Die Spannweite für eine Nummer kann mit maximalem bzw. minimalem Wert eingeschränkt werden <xsd:simpleType name="MeineNummerType"> <xsd:restriction base="xsd:double"> <xsd:maxExclusive value="1000.0"/> <xsd:minInclusive value="-5.0"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="DeineNummerType"> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxInclusive value="1000"/> </xsd:restriction> </xsd:simpleType> - 39
40
Format Die maximale Anzahl der Stellen in einer Nummer kann festgelegt werden Nachkommastellen <xsd:simpleType name="PreisType"> <xsd:restriction base="xsd:decimal"> <xsd:fractionDigits value="2"/> </xsd:restriction> </xsd:simpleType> bzw. Gesamtzahl <xsd:simpleType name="DreiStelligeNummerType"> <xsd:restriction base="xsd:positiveInteger"> <xsd:totalDigits value="3"/> </xsd:restriction> </xsd:simpleType> - 40
41
Whitespace Wie ein XML-Prozessor den Whitespace behandeln soll kann definiert werden: Mit „preserve“ bleibt Whitespace erhalten (default) Mit „replace“ werden alle Whitespaces durch ein Leerzeichen ersetzt <xsd:simpleType name="AdresseType"> <xsd:restriction base="xsd:string"> <xsd:whiteSpace value="replace"/> </xsd:restriction> </xsd:simpleType> Mit „collapse“ werden führende und folgende Whitespaces entfernt und sonstige Whitespaces erhalten <xsd:simpleType name="BeschreibungType"> <xsd:restriction base="xsd:string"> <xsd:whiteSpace value="collapse"/> </xsd:restriction> </xsd:simpleType> - 41
42
Komplexe Typen Komplexe Typen sind nur für „Element“ verwendbar
Sie entstehen aus einer Definition der erlaubten Unterelemente bzw. Attribute ein komplexer Typ mit komplexem Inhalt kann als komplett neuer Typ definiert werden, oder einen existierenden Typ erweitern oder einschränken einer Definition der erlaubten Attribute und Inhalte ein komplexer Typ mit einfachem Inhalt muss einen existierenden Typ erweitern - 42
43
Komplexe Typen mit einfachem Inhalt
<xsd:complexType name="BeschreibungType"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="sprache" type="xsd:language"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Ein existierender Komplextyp mit einfachem Inhalt kann auch als Basis verwendet werden <xsd:complexType name="BeschreibungMitIDType"> <xsd:simpleContent> <xsd:extension base="myns:BeschreibungType"> <xsd:attribute name="id" type="xsd:ID"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Alle Attribute werden geerbt - 43
44
Komplexe Typen mit komplexem Inhalt
<xsd:complexType name="BuchType"> <xsd:sequence> <xsd:element name="Titel" type="xsd:string"/> <xsd:element name="Autor" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> </xsd:complexType> Komplexer Inhalt bedeutet Kindelemente bzw. gemischter Inhalt Text und Kindelemente complexType mixed="true" <p><b>gemischter</b> inhalt</p> Für den Inhalt gibt es drei Inhaltsmodelle Sequence, Choice, All - 44
45
Sequenz „Sequence“ definiert, dass die spezifizierten Kindelemente in der definierten Reihenfolge angegeben werden müssen Die Anzahl jedes Elements kann auch spezifiziert werden <xsd:complexType name="BuchType"> <xsd:sequence> <xsd:element name="Titel" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="Autor" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> </xsd:complexType> <Buch id="buch1"> <Autor>J.R.R. Tolkien</Autor> <Titel>Herr der Ringe</Titel> </Buch> <Buch id="buch2"> <Titel>Herr der Ringe</Titel> </Buch> - 45
46
Auswahl „Choice“ definiert, dass genau eines der Elemente angegeben werden muss <xsd:complexType name="GeometrieType"> <xsd:choice> <xsd:element ref="Punkt"/> <xsd:element ref="Linie"/> <xsd:element ref="Polygon"/> </xsd:choice> </xsd:complexType> - 46
47
Alle „All“ definiert, dass alle Kindelemente angegeben werden müssen Außer die, die mit minOccurs="0" definiert sind maxOccurs ist in diesem Fall immer 1! Die Reihenfolge ist egal <xsd:complexType name="BuchType"> <xsd:sequence> <xsd:element name="Titel" type="xsd:string"/> <xsd:element name="Autor" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> </xsd:complexType> <Buch id="buch1"> <Autor>J.R.R. Tolkien</Autor> <Titel>Herr der Ringe</Titel> </Buch> <Buch id="buch2"> <Titel>Herr der Ringe</Titel> </Buch> - 47
48
Vererbung mit komplexem Inhalt
Komplexe Typen können andere komplexe Typen erweitern oder einschränken Erweitern: zusätzliche Attribute, Kindelemente, … Einschränken: optionale Kindelemente ausschließen oder als Pflichtelemente definieren, die Anzahl eines Elements beschränken, der Typ eines Kindelements auf einen Untertyp beschränken ???, … - 48
49
Erweiterung komplexen Inhalts
Alle Attribute und Kindelemente des Elterntyps werden geerbt <xsd:complexType name="BuchMitISBNType"> <xsd:complexContent> <xsd:extension base="myns:BuchType"> <xsd:sequence> <xsd:element ref="myns:ISBN"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <Buch id="buch1"> <Titel>Herr der Ringe</Titel> <Autor>J.R.R. Tolkien</Autor> <ISBN> </ISBN> </Buch> Eine Instanz des Kindtyps muss keine gültige Instanz des Elterntyps sein - 49
50
Einschränkung komplexen Inhalts
Alle Attribute des Elterntyps werden geerbt, aber alle Elemente, die geerbt werden sollen, müssen noch mal vollständig gelistet werden Kindelemente müssen hierfür als Verweise auf globale Elemente definiert werden <element ref="myElement"> Eine Instanz des Kindtyps wird auch eine gültige Instanz des Elterntyps - 50
51
Beispiel der Einschränkung komplexen Inhalts
<xsd:element name="Titel" type="xsd:string"/> <xsd:element name="Autor" type="xsd:string"/> <xsd:complexType name="BuchType"> <xsd:sequence> <xsd:element ref="myns:Titel" minOccurs="1" maxOccurs="1"/> <xsd:element ref="myns:Autor" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> </xsd:complexType> <xsd:complexType name="BuchMax3AutorType"> <xsd:complexContent> <xsd:restriction base="myns:BuchType"> <xsd:sequence> <xsd:element ref="myns:Titel" minOccurs="1" maxOccurs="1"/> <xsd:element ref="myns:Autor" minOccurs="1" maxOccurs="3"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> - 51
52
Substitutionsgruppen
„Substitution Groups“ definieren, dass ein Element anstelle eines anderen verwendet werden darf Das ursprüngliche Element ist der „Kopf“ der Substitutionsgruppe, das mit einem anderen Element ersetzt werden kann Das Kopfelement ist oft ein Abstraktelement, das nur existiert, um als Kopf einer Substitutionsgruppe zu dienen Die anderen Mitglieder der Substitutionsgruppe müssen entweder denselben Typ wie das Kopfelement nutzen oder einen Typ, der von dem Typ des Kopfelements ableitet ist nutzen Durch (einfache oder mehrfache) Erweiterung oder Einschränkung - 52
53
Beispiel einer Substitutionsgruppe…
<xsd:element name="Element1" type="xsd:string"/> <xsd:element name="Kopf"/> <xsd:complexType name="KopfType"> <xsd:sequence> <xsd:element ref="myns:Element1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="Mitglied" substitutionGroup="myns:Kopf"/> <xsd:complexType name="MitgliedType"> <xsd:complexContent> <xsd:restriction base="myns:KopfType"> <xsd:element ref="myns:Element1" maxOccurs="1"/> </xsd:restriction> </xsd:complexContent> <xsd:element name="Beispiel"> <xsd:complexType> <xsd:element ref="myns:Kopf" maxOccurs="unbounded"/> </xsd:element> - 53
54
…und einer entsprechenden Instanz
<?xml version ="1.0" encoding ="UTF-8"?> <myns:Beispiel xmlns:myns=" <myns:Kopf> <myns:Element1>Inhalt</myns:Element1> <myns:Element1>Inhalt</myns:Element1> </myns:Kopf> <myns:Mitglied> <myns:Element1>Inhalt</myns:Element1> </myns:Mitglied> <myns:Kopf> <myns:Element1>Inhalt</myns:Element1> </myns:Kopf> </myns:Beispiel> - 54
55
Bearbeitung und Visualisierung XML-Schema
Ein XML Schema-Editor kann die Bearbeitung eines Schemas erleichtern Visualisierung der Strukturen als Baum oder UML Konversion eines UML-Modells zum XML-Schema oder andersrum Generierung einer Beispieldatei Verschiedene Werkzeuge sind verfügbar Altova XML Spy (kostenlose Home-Version mit begrenzter Funktionalität, z.B. keine Unterstützung für import/include) hyperModel Eclipse plug-in (kostenlos, mit XSD↔UML aber keine direkte XSD-Editierung) oxygenXML (30-Tage Probeversion verfügbar) … - 55
56
Weitere XML Technologien
Es gibt viele Technologien, um die Bearbeitung von XML-Dateien zu erleichtern: die XML-Familie XSL: Xml Stylesheet Language XSLT: Xml Stylesheet Language Transformation XPath XLink, XPointer XQuery … - 56
57
XPath XPath ist eine Technologie, um bestimmte Teile eines XML-Dokuments zu spezifizieren bzw. selektieren Jedes Teil (Elemente, Attribute, Inhalt) wird als Knoten behandelt (wie beim Dokument-Objekt Modell, DOM) Mittels eines XPath-Ausdrucks werden ein oder mehrere Knoten identifiziert XPath-Software bzw. -Bibliotheken nehmen einen XPath-Ausdruck und ein XML-Dokument bzw. -Fragment und liefern die entsprechenden Teile als Objekte zurück XPath wird in weiteren XML-Technologien wie XSLT verwendet - 57
58
Das Knoten-Modell Das Knoten-Modell eines XML-Dokuments enthält 7 Knotentypen Dokument (Wurzel) Element <Element/> Attribut schlüssel="wert" Text Inhalt Namensraum xmlns:myns=" Kommentar <!-- Kommentar --> Verarbeitungsanweisung <?xml version="1.0"> Ein Dokument besteht aus Knoten in einer Baumstruktur Mit einem Dokumentknoten als Wurzelknoten Die Knoten haben Beziehungen zu anderen Knoten Eltern, Kinder, Geschwister, Ahn, Abkomme Das Dokument wird über diese Achsen von einem Kontextknoten aus navigiert - 58
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.