{"id":1426,"date":"2022-02-27T13:30:12","date_gmt":"2022-02-27T12:30:12","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=1426"},"modified":"2022-10-19T10:45:25","modified_gmt":"2022-10-19T08:45:25","slug":"obsidian","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2022\/obsidian\/","title":{"rendered":"Obsidian"},"content":{"rendered":"<h2>Was ist Obsidian?<\/h2>\n<p>Obsidian ist ein Werkzeug zur Erstellung von Wissensdatenbanken auf Basis simpler Textdateien. Die Applikation erm\u00f6glicht Text, aber auch eine Vielzahl an Formaten von Mediendateien zu organisieren, anzuzeigen und untereinander zu verlinken. Die Kernfunktion von Obsidian ist es, diese Dateien \u00fcbersichtlich als Wissensgraph darzustellen. Dadurch ergibt sich eine Vielzahl an Anwendungsgebieten, von der Organisation von pers\u00f6nlichen Dateien bis hin zur Planungsunterst\u00fctzung f\u00fcr gr\u00f6\u00dfere Projekte.<\/p>\n<p>Obsidians Funktionsumfang kann au\u00dferdem durch Plugins erweitert werden. Neben hunderten von w\u00e4hlbaren, bereits vorhandenen Erweiterungen besteht au\u00dferdem auch die M\u00f6glichkeit eigene Plugins zu erstellen. Die Entwickler stellen sogar Tutorials und Beispielplugins zur Verf\u00fcgung, da eine der Hauptphilosophien von Obsidian ist, dass es einfach Erweiterbar ist und Funktionen in der Applikation selbst integriert werden k\u00f6nnen.<\/p>\n<p>Die beschreibenden Textdateien sind in der Auszeichnungssprache Markdown, von welcher auch beinahe der volle Funktionsumfang in Obsidian genutzt werden kann.<br \/>\nSomit ist Obsidian im einfachsten Fall ein Notizblock, aber im Allgemeinen eher das, was man daraus macht.<\/p>\n<h2>Interface und Funktionsweise<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/02\/obsidian1.png\" alt=\"Obsidian-Oberfl\u00e4che\" \/><\/p>\n<p>Wenn man Obsidian das erste Mal startet, verlangt das Programm, dass man einen neuen Vault anlegt. Das hei\u00dft Obsidian ben\u00f6tigt einen Ort, an welchem es alle zuk\u00fcnftigen Dateien ablegen kann. In der Regel ist das ein einfacher Ordner, der sich irgendwo auf dem lokalen Dateisystem befindet.  <\/p>\n<p>Umso eine Ordner anzulegen, klickt man unten links auf den Button mit der Nummer 1. Hier hat man drei Optionen. Entweder man \u00f6ffnet einen bereits vorhanden Ordner als Vault oder man l\u00e4sst von Obsidian einen neuen Ordner anlegen. Als letztes hat man die M\u00f6glichkeit einen Beispielvault zu \u00f6ffnen, welcher bei der Installation von Obsidian angelegt wurde. <\/p>\n<p>Nachdem man einen Vault ge\u00f6ffnet hat, bekommt man im linken Bereich mit der Nummer 2 eine \u00dcbersicht \u00fcber aller Dateien, die sich in diesem Vault befinden. Wenn man einen neuen Vault erstellt hat, wird hier noch nichts angezeigt, bis man eine Datei in dem Vault angelegt hat. <\/p>\n<p>Mit den Buttons im Bereich 3 kann man einen neuen Ordner oder eine neue Datei erstellen. Alternativ kann man hier auch die Sortierung f\u00fcr alle Dateien \u00e4ndern. Beim Erstellen einer Datei wird immer eine Markdown Datei erstellt.  <\/p>\n<p>M\u00f6chte man einen anderen Dateityp integrieren, dann kann man das machen, indem man die Datei \u00fcber den normalen Dateiexplorer in den passenden Ordner des Vaults kopiert. <\/p>\n<p>Sobald man eine Datei aus der \u00dcbersicht anklickt, wird deren Inhalt in dem gro\u00dfen Bereich mit der Nummer 4 in der Mitte angezeigt.  <\/p>\n<p>Speziell f\u00fcr Markdown Dateien gibt es oben links noch den Button mit der Nummer 5. Hiermit kann man zwischen einen Bearbeitungs- und einem Vorschaumodus wechseln. Im Vorschaumodus bekommt man den formatierten Text zu sehen, der sich auch nicht ver\u00e4ndern l\u00e4sst. Wechselt man jedoch in den Bearbeitungsmodus sieht man den normalen Inhalt der Markdown Datei und kann diesen auch bearbeiten. <\/p>\n<p>Mit dem Panel auf der linken Seite mit der Nummer 6 kann man zwischen den verschiedenen Ansichten in Obsidian wechseln. Die erste Ansicht ist die, die man in dem Bild zum User Interface sehen kann.  <\/p>\n<p>Die andere Ansicht ist eine Graphansicht. Ein Beispiel hierf\u00fcr gibt es im Abschnitt zu der Beispielanwendung zu sehen. Hier werden alle Dateien aus dem Vault als einzelne Punkte dargestellt. Die einzelnen Punkte werden verbunden, wenn in einer Datei ein Verweis zu einer anderen Datei vorhanden ist. So bilden alle Dateien dann einen Graph. Dieser Graph l\u00e4sst sich nach bestimmten Worten oder Tags durchsuchen. Wenn man einen der Punkte anklickt, wird die dazugeh\u00f6rige Datei in der Vorschau angezeigt.<\/p>\n<h2>Anwendungsbeispiel<\/h2>\n<p>F\u00fcr einen besseren Eindruck, wie die Anwendung arbeitet wenn eine gr\u00f6\u00dfere Anzahl an Inhalten integriert ist, haben wir ein eigenes Anwendungsbeispiel erdacht.<\/p>\n<p>Um m\u00f6glichst einfach einen gro\u00dfen Wissensgraphen zu erzeugen, haben wir uns entschieden alle PDF-Dateien der Fakult\u00e4t Informatik&amp;Medien zu crawlen. Damit wir nicht zu jeder PDF das Markdown-File manuell erstellen mussten, wurde ein Python-Skript geschrieben. Das Skript erstellt anhand des PDF-Dateinamens automatisch eine Datei mit Tags, Links und einer Verkn\u00fcpfung zum PDF. <\/p>\n<p><strong>PDF-Crawl <\/strong><\/p>\n<p>Zum Crawlen haben wir das Kommandozeilenprogramm wget verwendet. Mit dem folgenden Befehl lassen sich alle PDFs der FIM-Homepage herunterladen. <\/p>\n<p>wget &#8211;no-clobber &#8211;random-wait -r -p -nd -A pdf -e robots=off https:\/\/fim.htwk-leipzig.de\/ <\/p>\n<p>&#8211;no-clobber verhindert, dass wget eine Datei herunterl\u00e4dt, wenn sie eine bereits vorhandene Datei \u00fcberschreiben w\u00fcrde. <\/p>\n<p>&#8211;random-wait bewirkt, dass die Zeit zwischen den Anfragen zwischen 0,5 und 1,5 Sekunden variiert. <\/p>\n<p>-r aktiviert rekursives Abrufen <\/p>\n<p>-p veranlasst Wget, alle Dateien herunterzuladen, die f\u00fcr die korrekte Anzeige einer bestimmten HTML-Seite notwendig sind. <\/p>\n<p>-nd be, werden alle Dateien im aktuellen Verzeichnis gespeichert, ohne dass sie geklammert werden. <\/p>\n<p>-A pdf sorgt daf\u00fcr, dass nur PDF-Dateien runtergeladen werden. <\/p>\n<p>-e robots=off wird verwendet damit die robots.txt Datei ignoriert wird (manche Web-Hosts blockieren Crawler mit robots.txt Datei) <\/p>\n<p>Der Befehl hat im Dezember 2021 900MB an PDFs von der IMN-Homepage heruntergeladen. <\/p>\n<p><strong>Python-Skript<\/strong> <\/p>\n<p>Das Skript ist unter https:\/\/github.com\/ssd-ls-a\/htwk_pdf_knowledge_base zu finden.  <\/p>\n<p>Zum Ausf\u00fchren gibt es Hinweise in der README.md. <\/p>\n<p>Als Parameter werden die Pfade zu dem Ordner der PDFs und dem Ordner, in den die Markdown-Dateien gespeichert werden sollen, \u00fcbergeben. <\/p>\n<p>Um in die erzeugten Dateien automatisch Links und Tags zu schreiben, werden die Dateinamen der PDFs in einzelne Bestandteile zerlegt. Im Anschluss wird gepr\u00fcft, ob diese Bestandteile als Keys eines Dictionarys vorhanden sind und wenn ja, wird der zugeh\u00f6rige Wert in die Markdowndatei als Link oder Tag geschrieben. In dem Dictionary sind Abk\u00fcrzungen wie zum Beispiel INM (=Informatik Master) enthalten. Zus\u00e4tzlich werden regul\u00e4re Ausdr\u00fccke verwendet um Jahreszahlen zu identifizieren und diese ebenfalls als Link in die Datei zu schreiben. <\/p>\n<p><strong>Darstellung in Obsidian<\/strong><\/p>\n<p>Auf den folgenden Bildern ist der aus den erzeugten Markdown-Dateien erstellte Wissensgraph zu sehen.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/02\/obsidian2.png\" alt=\"Obsidian-Graph\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/02\/obsidian3.png\" alt=\"Obsidian-Graph\" \/><\/p>\n<p>Hier wurde nach dem Link &#8218;IMN&#8216; gefiltert:<br \/>\n<img decoding=\"async\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/02\/obsidian4.png\" alt=\"Obsidian-Graph mit INM-Filterung\" \/><\/p>\n<h2>Weiterf\u00fchrende Links<\/h2>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/02\/praesentation.pdf\">Foliensatz zum zugeh\u00f6rigen Vortrag<\/a><br \/>\n<a href=\"https:\/\/obsidian.md\/\">Obsidian Hauptseite<\/a><br \/>\n<a href=\"https:\/\/github.com\/ssd-ls-a\/htwk_pdf_knowledge_base\">Github Anwendungsbeispiel<\/a><br \/>\n<a href=\"https:\/\/www.gnu.org\/software\/wget\/manual\/wget.html\">wget manual page<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was ist Obsidian? Obsidian ist ein Werkzeug zur Erstellung von Wissensdatenbanken auf Basis simpler Textdateien. Die Applikation erm\u00f6glicht Text, aber<\/p>\n","protected":false},"author":64,"featured_media":1427,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1426","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-betriebliche-informationssysteme"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=1426"}],"version-history":[{"count":10,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1426\/revisions"}],"predecessor-version":[{"id":1633,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1426\/revisions\/1633"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media\/1427"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=1426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=1426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=1426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}