Details zu OLE
Open Linked Event Data Schnittstelle
Kernfunktion von Hinto ist, dass sich die Informationen über Events neu dynamisch, über die Grenzen einzelner Webseiten und Plattformen hinweg, automatisch verbreiten. Dank des automatischen Datenaustauschs mit anderen Webseiten & Plattformen wird die Sichtbarkeit für die Kulturschaffenden mit geringem Aufwand erhöht. Das Wissen über unsere reichhaltige Kulturlandschaft verbreitet sich so einfacher und wird dadurch erlebbarer.
Ohne OLE-Schnittstelle (Bisher)
Events müssen manuell publiziert werden
Der Veranstalter muss seine Veranstaltung manuell auf verschiedenen Plattformen eintragen.
Das bedeutet: Der Veranstalter muss viel Zeit investieren, um seine Veranstaltungen zu publizieren. Bei Änderungen müssen die Informationen überall von Hand angepasst werden.
Falls eine Schnittstelle von der Plattform angeboten wird, muss diese für jede einzelne Plattform implementiert werden.
Das bedeutet: Abhängigkeit von der Plattform und Kosten für die Implementation und Wartung.
Mit OLE-Schnittstelle (Neu)
Events verbreiten sich automatisch
Die standardisierte OLE-Schnittstelle wird von dir angeboten. Die Plattformen kommen bei dir die Daten abholen.
Das bedeutet: Kein Aufwand im Veröffentlichen von Veranstaltungen. Einmalige Kosten für die Implementation der OLE-Schnittstelle um eine beliebige Anzahl Plattformen mit Daten zu beliefern.
Für Wordpress (Version 5.2-5.7) steht ein kostenloses OLE Plugin zu Verfügung, damit können Veranstaltungsdaten mit wenigen Klicks ins OLE Netzwerk eingespiesen werden. Das Plugin unterstützt diverse Event-Manager-Plugins (z.B. Event Organiser, WP Event Manager, Event Calendar), kann aber auch durch einen eigenen Driver erweitert werden.
Eine kleine PHP-Bibliothek haben wir auf bitbucket.org (GIT, MIT Lizenz) veröffentlicht, damit auch Plugins für Typo3, Drupal, Joomla!und andere Lösungen einfacher entstehen können.
Diese Library haben wir auch als Composer Package vorbereitet, damit ihr noch schneller integrieren könnt (composer require fugugmbh/oledata dev-master).
Kontaktiere uns, um die Schnittstelle in deine Website einzubauen oder wenn ihr sonstigen Fragen habt.
Falls du ein OLE Plugin entwickelt hast, werden wir dieses gerne auch hier auf hinto.ch kommunizieren.
Lizenz
OLE wurde von der fugu GmbH entwickelt und ist unter der Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz lizenziert.
Sämtlicher Inhalt welcher mit der OLE-Schnittstelle veröffentlicht wird, soll unter einer CC-0 Lizenz (kein Urheberrechtsschutz) veröffentlicht werden um Urheberrechtsverletzungen zu vermeiden. Falls ein Bild oder Text nicht unter CC-0 veröffentlicht werden kann, soll dieser Inhalt nicht via OLE verbreitete werden (weglassen von Inhalten).
Plattformen/Aggregatoren welche die OLE-Schnittstelle für die Aggregation von Daten verwenden, sind verpflichtet, die verwendeten OLE-Schnittstellen (URLs) öffentlich und maschinenlesbar zu kommunizieren um die Weiterverbreitung der Veranstaltungsdaten zu gewährleisten.
Der Einsatz der OLE-Schnittstelle soll in geeigneter Form kommuniziert werden, um die Verbreitung des OLE-Konzeptes zu gewährleisten. Dafür haben wir im nächsten Abschnitt einen Bespieltext erstellt.
Somit kann das OLE-Konzept unter Einhaltung der Lizenz frei für kommerzielle und nichtkommerzielle Anwendungen verwendet werden.
Lizenzgeber
fugu GmbH
Schwarztorstrasse 9
CH-3007 Bern
Beispiel für eine Erwähnung im Impressum oder Footer
Nachfolgender Text kann direkt im Impressum deiner Website verwendet werden:
Diese Website ist Teil des Open Linked Event Data Netzwerks (OLE), eine Initiative des Vereins Hinto.ch. Sämtliche Veranstaltungen werden automatisch auch auf www.hinto.ch publiziert.
Bereits mit OLE ausgerüstet
Quellen von Hinto
- adm.konzerte-bern.ch
- api.dachstock.ch
- api.kptl.ch
- bejazz.ch
- bewegungsmelder.ch
- birdseye.ch
- breitsch-traeff.ch
- casinobern.ch
- futurina.ch
- heiliggeist.refbern.ch
- klangkeller-bern.ch
- la-cappella.ch
- lichtspiel.ch
- matthaeus.refbern.ch
- mfk.ch
- mobilservice.ch
- nydegg.refbern.ch
- paulus.refbern.ch
- petrus.refbern.ch
- stattland.ch
Funktionsweise
Nachdem die XML basierte Schnittstelle von einem Programmierer in deine Website implementiert wurde, können die Daten maschinell und sehr effizent mit der entsprechende URL von entfernten Systemen automatisch eingelesen werden.
Die entfernten System rufen die URL mehrmals täglich auf und können so die aktuellen Veranstaltungsdaten einlesen.
Da das XML basierte Dokument wohlstrukturiert und dokumentiert ist, entstehen keine fehlerhaften Interpreationen deiner Veranstaltungsdaten. Die OLE-Schnittstelle ist zudem viel effizienter als ein Harvesting auf der Website, somit wird deine Website/dein Hosting weniger ausgelastet und das Erlebnis für alle anderen Website-Besucher bleibt gewährleistet.
Durch die Implementation der OLE-Schnittstelle, bist du explizit damit einverstanden, dass deine Veranstaltungsdaten von Fremdsystemen ausgelesen und folglich in entfernten/fremden System verwendet werden.
Minimale Implementation der Schnittstelle
Nachfolgend findest du beispielhaft, welche Struktur das XML aufweisen muss.
Wir empfehlen, maximal 20 Veranstaltungen pro Request zu veröffentlichen. Diese Empfehlung schützt die Infrastruktur von dir und vom Empfänger. Falls du mehr als 20 Veranstaltungen veröffentlichen möchtest, kannst du ein Paging mittels <next_url> implementieren.
Sämtliche Daten müssen als UTF-8 encodiert sein.
Beispielhaftes XML
<!-- We recommend to wrap all values by CDATA <![CDATA[...]]> lang attribute ist optional (ISO-639-1) source_id on event,show element must be unique and required for update purpose --> <!-- This XML interface is licensed under a Creative Commons 4.0 BY-SA license, https://www.hinto.ch/olelicense.html --> <ole> <meta> <max_pages>8</max_pages><!-- Used to generate a progress info on client side --> <next_url><![CDATA[https://www.mydomain.ch/myolepath/for/next/page]]></next_url> <!-- extended functions, optional --> <changedsince_supported>true</changedsince_supported><!-- boolean --> <source_version><![CDATA[my version value]]></source_version> </meta> <events> <event source_id="event-XXX"> <name lang="de"><![CDATA[My event name]]></name> <name lang="fr"><![CDATA[]]></name> <name lang="en"><![CDATA[]]></name> <name lang="xx"><![CDATA[]]></name> <!-- optional --> <lead lang="de"><![CDATA[My lead]]></lead> <lead lang="fr"><![CDATA[]]></lead> <lead lang="en"><![CDATA[]]></lead> <!-- optional --> <description lang="fr"><![CDATA[My description]]></description> <description lang="fr"><![CDATA[]]></description> <description lang="en"><![CDATA[]]></description> <costs></costs><!-- 0|1 : Int value for no or yes (optional) --> <location> <name><![CDATA[My name]]></name> <street><![CDATA[My street]]></street> <code><![CDATA[My postal code]]></code> <locality><![CDATA[My city/locality]]></locality> </location> <!-- optional --> <categories> <category><![CDATA[My category A (Jazz)]]></category> <category><![CDATA[My category B (Fest)]]></category> <category><![CDATA[...]]></category> </categories> <!-- optional --> <targetgroups> <targetgroup><![CDATA[My target group A (Kinder)]]></targetgroup> <targetgroup><![CDATA[My group B (Senioren)]]></targetgroup> <targetgroup><![CDATA[...]]></targetgroup> </targetgroups> <shows> <show source_id="show-YYY"> <!-- ISO-8601 --> <date_start>2019-09-30T18:00:00+02:00</date_start> <!-- ISO-8601 (optional) --> <date_end>2019-09-30T20:00:00+02:00</date_end> <!-- Additional info (e.g. door opening) --> <info lang="xx"><![CDATA[...]]></info> <!-- Overwrites event.url (optional) --> <url><![CDATA[...]]></url> <!-- Overwrites event.ticket_url (optional) --> <ticket_url><![CDATA[...]]></ticket_url> </show> <show source_id="..."> ... </show> </shows> <!-- optional --> <files> <image> <!-- Absolute url to the file --> <src><![CDATA[...]]></src> <!-- Copyright of the source (optional) --> <copyright><![CDATA[...]]></copyright> </image> ... </files> <!-- Absolute url to the original event page --> <url><![CDATA[...]]></url> <!-- Absolute url to the event ticket/reservation/booking url (optional)--> <ticket_url><![CDATA[...]]></ticket_url> <links> <url><![CDATA[...]]></url> ... </links> </event> <event> ... </event> </events> </ole>
Optimierungen der Schnittstelle
Um den Datenaustausch noch effizienter zu gestalten, haben wir diverse Optionen implementiert.
URL-Parameter "changedsince" (ISO-8601): Dieser Parameter kann mitgegeben werden, damit nur Daten seit dem angegebenen Datum gesendet werden. Die Schnittstelle muss mit <changedsince_supported>true</changedsince_supported> antworten, damit der differenzielle Import funktioniert.
Wird "changedsince" unterstützt, erfolgt am Schluss des Imports der Aufruf mit dem URL-Parameter "checksourceids" (Kommaseparierte Liste von "source_id"s) um mögliche Löschungen zu erfahren.
Auf die Anfrage "?checksourceids=show-YYY,a,b,c" muss von der Schnittstelle folgendermassen geantwortet werden:
<ole> <checksourceids> <delete>a,b,c</delete> </checksourceids> </ole>
Optional kann die Schnittstelle ein <source_version> senden, diese wird anschliessend vom Client bei jeder Anfrage mitgeschickt. Falls die Version unterschiedlich ist, sollte die Schnittstelle nicht auf ein "changed_since" reagieren und somit alle Daten erneut zu verfügung stellen.
Plattformen/Aggregatoren
Plattformen/Aggregatoren sollen die importierten OLE-Daten nicht als eigene Daten weitergeben, sondern immer auf den Ursprung der Daten (URL) verweisen. Dafür sieht die OLE-Schnittstelle das folgendes XML Format vor.
Auch sollen Plattformen mit eigenen Eingabenmasken die Veranstaltungsdaten mittels OLE-Schnittstelle weitergeben/veröffentlichen.
Hinto veröffentlicht seine Quellen und Veranstaltungsdaten unter https://www.hinto.ch/oleexport.
OLE Sources
<!-- This XML interface is licensed under a Creative Commons 4.0 BY-SA license, https://www.hinto.ch/olelicense.html --> <ole> <sources> <source><![CDATA[my source URL]]></source> <source><![CDATA[...]]></source> </sources> </ole>