1 Format
Eine Visitenkarte wird durch ein JSON-Objekt repräsentiert. Dieses JSON-Objekt beinhaltet obligatorische wie optionale Schlüssel/Werte-Paare.
Neben allgemeinen Informationen zur Applikation werden auch die speziellen Services mitgeteilt, die extern nutzbar sind (Suche, Harvesting, Tools).
Die Visitenkarte einer Applikation kann auf zwei Wegen bereitgestellt werden. Zum einen als API-Endpunkt, zum anderen eingebettet in die Startseite im JSON-LD Format. Die URLs von Endpunkt bzw. Startseite werden dann, nach Registrierung in einem Adressbuch, abgefragt und die resultierenden Inhalte ausgewertet.
1.1 API-Endpunkt
Der API-Endpunkt ist über eine gleichbleibende URL von externen Systemen abrufbar. Beim Aufruf dieser URL generiert die angefragte Applikation ihre Visitenkarte im JSON Format.
Es sollte der entsprechende Content-Type Header gesetzt werden:
Content-Type: application/json
1.2 JSON-LD
Das generierte JSON Objekt kann auch als Metadatum in die Startseite der Applikation eingebaut werden. Dazu wird es in ein script tag vornehmlich im head-Bereich eingebettet:
<script type="application/ld+json"> [...] </script>
2 Vokabular/Datenstruktur
Als Vokabular für eine Visitenkarte dient schema.org. Alle Einträge können auf standardisierte Typen und Properties abgebildet werden. Im Folgenden wird die Struktur der Visitenkarte beschrieben. Nebst einer Kurzbeschreibung wird angegeben, ob der Wert eine Pflichtangabe ist und um welchen Typ es sich handelt (mit Bezug zu schema.org). Wenn erforderlich wird der Wertebereich festgelegt und kurze Beispiele gegeben.
identifier
Eindeutiger Bezeichner für den Dienst
Pflichtfeld: ja
Typ: URL (Thing > Property > identifier)
name
Name des Dienstes
Pflichtfeld: ja
Typ: String (Thing > Property > name)
url
URL unter der die Visitenkarte abrufbar ist (API/JSON-LD)
Pflicht: js
Typ: URL (Thing > Property > url)
Bemerkung: Zur Aktualisierung der Visitenkarte
image
Icon des Dienstes
Pflicht: nein
Typ: URL (Thing > Property > image)
Bemerkung: Kann genutzt werden um beispielsweise Suchergebnisse zu kennzeichnen
logo
Logo des Dienstes
Pflicht: nein
Typ: URL (Thing > Property > image > logo)
inLanguage
Sprache(n) des Hauptangebotes
Pflicht: nein
Typ: [] String
Format: IETF BCP 47
description
Beschreibung des Dienstes
Pflicht: nein
Typ: String (Thing > Property > description)
serviceType
Art des Services
Pflicht: ja
Typ: [] String (Thing > Intangible > Service)
Wertebereich
CMS
LCMS
LMS
PLE
LOR
Repository
Referatory
Tool
LTI
Authoring-Tool
Portfolio
Wiki
Service (ohne UI)
others
audience
Zielgruppe(n) des Angebotes
Pflicht: nein
Typ: [] EducationalAudience (Thing > Intangible > Audience > EducationalAudience)
Bsp: "audience": {
"@type": "EducationalAudience",
"educationalRole": "teacher"
}category
Klassifikation der Inhalte
Pflicht: nein
Typ: [] String (Thing > Intangible > Audience > EducationalAudience)
isAccessibleForFree
Sind Inhalte oder Dienste frei (ohne Authentifizierung) verfügbar
Pflicht: nein
Typ: Boolean (Thing > Property > isAccessibleForFree)
provider
Anbeiter des Dienstes
Pflicht: ja
Typ: [] provider (Thing > Property > provider)
startDate
Launch-Datum des Dienstes
Pflicht: nein
Typ: date (Thing > Property > startDate)
Fomat: ISO 8601
availableChannel
Services, die angeboten werden
Pflicht: ja
Typ: [] ServiceChannel (Thing > Property > availableChannel)
Bsp: {
"@type":"ServiceChannel",
"serviceUrl":"plaground.de/OAI",
"providesService":{
"@type":"Service",
"availableLanguage": ["de"],
"serviceType":"OAI",
"termsOfService":"Dokumentation"
},
}Wertebereich “serviceType”
Search
Sitemap
OAI
Statistics
Generic_Api
version
Version der Visitenkarte
Pflicht: ja
Typ: Integer (thing > property > version)
dateModified
Letztes Änderungsdatum der Visitenkarte
Pflicht: ja
Typ: date (Thing > Property > dateModified)
Fomat: ISO 8601
license
Lizens(en) der angebotenen Inhalte
Pficht: nein
Typ: [] String (Thing > Property > license)
sameAs
Zugehörige Webseiten (Github, Docker, ...)
Pflicht: nein
Typ: [] URL (Thing > Property > sameAs)
3 Beispiel
{ "@context":"http://schema.org/", "id":"https://playground.oer-contentbuffet.info/edu-sharing/", "type":"Service", "name":"Jointly OER Playground", "url":"https://playground.oer-contentbuffet.info/edu-sharing/", "image":"https://playground.oer-contentbuffet.info/edu-sharing/assets/images/sources/home.png", "logo":"https://playground.oer-contentbuffet.info/edu-sharing/assets/images/edu-white-alpha.svg", "inLanguage":[ "de", "en" ], "description":"Das Verbundprojekt JOINTLY unterstützt OER-Akteure bei der Entwicklung und Verbreitung ihrer offenen Bildungsmaterialien. Es vermittelt die Beratung durch ExpertInnen zu Recht, Produktion, Didaktik und IT und organisiert Kooperationsaktivitäten zwischen OER-Akteuren. JOINTLY entwickelt gemeinschaftlich OER-förderliche Softwarewerkzeuge sowie Arbeits- und Vertriebsinstrumente.", "additionalType":"Repository", "audience":[ { "type":"EducationalAudience", "educationalRole":{ "id":"http://purl.org/dcx/lrmi-vocabs/educationalAudienceRole/teacher", "label":"Teacher" } }, { "type":"EducationalAudience", "educationalRole":{ "id":"http://purl.org/dcx/lrmi-vocabs/educationalAudienceRole/peerTutor", "label":"Peer Tutor" } } ], "about":{ "id":"https://w3id.org/class/esc/n0541", "label":"Mathematik" }, "isAccessibleForFree":true, "provider":[ { "type":"Organization", "name":"JOINTLY – Qualifizierung und kooperative Unterstützung für OER – ein Buffet der Kooperation", "email":"info@jointly.info", "location":{ "type":"Place", "geo":{ "longitude":11.3271834, "latitude":50.9736279 }, "address":{ "type":"PostalAddress", "addressCountry":"DE", "streetAddress":"Bauhausstraße 7c", "postalCode":"99423", "addressLocality":"Weimar" } } } ], "startDate":"2017-06-01", "availableChannel":[ { "type":"ServiceChannel", "additionalType":"OAI-PMH Interface", "serviceUrl":"https://playground.oer-contentbuffet.info/oai", "availableLanguage":[ "de", "en" ] }, { "type":"ServiceChannel", "additionalType":"WebAPI", "serviceUrl":"https://playground.oer-contentbuffet.info/edu-sharing/rest", "availableLanguage":[ "de", "en" ], "documentation":"https://playground.oer-contentbuffet.info/edu-sharing/swagger/index.html" } ], "license":[ "https://creativecommons.org/licenses/by-sa/4.0/deed.de", "https://creativecommons.org/licenses/by/4.0/deed.de" ], "version":"1", "dateModified":"2019-01-22", "sameAs":[ "https://jointly.info/", "https://twitter.com/OER_JOINTLY" ] }
3. Conformance Testing
Nachdem 2. endgültig abgestimmt, wird ein JSON Schema zur Validierung erstellt (s. AP https://git.io/fAJNd )
4. Nomenklatur
API Application Programming Interface
DC Dublin Core
LOM Learning Object Metadata
LOR Learning Object Repository
DOI Digital Object Identifier
DRI Digital Repositories Interoperability
GUID Globally Unique Identifier
HTTP Hypertext Transfer Protocol
JSON JavaScript Object Notation
JSON-LD JavaScript Object Notation for Linked Data
OAI-PMH Open Archives Initiative – Protocol for Metadata Harvesting
W3C World Wide Web Consortium
Referenzen und Links
https://www.imsglobal.org/metadata/index.html
http://www.openarchives.org/rs/1.1/resourcesync
https://www.openarchives.org/pmh/
http://lrmi.dublincore.org/specifications/
https://www.sitemaps.org/protocol.html
http://www.opensearch.org/Home
http://osid.org/specifications/osid/repository/RepositoryProfile.html