Created
May 27, 2025 14:22
-
-
Save ntj/d043c3d8e89fd66a90bd96a4993e7e35 to your computer and use it in GitHub Desktop.
Revisions
-
ntj created this gist
May 27, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,1080 @@ <!-- author: Antje Kazimiers email: [email protected] language: de narrator, german, female * edit: true import: https://raw.githubusercontent.com/LiaTemplates/LiveEdit-Embeddings/refs/tags/0.0.1/README.md https://raw.githubusercontent.com/liaTemplates/ABCjs/main/README.md https://raw.githubusercontent.com/LiaTemplates/GGBScript/refs/heads/main/README.md https://raw.githubusercontent.com/LiaTemplates/PyScript/main/REAMDE.md https://raw.githubusercontent.com/LiaScript/CodeRunner/master/README.md script: https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.4.1/papaparse.min.js @CSV <script run-once style="display:block" modify="false"> async function csvToMarkdownTable(csvFile) { const response = await fetch(csvFile); const text = await response.text(); const rows = Papa.parse(text).data; let markdownTable = "| " + rows[0].join(" | ") + " |\n"; // Header markdownTable += "| " + rows[0].map(() => "---").join(" | ") + " |\n"; // Separator for (let i = 1; i < rows.length; i++) { if (rows[i].length === rows[0].length) { markdownTable += "| " + rows[i].join(" | ") + " |\n"; } } send.lia("LIASCRIPT: <!-- data-type='none' --" + ">" + markdownTable); } csvToMarkdownTable("@0") "LIA: wait" </script> @end --> # 1. Workshop Research Data Management - Zenodo: https://zenodo.org/records/15424433 - LiaScript: https://liascript.github.io/course/?https://zenodo.org/api/records/15424433/files/README.md/content - LiveEdit: https://liascript.github.io/LiveEditor/?/show/file/https://zenodo.org/api/records/15424433/files/README.md/content ## Motivation {{1}} <section> #### Fehlen technischer Expertise  </section> {{2}} <section> #### Separierung durch Werkzeuge, Plattformen und Formate  </section> {{3}} <section> #### OER hat _Keine Sprache & Keine Zusammenarbeit_  </section> ## LiaScript? !?[YouTube: Industrial eLab](https://www.youtube.com/watch?v=bICfKRyKTwE&autoplay=1) {{1}} ````markdown @embed.style(height: 550px; min-width: 100%; border: 1px black solid) # Markdown Einkaufsliste - `Teig` - _Tomaten_ und _Käse_ - ~keine Salami~ ``` Rezept man nehme ... ``` ```` ### `Hello World!` <!-- language: en narrator: UK English Female --> --{{0}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_0.webm) Hello, my name is LiaScript, I am a Markdown-based language that has been specially developed to create educational materials. The advantage of Markdown is that it is already widely used, easy to write and read, and supported by many platforms. The biggest drawback, however, is that it is @burn(static as hell) and offers no interactivity. {{1-2}} <section> --{{1}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_1.webm) So my creators set out to rethink Markdown from the ground up... > <marquee>... Once you free your mind about a concept of Harmony and of music being "correct" you can do whatever you want ...</marquee> > > -- Giorgio Moroder (inventor of disco music) </section> --{{2}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_2.webm) Actually, tables in Markdown are simple to create and, as mentioned, are quite @burn(static). However, a table can also represent a dataset that strives for its ideal visualization. {{2}} | Animal | Weight in kg | Lifespan (years) | Mitogen | | --------------- | -----------: | ---------------: | ------: | | Mouse | 0.028 | 02 | 95 | | Flying Squirrel | 0.085 | 15 | 50 | | Brown Bat | 0.020 | 30 | 10 | | Sheep | 90 | 12 | 95 | | Human | 68 | 70 | 10 | --{{3}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_3.webm) Another tabular structure can produce a different visualization that can be fine-tuned by the creator. In total, I support 10 different types of visualizations. {{3}} <!-- data-type="heatmap" data-title="Seattle Average Temperature in Fahrenheit" data-show --> | Seattle | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | | ------: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | 0 | 40.7 | 41.5 | 43.6 | 46.6 | 51.4 | 56.0 | 60.5 | 61.2 | 57.0 | 50.1 | 44.1 | 39.6 | | 2 | 40.2 | 40.7 | 42.7 | 45.3 | 50.0 | 54.4 | 58.5 | 59.2 | 55.4 | 49.2 | 43.5 | 39.3 | | 4 | 39.7 | 40.0 | 41.9 | 44.4 | 48.9 | 53.2 | 57.0 | 57.7 | 54.2 | 48.6 | 43.1 | 38.9 | | 6 | 39.6 | 39.5 | 41.3 | 44.2 | 49.5 | 54.2 | 57.8 | 57.4 | 53.6 | 48.2 | 42.8 | 38.7 | | 8 | 39.6 | 39.9 | 42.9 | 47.1 | 52.7 | 57.3 | 61.3 | 61.1 | 56.7 | 49.5 | 43.1 | 38.7 | | 10 | 41.3 | 42.7 | 46.4 | 50.7 | 56.4 | 60.9 | 65.2 | 65.4 | 60.9 | 52.8 | 45.5 | 40.4 | | 12 | 43.8 | 46.0 | 49.5 | 53.8 | 59.6 | 64.3 | 69.4 | 69.8 | 65.1 | 56.0 | 47.8 | 42.6 | | 14 | 45.1 | 47.7 | 51.3 | 55.9 | 61.9 | 66.9 | 72.6 | 73.2 | 67.7 | 57.8 | 48.8 | 43.6 | | 16 | 44.5 | 47.5 | 51.4 | 55.9 | 62.3 | 67.5 | 73.9 | 74.3 | 68.2 | 57.4 | 47.8 | 42.6 | | 18 | 42.6 | 44.7 | 48.7 | 53.8 | 60.3 | 65.9 | 72.3 | 72.2 | 64.6 | 53.9 | 46.0 | 41.2 | | 20 | 42.0 | 43.3 | 46.4 | 50.2 | 56.0 | 61.4 | 66.9 | 66.6 | 60.7 | 52.3 | 45.2 | 40.7 | | 22 | 41.4 | 42.5 | 45.0 | 48.3 | 53.5 | 58.2 | 63.2 | 63.5 | 58.7 | 51.1 | 44.5 | 40.1 | --{{4}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_4.webm) What Markdown has always lacked was the embedding of multimedia content ... --{{5}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_5.webm) I support audio content ... {{5-6}} ?[a horse](https://www.w3schools.com/html/horse.mp3 'hear a horse') --{{6}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_6.webm) I can handle video as well, and of course, I work on feature phones even if they are offline. {{6-7}} !?[LiaScript on Nokia](https://www.youtube.com/watch?v=U_UW69w0uHE) --{{7}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_7.webm) I can also try to embed other types of content that do not fall into either of the two categories {{7}} ??[3D scan cathedral](https://sketchfab.com/3d-models/mision-de-guadalupe-y-catedral-de-cd-juarez-ab5af73f981b44e09522d7482f95f08a 'Misión De Guadalupe y Catedral de Cd. Juárez') --{{8}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_8.webm) And much, much more... We will soon show you how everything works. {{8}} ```abc X: 1 M: 4/4 L: 1/8 K: Emin |:D2|"Em"EBBA B2 EB|~B2 AB dBAG|"D"FDAD BDAD|FDAD dAFD| "Em"EBBA B2 EB|B2 AB defg|"D"afe^c dBAF|"Em"DEFD E2:| ``` @ABCJS.eval --{{9}}-- !?[](https://raw.githubusercontent.com/LiaPlayground/Expert-Meeting-on-AI-and-TVET-2025/refs/heads/main/media/liascript_9.webm) You might have noticed that this document is being used like a PowerPoint presentation. However, our intention was to utilize LiaScript in various contexts. With LiaScript, you can create presentations, enable self-study through browser-based text-to-speech output, or read the content as a simple yet interactive textbook, without animations. ### LiaScript meets FDM & OER {{0-1}}  {{1-2}} | Autor_innen | Titel & | Link | Hinweise | | ----------------------------------------------------- | ----- | ---- | -------- | | Tim Bender, _Hessische Forschungsdateninfrastrukturen (HeFDI)_ | [HeFDI-FDM-Selbstlerneinheit](https://liascript.github.io/course/?https://api.allorigins.win/raw?url=https://code.fbi.h-da.de/fbmd1715/hefdi-selbstlerneinheit/-/raw/main/de/01_einfuehrung_in_das_fdm.md?ref_type=heads#3) | https://code.fbi.h-da.de/fbmd1715/hefdi-selbstlerneinheit | Überzeugende Motivation anhand einer _FDM-Foto-Lovestory_ | | Antje Ahrens, Nicola Seitz, Henrik Wagner, _C3L – Center für lebenslanges Lernen, Carl von Ossietzky Universität Oldenburg_ | [Universität Oldenburg, Research Data Management in the Energy Sector](https://www.twillo.de/edu-sharing/components/collections?id=cdaaa23c-4f8f-481f-bdad-19aad3bef880) | https://github.com/NFDI4Energy/EFZN_rdm | Im August 2023 war dieser Kurs "Twillo edu-sharing Perle des Monats", Einbettung von H5P Elementen | | Rose Hartmann, Joy Payton, _ARCUS Projekt, Children's Hospital of Philadelphia_ | [Data Education Courses](https://learn.arcus.chop.edu/) | https://github.com/arcus/education_modules | Grandioses Frontend für die Verwaltung der LiaScript-FDM-Kurse | # 2. Crashkurs Forschungs-Daten-Management ## 1. Forschungsdaten (FD) ... sind alle Daten, die während eines wissenschaftlichen Forschungsprozesses entstehen, verarbeitet werden oder dessen Ergebnis sind. Aufgrund der Fächervielfalt sind FD sehr heterogen. Das können z. B. sein: Messdaten, Laborwerte, audiovisuelle Informationen, <!-- style="color: red" --> Texte, Surveydaten, Objekte aus Sammlungen oder Proben, methodische Testverfahren _(Fragebögen, Interviews_), Transkripte, Beobachtungen, Software, Code, Simulationen. ## 2 Forschungsdaten-Lebenszyklus ... ist eine schematische Darstellung der Phasen, die Daten in einem Forschungsprozess idealerweise durchlaufen. Hieraus ergeben sich die Aufgaben im Forschungsdatenmanagement (FDM) für Forschende und Einrichtungen der wissenschaftlichen Infrastruktur. Die Phasen des Forschungsdatenlebenszyklus bilden zudem die Grundlage für das Aufstellen eines Datenmanagementplans sowie für die Kostenkalkulation im Gesamtprojekt. ```ascii .---------------------. .-------> | 📝 Erhebung |▓--------. / '---------------------+▓ \ / ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ \ / V .---------------------. .---------------------. | ♻️ Nachnutzung |▓ | ⚙️ Verarbeitung |▓ '---------------------+▓ '---------------------+▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ A | | D A T E N | | | | V .---------------------. .---------------------. | 📢 Veröffentlichung |▓ | 🔍 Analyse |▓ '---------------------+▓ '---------------------+▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ A / \ .---------------------. / '-------- | 🗄️ Archivierung |▓ <------' '---------------------+▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ``` ``` ASCII-Art ``` 1. ~~__Erhebung__~~ * Methodik der Datenerhebung * Planen des Datenmanagements, inklusive Budgetplanung * Festlegen von Rollen innerhalb der Arbeitsgruppe * Recherche bereits vorhandener Datenbestände * Beachten der FAIR-Prinzipien * Mehr wissen: https://www.forschungsdaten.info/themen/planen-und-strukturieren/ 2. __Verarbeitung__ - Daten: - Eingeben, digitalisieren, transkribieren... - Prüfen, validieren, bereinigen - Ggf. anonymisieren - Beschreiben - Sichern, Backup - Mehr wissen: https://www.forschungsdaten.info/themen/organisieren-und-arbeiten/ 3. Analyse - Interpretation der Daten - Präsentation der Forschungsergebnisse - Publikationsprozess - Vorbereitung für Datenerhalt (Metadaten) - Beachten der FAIR-Prinzipien 4. Archivierung ... 5. Veröffentlichung ... 6. Nachnutzung ... ## 3 FAIR Prinzipien > (F)indable (A)ccessible (I)nteroperable (R)eusable > > > *The original idea of the web was that it should be a collaborative space where you can communicate through sharing information. > > > > -- Tim Berners-Lee ### 3.1 Verweise https://zenodo.org Weitere Informationen findet ihr [__hier__](https://zenodo.org/records/3778431) ### 3.2 Bilder `!` <!-- style="width: 70%; min-width: 400px" --> lorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubablorem ipsujm blublbubab ### 3.3 Audio `?` & Video `!?` ?[Audio: NFDI podcast - For a FAIR Data Future](https://stitcher2.acast.com/livestitches/bc8221ade949204134bf80938b93cd50.mp3?aid=67373c78cb2eb55da66b1173&chid=67373bb1ba4404855a808f2b&ci=Hr-WmEqIpldSpeELudn1iPtBsQOtSSRQNRi-7zdJjBX-LHSt5wYK_w%3D%3D&pf=embed&sv=sphinx%401.238.0&uid=c680c28a8214ed250783ec7d0663439c&Expires=1747225822552&Key-Pair-Id=K38CTQXUSD0VVB&Signature=cSkZ5gG94SCBR8jSflpF1dnwWiuf9SB9BScvEflrL0m-bA~Y9bchmQStVRwz1icCltrCc6GVaRyVe1Kb-RDJhbcf2yTF4nOzhYCgmOqn89UqfbIS3Ha31qC~qRqwsYsjFQ3UtK8EeRE4K~k8C0JodZty4ueXsDr696TJg7NH71sgSmuGo680qqNnOi5Drl8SAKrOPNoWYiUlXHCIqIRUHy1ZnmO0Y3BOM0MscLzyFkUOUa2Wf~LlsUj1Gi67XwjNabYjVbdulpz2UsAVCIg2Oljbzj0o~YOnYTXpSNhZbqol-kXqIgRCdYhY7o8KVe27JoxFxFcKuY8I81E9t6Jm9g__) !?[Video: An introduction to FAIR data](https://upload.wikimedia.org/wikipedia/commons/transcoded/a/a9/FREYA-The-power-of-PIDs-V05-1.webm/FREYA-The-power-of-PIDs-V05-1.webm.720p.vp9.webm "_Source:_ https://en.wikipedia.org/wiki/FAIR_data") !?[YouTube FairData](https://www.youtube.com/watch?v=1pGPJYjs8tQ) ### 3.4 Alles zu oEmbed-den `??` ??[sketchfab](https://sketchfab.com/3d-models/railway-bridge-with-a-feeling-of-coziness-620a7c96136a4f41974245a04a90be78) [3D Scan - Familienschacht in Freiberg](https://sketchfab.com/3d-models/familienschacht-freiberg-germany-7c7d30506c554385a4a4321366e2e601) [NFDI podcast - For a FAIR Data Future](https://shows.acast.com/nfdi-podcast-for-a-fair-data-future/episodes/die-nationale-forschungsdateninfrastruktur-nfdi-und-die-fair) ## 4 Forschungsdaten-Management ... umfasst alle Aktivitäten, die mit - Aufbereitung, - Speicherung, - Archivierung und - Veröffentlichung von FD verbunden sind. 9 | (* dots) |rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr (r obere Grenze) y | * - | a | * x | i | * s | |* 0 +------------------------------------ 0 x-axis 360 | x | dots | rot | | --- | ---- | --- | | 0 |0 | 22| | 10| 2|23| |20| 4|23| |30| 6|44| 4.1 Mehr Daten | Animal | weight in kg | Lifespan years | Mitogen | | --------------- | -----------: | -------------: | ------: | | Mouse | 0.028 | 2 | 95 | | Flying squirrel | 0.085 | 15 | 50 | | Brown bat | 0.020 | 30 | 10 | | Sheep | 90 | 12 | 95 | | Human | 68 | 70 | 10 | | Music-Style | Classic | Country | Reggae | Hip-Hop | Hard-Rock | Samba | | :---------- | ------: | ------: | -----: | ------: | --------: | ----: | | 1994 | 50 | 50 | 100 | 200 | 350 | 250 | | 2014 | 20 | 30 | 100 | 220 | 400 | 230 | | demo 2034 | 5 | 12 | 98 | 293 | 345 | 32 | <!-- data-type="heatmap" data-title="Seattle mean temperature in Fahrenheit" data-show --> | Seattle | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | | ------: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | 0 | 40.7 | 41.5 | 43.6 | 46.6 | 51.4 | 56.0 | 60.5 | 61.2 | 57.0 | 50.1 | 44.1 | 39.6 | | 2 | 40.2 | 40.7 | 42.7 | 45.3 | 50.0 | 54.4 | 58.5 | 59.2 | 55.4 | 49.2 | 43.5 | 39.3 | | 4 | 39.7 | 40.0 | 41.9 | 44.4 | 48.9 | 53.2 | 57.0 | 57.7 | 54.2 | 48.6 | 43.1 | 38.9 | | 6 | 39.6 | 39.5 | 41.3 | 44.2 | 49.5 | 54.2 | 57.8 | 57.4 | 53.6 | 48.2 | 42.8 | 38.7 | | 8 | 39.6 | 39.9 | 42.9 | 47.1 | 52.7 | 57.3 | 61.3 | 61.1 | 56.7 | 49.5 | 43.1 | 38.7 | | 10 | 41.3 | 42.7 | 46.4 | 50.7 | 56.4 | 60.9 | 65.2 | 65.4 | 60.9 | 52.8 | 45.5 | 40.4 | | 12 | 43.8 | 46.0 | 49.5 | 53.8 | 59.6 | 64.3 | 69.4 | 69.8 | 65.1 | 56.0 | 47.8 | 42.6 | | 14 | 45.1 | 47.7 | 51.3 | 55.9 | 61.9 | 66.9 | 72.6 | 73.2 | 67.7 | 57.8 | 48.8 | 43.6 | | 16 | 44.5 | 47.5 | 51.4 | 55.9 | 62.3 | 67.5 | 73.9 | 74.3 | 68.2 | 57.4 | 47.8 | 42.6 | | 18 | 42.6 | 44.7 | 48.7 | 53.8 | 60.3 | 65.9 | 72.3 | 72.2 | 64.6 | 53.9 | 46.0 | 41.2 | | 20 | 42.0 | 43.3 | 46.4 | 50.2 | 56.0 | 61.4 | 66.9 | 66.6 | 60.7 | 52.3 | 45.2 | 40.7 | | 22 | 41.4 | 42.5 | 45.0 | 48.3 | 53.5 | 58.2 | 63.2 | 63.5 | 58.7 | 51.1 | 44.5 | 40.1 | Mehr Informatione zu Tabellen: https://liascript.github.io/course/?https://raw.githubusercontent.com/liaScript/docs/master/README.md#fun-with-tables ## 5 Forschungsdatenpolicies? - [X] habe ich gemacht - [ ] noch offen {{|>}} Welches [[Akronym ]] beschreibt im Forschungsdatenmanagement die Prinzipien, dass Daten auffindbar, zugänglich, interoperabel und wiederverwendbar sein sollen? [[FAIR]] [[?]] Es ist ein Acronym und muss groß geschrieben werden. [[?]] Es beginnt mit F <script> const x = "@input".toLowerCase() x == "fair" </script> --- Welche der Beispiele für Dateinamen auf folgen einer guten Benennungskonvention und warum? - [( )] `Olga_170413_probe17k` - [( )] `Naturepaper karl britta james fertig!` - [( )] `Naturepaper+karl+britta+james &nal` - [( )] `Naturepaper+karl+britta+james fertig! überarbeitet` - [(X)] `Kristall_765_spektr_20161203` - [( )] `Nature_karlbrittajames_endendversion` - [( )] `28q8QGlHKwrRw.pdf` - [( )] `Tagung_Digitale_Wissenschaft.pdf` Begründung: - Keine Sonderzeichen - Sortierung nach: Bezeichnung, ID-Nummer, Datum - Spektr ist vermutlich das Experiment - Datum ist eindeutig zuzuordnen --- Welche folgenden Punkte gehören typischerweise zu den Inhalten einer Forschungsdatenmanagement-Policy? - [[X]] Standardisierte Metadaten- und Dateiformate - [[ ]] Finanzierungs- und Budgetierungsrichtlinien für Projekte - [[x]] Regeln zur Datensicherung und Versionierung - [[ ]] Vorgaben zur Veröffentlichung von Forschungsergebnissen in Fachzeitschriften - [[x]] Aufbewahrungsfristen und Löschkonzepte ## 6 Datendokumentation (& Metadaten) --{{1}}-- Eine Markdown-Datei ist eine menschenlesbare Textdatei, die einen Datensatz/einen Programmcode beschreibt, dient dessen Interpretation. {{1-2}} ````markdown # Projektname **Kurzbeschreibung:** Eine kurze Zusammenfassung des Forschungsprojekts und seiner Ziele. ## 1. Überblick Beschreibe den Hintergrund und die Hauptfragestellung deines Projekts. ## 2. Datensatzbeschreibung - **Daten-Typen:** (z.B. numerisch, qualitativ, Bilddaten) - **Erhebungszeitraum:** (z.B. Januar 2020 – März 2021) - **Geographische Abdeckung:** (Falls relevant) - **Stichprobe:** (z.B. Anzahl Beobachtungen, Probanden) ## 3. Verzeichnisstruktur ```bash . ├── data/ │ ├── raw/ # Unveränderte Originaldaten │ ├── processed/ # Aufbereitete Daten │ └── metadata/ # Metadaten-Dateien ├── docs/ # Begleitdokumentation ├── scripts/ # Analyse-Skripte ├── results/ # Ergebnisse (Tabellen, Grafiken) └── README.md # Diese Datei ``` ## 4. Metadaten und Datenstandard ... ## Kontakt ... ```` Metadaten sind strukturierte Informationen, die den Inhalt, die Struktur und die Qualität von Daten beschreiben. Sie sind wichtig für die Auffindbarkeit, Zugänglichkeit und Wiederverwendbarkeit von Daten. {{2-3}} ```xml <?xml version="1.0" encoding="UTF-8"?> <SimpleDarwinRecordSet xmlns="http://rs.tdwg.org/dwc/xsd/simpledarwincore/" xmlns:dc="http://purl.org/dc/terms/" xmlns:dwc="http://rs.tdwg.org/dwc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rs.tdwg.org/dwc/xsd/simpledarwincore/ http://rs.tdwg.org/dwc/xsd/tdwg_dwc_simple.xsd"> <SimpleDarwinRecord> <dc:modified>2009-02-12T12:43:31</dc:modified> <dc:language>en</dc:language> <dwc:basisOfRecord>Taxon</dwc:basisOfRecord> <dwc:scientificName>Ctenomys sociabilis</dwc:scientificName> <dwc:acceptedNameUsage>Ctenomys sociabilis Pearson and Christie, 1985</dwc:acceptedNameUsage> ... </SimpleDarwinRecord> </SimpleDarwinRecordSet> ``` Persistent Identifier (PID) sind eindeutige, dauerhafte Identifikatoren, die zur eindeutigen Identifizierung von digitalen Objekten verwendet werden. Sie sind wichtig für die Auffindbarkeit und den langfristigen Zugang zu Daten. {{3}} ************************************* Beispiele für PIDs sind: - DOI (Digital Object Identifier) - ARK (Archival Resource Key) - ORCID (Open Researcher and Contributor ID) - ISBN (International Standard Book Number) - ... ***************************************** ## 7 Rekapitulation Fair Data Prinzipien > ℹ️ Die **FAIR Prinzipien** sind eine international anerkannte, unverbindliche Richtlinie der Datendokumentation und -veröffentlichung. > > Sie helfen, Forschungsdaten entlang ihres Lebenszyklus so zu organisieren, zu beschreiben, zu speichern, zu archivieren und zu veröffentlichen, dass diese sowohl von Menschen als auch von Maschinen gelesen und interpretiert werden können. > > Die FAIR Prinzipien dienen damit in erster Linie dem nachhaltigen Datenerhalt und der -nachnutzung. <lia-keep> <style> .flip-card { background-color: transparent; width: 300px; height: 200px; perspective: 1000px; cursor: pointer; margin: 20px auto; } .flip-card-inner { position: relative; width: 100%; height: 100%; text-align: center; transition: transform 0.6s; transform-style: preserve-3d; } .flip-card.flipped .flip-card-inner { transform: rotateY(180deg); } .flip-card-front, .flip-card-back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; border: 1px solid #ccc; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-family: sans-serif; padding: 1em; } .flip-card-front { background-color: #f9f9f9; } .flip-card-front p { padding: 1em; } .flip-card-back { background-color: #e1efef; transform: rotateY(180deg); display: block; } #flip-card-container { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; } </style> <div id="flip-card-container"> <div class="flip-card" onclick="this.classList.toggle('flipped')"> <div class="flip-card-inner"> <h3 class="flip-card-front">Was bedeutet "Findable"?</h3> <div class="flip-card-back"> <h3>Findable</h3> Auffinden von Daten und deren Metadaten, menschen- und maschinenlesbar </div> </div> </div> <div class="flip-card" onclick="this.classList.toggle('flipped')"> <div class="flip-card-inner"> <h3 class="flip-card-front">Was bedeutet "Accessible"?</h3> <div class="flip-card-back"> <h3>Accessible</h3> Daten und Metadaten mittels Standard-Kommunikationsprotokollen abrufbar, herunterladbar oder lokal nutzbar </div> </div> </div> <div class="flip-card" onclick="this.classList.toggle('flipped')"> <div class="flip-card-inner"> <h3 class="flip-card-front">Was bedeutet "Interoperable"?</h3> <div class="flip-card-back"> <h3>Interoperable</h3> (teil)automatisierter Austausch, Interpretation und Kombination von Daten </div> </div> </div> <div class="flip-card" onclick="this.classList.toggle('flipped')"> <div class="flip-card-inner"> <h3 class="flip-card-front">Was bedeutet "Reusable"?</h3> <div class="flip-card-back"> <h3>Reusable</h3> Nachnutzung von Daten unter verständlichen Bedingungen </div> </div> </div> </div> </lia-keep> # 3. Datenanalyse mit ... > “Any application that can be written in JavaScript, will eventually be written in JavaScript.” > > -- [Atwood's Law](https://en.wikipedia.org/wiki/Jeff_Atwood) ## Erweiterungen / Templates <div style="display: flex; justify-content: center; align-items: center; height: 100%; margin: -22rem 0; font-size: 4rem;"> https://github.com/topics/liascript-template </div> ## Titanic-Datensatz @[CSV](https://zenodo.org/api/records/15424433/files/titanic-dataset.csv/content) ### Survival of the richest <!-- persistent: true --> > ... am Beispiel einer PyScript Realisierung > > Quelle des Moduls: https://github/LiaTemplates/PyScript > > `import: https://raw.githubusercontent.com/liaTemplates/PyScript/main/README.md` ```python @PyScript.repl import pyodide.http import pandas as pd from io import StringIO async def fetch_data(url): response = await pyodide.http.pyfetch(url) # Daten abrufen csv_data = await response.string() # Inhalt als String laden df = pd.read_csv(StringIO(csv_data)) # In DataFrame umwandeln return df # Funktion direkt aufrufen mit `await` (NICHT `asyncio.run()`) url = "https://zenodo.org/api/records/15424433/files/titanic-dataset.csv/content" Titanic = await fetch_data(url) # Ausgabe Titanic ``` --- ```python @PyScript.repl import matplotlib.pyplot as plt # Absolute Häufigkeit der Überlebenden und Nicht-Überlebenden berechnen absolute_counts = Titanic.groupby(["Pclass", "Sex"])["Survived"].value_counts().unstack() # Visualisierung der absoluten Häufigkeiten absolute_counts.plot(kind="bar", stacked=True, figsize=(10,6), edgecolor="black") plt.title("Absolute Häufigkeit der Überlebenden nach Passagierklasse und Geschlecht") plt.xlabel("Passagierklasse und Geschlecht") plt.ylabel("Anzahl der Passagiere") plt.xticks(rotation=0) plt.legend(["Nicht Überlebt", "Überlebt"], title="Status") plt.grid(axis="y", linestyle="--", alpha=0.7) plt.show() plt ``` ### Frauen und Kinder zu _R_ st > ... am Beispiel eines R Interpreters der auf einem Server (Coderunner) der TU Bergakademie läuft > > https://github.com/LiaScript/CodeRunner > > `import: https://raw.githubusercontent.com/LiaScript/CodeRunner/master/README.md` ```r suppressPackageStartupMessages({ library(ggplot2) library(dplyr) }) # CSV-Datei einlesen df <- read.csv("https://zenodo.org/api/records/15424433/files/titanic-dataset.csv/content") # Alter bereinigen (NA-Werte entfernen) df <- df %>% filter(!is.na(Age)) # Überlebenswahrscheinlichkeit nach Geschlecht und Alter (inkl. Männer) women_children_men <- df %>% mutate(Category = case_when( Sex == "female" & Age < 18 ~ "Female Child", Sex == "female" & Age >= 18 ~ "Female Adult", Sex == "male" & Age < 18 ~ "Male Child", Sex == "male" & Age >= 18 ~ "Male Adult" )) %>% group_by(Category) %>% summarise(SurvivalRate = mean(Survived), .groups = 'drop') # PNG-Datei für Analyse speichern png("women_children_men_survival.png", width = 800, height = 400) ggplot(women_children_men, aes(x = Category, y = SurvivalRate, fill = Category)) + geom_bar(stat = "identity", position = "dodge") + ggtitle("Überlebenswahrscheinlichkeit von Frauen, Männern und Kindern") + xlab("Kategorie") + ylab("Überlebensrate") + scale_fill_manual(values = c("blue", "red", "green", "purple"), name = "Kategorie") + theme_minimal() dev.off() ``` @LIA.r ### Geschichten mit JavaScript ```javascript <script run-once style="display:block" modify="false"> async function queryDBpedia(lastName) { // Updated SPARQL query to also fetch images const query = ` SELECT DISTINCT ?person ?name ?wikipediaLink ?image WHERE { ?person a dbo:Person ; rdfs:label ?name ; dbo:wikiPageWikiLink dbr:RMS_Titanic . ?person foaf:isPrimaryTopicOf ?wikipediaLink . OPTIONAL { ?person foaf:depiction ?image } FILTER(CONTAINS(LCASE(?name), "${lastName.toLowerCase()}")) } LIMIT 1 `; const url = "https://dbpedia.org/sparql?query=" + encodeURIComponent(query) + "&format=json"; try { const response = await fetch(url); const data = await response.json(); return data.results.bindings[0] || null; } catch (error) { console.error("DBpedia query failed:", error); return null; } } async function csvToMarkdownTable(csvFile) { const response = await fetch(csvFile); const text = await response.text(); const rows = Papa.parse(text).data; // Find the name column index const nameColumnIndex = rows[0].findIndex(header => header.includes("Name")); // Add an "Image" column header after the name column rows[0].splice(nameColumnIndex + 1, 0, "Image"); let markdownTable = "| " + rows[0].join(" | ") + " |\n"; markdownTable += "| " + rows[0].map(() => "---").join(" | ") + " |\n"; // Process all rows in a single loop for (let i = 1; i < rows.length; i++) { if (rows[i].length === rows[0].length - 1) { // -1 because we added a column // Extract the name and get the last name const fullName = rows[i][nameColumnIndex]; const nameParts = fullName.split(','); const lastName = nameParts[0].trim(); // Try to find DBpedia entry const dbpediaInfo = await queryDBpedia(lastName); // Insert an image cell after the name cell let imageCell = ""; if (dbpediaInfo) { // Add Wikipedia link to name if available if (dbpediaInfo.wikipediaLink) { rows[i][nameColumnIndex] = `[${fullName}](https://zenodo.org/api/records/15424433/files/README.md/${dbpediaInfo.wikipediaLink.value})`; } // Add image if available if (dbpediaInfo.image) { imageCell = ``; } } // Insert the image cell after the name rows[i].splice(nameColumnIndex + 1, 0, imageCell); markdownTable += "| " + rows[i].join(" | ") + " |\n"; } send.lia("LIASCRIPT: <!-- data-type='none' --" + ">" + markdownTable); } } csvToMarkdownTable("https://zenodo.org/api/records/15424433/files/titanic-dataset.csv/content"); "LIA: wait" </script> ``` # 4. Ausblick & Kombinationen <!-- style='width: 100%' --> ## Echtzeitdaten ... Beispiel: Wetterdaten --------------------- https://open-meteo.com/ longitude: <script default="13.33125" input="range" output="longitude">@input</script> latitude: <script default="50.92558" input="range" output="latitude">@input</script> <script run-once="true" style="display: block"> fetch("https://api.open-meteo.com/v1/forecast?latitude=@input(`latitude`)&longitude=@input(`longitude`)&hourly=temperature_2m") .then(response => response.json()) .then(data => { let table = "<!-- data-show data-type='line' data-title='Open-Meteo Weather API' -->\n" table += "| Time | Temperature |\n" table += "| ---- | ----------- |\n" for (let i=0; i < data.hourly.time.length; i++) { table += "| " + data.hourly.time[i] + " | " + data.hourly.temperature_2m[i] + " |\n" } send.lia("LIASCRIPT: "+table) } ) .catch(e => { send.lia("ups, something went wrong") }) "waiting for the weather" </script> ## SVG & LiaScript <svg style="width: 100%; aspect-ratio: 10 / 8" viewBox="0 0 500 500" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg"> <defs> <marker id="arrow" markerWidth="10" markerHeight="10" refX="5" refY="5" orient="auto"> <path d="M0,0 L10,5 L0,10 Z" fill="#7FC8D8" /> </marker> </defs> <path d="M370,70 A210,210 0 1,1 170,65" fill="none" stroke="#7FC8D8" stroke-width="2" marker-end="url(#arrow)" /> <!-- Zentrales Label --> <text x="275" y="260" text-anchor="middle" font-family="sans-serif" font-size="32" font-weight="bold" fill="#C0392B"> DATEN </text> <!-- Knoten-Definitionen --> <g font-family="sans-serif" font-size="16" font-weight="bold" text-anchor="middle"> <rect x="180" y="30" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="220" y="35" width="190" height="40"> {{1}} ## Erhebung </foreignObject> <rect x="363.2" y="130" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="388" y="135" width="190" height="40"> {{2}} ## Verarbeitung </foreignObject> <rect x="363.2" y="330" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="418" y="335" width="190" height="40"> {{3}} ## Analyse </foreignObject> <rect x="190" y="430" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="214" y="435" width="190" height="40"> {{4}} ## Archivierung </foreignObject> <rect x="16.8" y="330" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="22" y="335" width="190" height="40" style="font-size: 16px"> {{5}} ## Veröffentlichung </foreignObject> <rect x="16.8" y="130" width="190" height="40" rx="5" fill="pink"/> <foreignObject x="40" y="135" width="190" height="40" style="font-size: 16px"> {{6}} ## Nachnutzung </foreignObject> </g> </svg> ## Explorative Darstellungen ``` js @GGBScript Titel("Die Distanz zwischen A und B ist 5"); // Definiere Punkte const A = Punkt(1, 2, "A"); const B = Punkt(4, 6, "B"); ``` {{1}} <section> ----------------------------------- ### Vergleich quadratischer und linearer Funktionen Überführe die Quadratische Funktion in eine Geraden-Gleichung und untersuche wie sich Veränderung der Steigung und des Achsenabschnitts auf die Funktion auswirken. Vergleiche die Ergebnisse mit den Ergebnissen der quadratischen Funktion. Der Exponent der Funktion $a =$ <script input="range" step="1" min="-1" max="6" value="2" output="a">@input</script>, der Koeffizient des linearen Terms ist $b =$ <script input="range" step="0.1" min="-10" max="10" value="0" output="b">@input</script> und der y-Achsenabschnitt ist $c =$ <script modify="false" input="range" step="0.1" min="-10" max="10" value="0" output="c">@input</script> <script modify="false" run-once style="display: inline-block; width: 100%"> "LIASCRIPT: ### $$f(x) = x^{@input(`a`)} + x * @input(`b`) + @input(`c`)$$" </script> <script run-once style="display: inline-block; width: 100%"> function func(x) { return Math.pow(x, @input(`a`)) + @input(`b`) * x + @input(`c`); } function generateData() { let data = []; for (let i = -15; i <= 15; i += 0.01) { data.push([i, func(i)]); } return data; } let option = { animation: false, grid: { top: 40, left: 50, right: 40, bottom: 50 }, xAxis: { name: 'x', minorTick: { show: true }, splitLine: { lineStyle: { color: '#999' } }, minorSplitLine: { show: true, lineStyle: { color: '#ddd' } } }, yAxis: { name: 'y', min: -10, max: 10, minorTick: { show: true }, splitLine: { lineStyle: { color: '#999' } }, minorSplitLine: { show: true, lineStyle: { color: '#ddd' } } }, dataZoom: [{ show: true, type: 'inside', filterMode: 'none', xAxisIndex: [0], startValue: -20, endValue: 20 }, { show: true, type: 'inside', filterMode: 'none', yAxisIndex: [0], startValue: -20, endValue: 20 }], series: [ { type: 'line', showSymbol: false, clip: true, data: generateData() } ] } "HTML: <lia-chart option='" + JSON.stringify(option) + "'></lia-chart>" </script> </section> # 5. Wie geht es weiter? | Ressource | Hinweise | | --------------------------------------------- | --------------------------------------------------------------------------------- | | https://liascript.github.io | Projektwebseite mit Links zu allen Informationen, LiveEditor, Blogbeiträgen, ... | | [LiaScript erklärt LiaScript](https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaScript/docs/master/README.md) | Dokumentation des Sprachumfanges | | https://www.youtube.com/@liascript4180 | Youtube Kanal | | https://github.com/orgs/LiaScript/discussions | Diskussionsforum von Nutzenden | | https://app.gitter.im/#/room/#LiaScript_community:gitter.im | Gitter Chatroom | | eMail | [LiaScript\@web.de](https://zenodo.org/api/records/15424433/files/README.md/mailto:[email protected]) |