<style type="text/css"> code {color: #fff573} small {opacity: .5} .reveal table th { font-size: .5em} .reveal table td { font-size: .5em} .container { background-size: cover; overflow-y: hidden; } .footer { display: none; } </style> ## Eine Einführung in SKOS mit SkoHub Vocabs Adrian Pohl (hbz), Steffen Rörtgen (GWDG) 2021-11-02, WWW [Pad zum Workshop](https://pad.gwdg.de/s/OCbQBibi2) --- ## Agenda 1. Vorstellungsrunde (15 min) 2. Kontrollierte Vokabulare (10 min) 3. Einführung in SKOS (15 min) 4. SkoHub Vocabs (10 min) 5. Fragen/Diskussion (15 min) 6. Pause (10 min) 7. Hands-on (50 min) 8. Ausblick / Diskussion (25 min) --- # 1. Vorstellungs-runde --- ## Fragen - Name, Organisation, Rolle? - Welche Erfahrungen mit kontrollierten Vokabularen? - Erfahrungen mit SKOS? - Vertraut mit GitHub? --- # 2. Kontrollierte Vokabulare --- ## Schlecht: verschiedene Werte für dasselbe Ding ``` "Brauweiler" "Brauweiler, Puhlheim" "Brauweiler <Pulheim>" "Brauweiler, Pulheim" ``` --- ## Gut: ein kontrollierter Wert z.B. `http://www.wikidata.org/entity/Q902505` --- ## Kontrolliertes Vokabular - aka Thesaurus, Klassifikation, Taxonomie, Normdatei, Systematik, Werteliste - gibt mögliche Werte für ein Metadatenfeld vor - verleiht Werten eine ID/Notation zur Nutzung in den Daten - beinhaltet häufig alternative Bezeichner ("Verweisungsform") - kann hierarchisch organisiert sein - beinhaltet teilweise weitere Relationen zwischen Werten --- ## Ziele - Kontrolle von Vielfalt der Bezeichnungen - Vermeidung von Schreibfehlern in den Metadaten - Hinreichende Identifikation der Konzepte --- ## Beispiel: ICD-10 [![](https://pad.gwdg.de/uploads/upload_ebd5132838526c16153105540cee88f2.png)](https://icd.who.int/browse10/2019/en) --- ## Beispiel: GND ![](https://pad.gwdg.de/uploads/upload_4f88b5016a7b982ae8b31baef6444812.png) --- ## Beispiel: Dewey Decimal Classification (DDC) ``` 000 Computer science, information & general works 100 Philosophy & psychology 200 Religion 300 Social sciences 400 Language 500 Science 600 Technology 700 Arts & recreation 800 Literature 900 History & geography ``` --- ## Kontrollierte Vokabulare unterstützen Mehrsprachigkeit --- ## Beispiel: DDC-Deutsch ``` 000 Informatik, Informationswissenschaft, allgemeine Werke 100 Philosophie und Psychologie 200 Religion 300 Sozialwissenschaften 400 Sprache 500 Naturwissenschaften und Mathematik 600 Technik, Medizin, angewandte Wissenschaften 700 Künste und Unterhaltung 800 Literatur 900 Geschichte und Geografie ``` --- ## Beispiel: Ressourcentypen (HCRT) [![](https://pad.gwdg.de/uploads/upload_9687b7c5b0b00bc55ccdf51148e8a5ce.png)](https://w3id.org/kim/hcrt/scheme) --- # 3. Einführung in SKOS --- ## <img src="https://www.w3.org/Icons/SW/Buttons/sw-skos-magenta-v.svg" width=400 style="border: none; box-shadow: none;" /> - SKOS: **S**imple **K**nowledge **O**rganization **S**ystem - Datenmodell für die maschinenlesbare und webbasierte Publikation kontrollierter Vokabulare als Linked Open Data - 2009 als [Empfehlung des World Wide Web Consortiums (W3C)](https://www.w3.org/TR/2009/REC-skos-reference-20090818/) veröffentlicht - Unterstützt Mehrsprachigkeit, Abbildung von Beziehungen & einiges mehr --- ## Vokabulare als integraler Bestandteil des Web - **auflösbare IDs**: ein HTTP URI (Uniform Resource Identifier) für ein Vokabular und jeden Wert - **Verlinkung**: Werte sind innerhalb eines Vokabulars und zwischen Vokabularen verlinkt - **Erweiterbarkeit**: weitere Aussagen oder Funktionen auf Basis anderer Webstandards können ergänzt werden --- ## Vorteile - Webintegration - Maschinenlesbarkeit - Interoperabilität - Nachnutzbarkeit - Entkoppelung von Datenmodellierung und Softwareentwicklung --- ## Resource Description Framework (RDF) - SKOS wird in dem graph-basierten Datenmodell [RDF](https://de.wikipedia.org/wiki/Resource_Description_Framework) kodiert - zum Austausch von Daten über das Web, entworfen und gepflegt vom W3C - Abstraktes Modell mit verschiedenen Serialisierungsformaten (RDF/XML, Turtle, JSON-LD...) --- ## Abbildung von Daten in RDF - Aussagen über *Ressourcen* in Form von Triples (Subjekt - Prädikat - Objekt) ```graphviz digraph G { rankdir=LR; "Subject"->"Object" [label="Predicate"] } ``` --- ## Abbildung von Daten in RDF - **Subjekt**: Ressource über die eine Aussage getroffen wird - **Prädikat**: Beziehung zwischen Subjekt und Objekt - **Objekt**: Ressource, zu dem die Ressource in einer Verbindung steht oder ein Literal <br> - **Subjekt** und **Prädikat** sind immer ein URI - **Objekt** ist ein URI *oder* ein Literal (String, Date, Integer) --- | Subjekt | Prädikat| Objekt | | -------- | -------- | -------- | | Mein Hund | heißt | Lica. | | `<http://example.org/myDog>` | `<https://schema.org/name>` | `"Lica"@de` . | | Mein Hund | interessiert sich für | Apportieren. | | `<http://example.org/myDog>` | `<http://xmlns.com/foaf/0.1/interest>` | `<http://www.wikidata.org/entity/Q621694>` . | --- ## SKOS-Namespace und -Prefix `@prefix skos: <http://www.w3.org/2004/02/skos/core#>.` --- ## Aufbau eines SKOS-Vokabulars Zwei grundlegende Typen von Einträgen: - `ConceptScheme`: - das Vokabular selbst, wird genau **1 Mal** pro Vokabular definiert - generelle Informationen wie Lizenz, Titel - `Concept`: - ein Wert des Vokabulars - Informationen wie Label, Beziehungen --- ## Wichtige SKOS-Properties - Verbindung zwischen Vokabular und seinen Werten: `hasTopConcept`, `topConceptOf`, `inScheme` - Vorzugsbezeichnung: `prefLabel` - Alternativbezeichnung: `altLabel` - hierarchische Informationen: `narrower`/`broader` --- ## Sonstige Properties I - Notation: `notation` - Dokumentation des Vokabulars und seiner Entwicklung: `changeNote`, `definition`, `editorialNote`, `example`, `note`, `historyNote`, `scopeNote` - Externe Relationen: `broadMatch`, `narrowMatch`, `exactMatch`, `closeMatch`, `mappingRelation` --- ## Sonstige Properties II - `Collection`, `OrderedCollection`, `member`, `memberList` - `hiddenLabel` - `broaderTransitive`, `narrowerTransitive`, `related`, `semanticRelation` - Siehe auch diese [erläuterte Liste der Elemente](https://dini-ag-kim.github.io/skos-einfuehrung/#/skos-elemente) --- ## Beispiel: AgroVoc - https://agrovoc.fao.org/browse/agrovoc/en/page/c_1666?clang=de - http://aims.fao.org/aos/agrovoc/c_1666.ttl --- # 4. SkoHub Vocabs --- ## Es gibt bereits viele SKOS-Werkzeuge - [Skosmos](http://skosmos.org/) - [iQvoc](https://iqvoc.net/) - [VocBench](http://vocbench.uniroma2.it/) - ... --- ## Warum ein weiteres Publikationswerkzeug? - [Ein Vokabular Repo](https://github.com/skohub-io/skohub-docker-vocabs/) <br> - **Static Site Generator**: Leicht aufzusetzen und zu deployen - **Git-basierte** Redaktionsprozesse - **Integration mit GitHub und GitLab** via Webhooks - **"serverless" Hosting** möglich (mit ein paar weniger Funktionen) --- ## Vokabular als statisches HTML - statisches HTML -> Ressourcenschonung - Aktualisierung über Webhook oder GitHub Action - --> Vokabular ist stets auf neuestem Stand --- ## Turtle in git - Einfache Nachverfolgung der Änderungen --- ## Perma URIs mit W3ID oder purl erstellen - Permanente URIs Nachhaltigkeit, falls sich URLs ändern - [Guide zur Einrichtung von Perma URIs](https://git.io/JPWsI) --- ## Funktionen - Mehrsprachigkeit - Lookup mit FlexSearch - Content Negotiation (HTML/JSON) --- ## Nutzungsbeispiele - [Metadatenharmonisierung in ETL-Prozessen bei WirLernenOnline](https://doi.org/10.25625/DN1X3A) - Standardisierungsprozesse in KIM: - [Ressourcentypen](https://w3id.org/kim/hcrt/scheme) - [Kompetenzen in der digitalen Welt](http://w3id.org/kim/kmk-vocabs/digitalisierungsbezogene-kompetenzen/) - Publikation eines Vokabulars: [Kerndatensatz Forschung](https://www.kerndatensatz-forschung.de/index.php?id=forschungsfelder) --- # 5. Fragen / Diskussion Bitte auch im [Pad zum Workshop](https://pad.gwdg.de/DHTneRJTSJqVgToExUxZyg?both#) --- # 6. Pause --- # 7. Hands-on --- - Forkt [skohub-docker-gh-pages](https://github.com/skohub-io/skohub-docker-vocabs) auf GitHub - Baut euer eigenes Beispiel-Vokabular - Pusht und veröffentlicht es --- Forkt [skohub-docker-gh-pages](https://github.com/skohub-io/skohub-docker-vocabs) auf GitHub ![](https://pad.gwdg.de/uploads/upload_6703ac745e8eacc6c38704fe3ea84887.png) --- ## Anpassung der GitHub-Action - Klickt in eurem Repo auf den Ordner `.github/workflows` - Klickt auf die Datei `main.yml` und anschließend auf den "Edit"-Button (✏️) - Zeile 34: auf **EUREN** GitHub-Namen ändern, z.B. `git clone https://github.com/sroertgen/skohub-docker-vocabs.git data/` --- ## GitHub Actions aktivieren ![](https://pad.gwdg.de/uploads/upload_601388c027717ae67026105cf0efc5cd.png) --- ## Seite veröffentlichen erst auf "Settings", dann auf "Pages" ![](https://pad.gwdg.de/uploads/upload_dc71a66b9bd1ceba34a4d2949784553e.png =600x480) --- ## Setup GitHub Pages I angezeigten Link kopieren ![](https://pad.gwdg.de/uploads/upload_1febd1a7580b8f0a1ae89c362654ef07.png) --- ## Setup GitHub Pages II auf eurem Repo erst hier klicken... ![](https://pad.gwdg.de/uploads/upload_8b192b982b4824f3bffa80e98d4878a3.png) --- ## Setup GitHub Pages III ...und dann hier den Link einfügen ![](https://pad.gwdg.de/uploads/upload_1e5170bea3b0d6b8a81572192f599975.png) --- ## Editiert die Datei `colors.ttl` ![](https://pad.gwdg.de/uploads/upload_baf5db89d252198bef4a3643d27ee824.png) --- ## Baut euer Vokabular - Fügt weitere Farben hinzu - Fügt Hierarchien hinzu <br> - [Turtle Web Editor](https://felixlohmeier.github.io/turtle-web-editor/) (zur Validierung) --- ## Beispiel: Einfügen einer Hierarchie siehe auch [colors_with_hierarchy.ttl](https://github.com/skohub-io/skohub-docker-vocabs/blob/master/colors_with_hierarchy.ttl) ```turtle @prefix color: <https://example.org/color/> . @prefix dct: <http://purl.org/dc/terms/> . @prefix skos: <http://www.w3.org/2004/02/skos/core#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . color: a skos:ConceptScheme ; dct:title "Colors"@en, "Farben"@de ; dct:creator "Hans Dampf"@de ; dct:created "2021-11-02"^^xsd:date ; dct:license <https://creativecommons.org/publicdomain/zero/1.0/> ; skos:hasTopConcept color:b0001, color:b0002 . color:b0001 a skos:Concept ; skos:prefLabel "Violett"@de, "violet"@en ; skos:altLabel "lila"@de, "purple"@en ; skos:topConceptOf color: . color:b0002 a skos:Concept ; skos:prefLabel "Green"@en, "Grün"@de ; skos:narrower color:b0003 ; skos:topConceptOf color: . color:b0003 a skos:Concept ; skos:prefLabel "Light green"@en, "Hellgrün"@de ; skos:broader color:b0002 ; skos:inScheme color: . ``` --- ## Link zu eurem Vokabular im Pad eintragen [Pad](https://pad.gwdg.de/DHTneRJTSJqVgToExUxZyg?both#Arbeitsergebnisse) --- ## 8. Ausblick / Diskussion - Webdesign verbessern - Konfigurierbarkeit (siehe z.B. [#75](https://github.com/skohub-io/skohub-vocabs/issues/75)) - `skos:Collection`-Unterstützung ([#159](https://github.com/skohub-io/skohub-vocabs/issues/159)) - Reconciliation ([skohubpubsub#54](https://github.com/skohub-io/skohub-pubsub/issues/54)) - SKOS/SkoHub Vocabs als Basis für eine dezentrale, push-basierte Discovery-Infrastruktur --- ## Nicht die offene Lizenz vergessen! (Diese Slides sind übrigens lizenziert unter [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/) und das empfehlen wir auch für SKOS-Vokabulare.) ![CC0 button](https://licensebuttons.net/p/zero/1.0/88x31.png) --- ## Links & Literatur - [Einführung in SKOS am Beispiel von Open Educational Resources (OER)](https://dini-ag-kim.github.io/skos-einfuehrung/#/) - [Metadatenharmonisierung in ETL-Prozessen mit SkoHub im Projekt WirLernenOnline](https://doi.org/10.25625/DN1X3A) - [SKOS Testing Tool](https://skos-play.sparna.fr/skos-testing-tool/home)
{"title":"Eine Einführung in SKOS mit SkoHub Vocabs","lang":"de","type":"slide","slideOptions":{"transition":"none","theme":"dark"},"tags":"skohub, skos, era"}