diff --git a/gatsby/lobid/gatsby-config.js b/gatsby/lobid/gatsby-config.js
index ab84732..5b2851c 100644
--- a/gatsby/lobid/gatsby-config.js
+++ b/gatsby/lobid/gatsby-config.js
@@ -31,6 +31,12 @@ module.exports = {
path: `${__dirname}/static/product/`,
}
},
+ {
+ resolve: `gatsby-source-filesystem`,
+ options: {
+ path: `${__dirname}/static/project/`,
+ }
+ },
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`
],
diff --git a/gatsby/lobid/gatsby-node.js b/gatsby/lobid/gatsby-node.js
index 67073d7..fe97aca 100644
--- a/gatsby/lobid/gatsby-node.js
+++ b/gatsby/lobid/gatsby-node.js
@@ -63,6 +63,27 @@ exports.createPages = async ({ graphql, actions }) => {
.map(id => id.slice(id.lastIndexOf("/") + 1, id.lastIndexOf(".")));
addPages(shortProductIds, "product", "./src/templates/product.js", createPage);
+ // Pages for individual project files in /project
+
+ const {
+ data: { projects },
+ } = await graphql(`
+ {
+ projects: allProjectJson {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ `);
+
+ const shortProjectIds = projects.edges.map(e => e.node.id)
+ .filter(id => id.indexOf("/") != -1)
+ .map(id => id.slice(id.lastIndexOf("/") + 1));
+ addPages(shortProjectIds, "project", "./src/templates/project.js", createPage);
+
};
// Create `fields.jsonFile` fields to link to static publication JSON files
@@ -86,11 +107,11 @@ exports.onCreateNode = ({ node, getNode, actions }) => {
function addPages(ids, prefix, template, createPage) {
const unique = [...new Set(ids)];
- unique.forEach((member) => {
+ unique.forEach((entityId) => {
createPage({
- path: `/${prefix}/${member}`,
+ path: `/${prefix}/${entityId}`,
component: path.resolve(template),
- context: { id: member },
+ context: { id: entityId },
});
});
}
diff --git a/gatsby/lobid/src/components/helpers.js b/gatsby/lobid/src/components/helpers.js
index 76899cd..158c7ea 100644
--- a/gatsby/lobid/src/components/helpers.js
+++ b/gatsby/lobid/src/components/helpers.js
@@ -1,3 +1,7 @@
-export function simpleId(url) {
+export function simpleProductId(url) {
return url.slice(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
}
+
+export function simpleProjectId(url) {
+ return url.slice(url.lastIndexOf('/')+1);
+}
diff --git a/gatsby/lobid/src/components/product.html.js b/gatsby/lobid/src/components/product.html.js
index 6e699b9..d75dbe0 100644
--- a/gatsby/lobid/src/components/product.html.js
+++ b/gatsby/lobid/src/components/product.html.js
@@ -1,6 +1,6 @@
import React from "react";
import md5 from 'md5';
-import { simpleId } from './helpers.js'
+import { simpleProductId } from './helpers.js'
import Header from "./header.html";
import Footer from "./footer.html";
@@ -42,14 +42,14 @@ export class Product extends React.Component {
{this.props.product.name.label}
- {this.props.product.slogan && [this.props.product.slogan].map(s => — {s.label})}
-
+ {this.props.product.slogan && [this.props.product.slogan].map(s => — {s.label})}
+
-
{this.props.product.description.label}
+
{this.props.product.description.label}
| |
diff --git a/gatsby/lobid/src/components/project.html.js b/gatsby/lobid/src/components/project.html.js
new file mode 100644
index 0000000..9f961fc
--- /dev/null
+++ b/gatsby/lobid/src/components/project.html.js
@@ -0,0 +1,79 @@
+import React from "react";
+import md5 from 'md5';
+import { simpleProjectId } from './helpers.js'
+
+import Header from "./header.html";
+import Footer from "./footer.html";
+import Publications from "./publications.html";
+
+import "./css/lobid.css";
+import "./css/bootstrap.min.css";
+import "./css/font-awesome.min.css";
+
+import jsonLdPng from "./images/json-ld.png";
+
+export class Project extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.props = props;
+ }
+
+ asLinks(field) {
+ return this.props.project[field] && {this.props[field]} | {this.props.project[field].map((link) =>
+
+ )} |
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+ {this.props.project.name.label}
+
+ {this.props.project.alternateName && this.props.project.alternateName.map(s => | {s})}
+
+
+
+
+
+
+
{this.props.project.description.label}
+
+
+ | |
+
+
+ Website | {this.props.project.id} |
+ {this.props.project.endDate && Abgeschlossen | {this.props.project.endDate} |
}
+ {this.asLinks("hasPart")}
+ {this.asLinks("isBasedOn")}
+ {this.asLinks("isRelatedTo")}
+ {this.asLinks("enhances")}
+ {this.asLinks("result")}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/gatsby/lobid/src/components/publications.html.js b/gatsby/lobid/src/components/publications.html.js
index 9a4ab6e..bb3583f 100644
--- a/gatsby/lobid/src/components/publications.html.js
+++ b/gatsby/lobid/src/components/publications.html.js
@@ -1,5 +1,5 @@
import React from "react"
-import { simpleId } from './helpers.js'
+import { simpleProductId } from './helpers.js'
import jsonLdPng from "./images/json-ld.png";
@@ -20,7 +20,7 @@ export default class Publications extends React.Component {
{publication.datePublished} |
{publication.name.de || publication.name.en || publication.id} |
{publication.about && publication.about.map(a =>
- {simpleId(a.id)}
+ {simpleProductId(a.id)}
)} |
{publication.type} |
|
diff --git a/gatsby/lobid/src/components/team.html.js b/gatsby/lobid/src/components/team.html.js
index 32583b9..cc62096 100644
--- a/gatsby/lobid/src/components/team.html.js
+++ b/gatsby/lobid/src/components/team.html.js
@@ -1,6 +1,6 @@
import React from "react";
import md5 from 'md5';
-import { simpleId } from './helpers.js'
+import { simpleProductId, simpleProjectId } from './helpers.js'
import Header from "./header.html";
import Footer from "./footer.html";
@@ -172,7 +172,7 @@ export class Team extends React.Component {
{this.getImage(offer.id, details.node.image)}
-
+
{offer.name}
@@ -180,6 +180,22 @@ export class Team extends React.Component {
)}
+
+ {this.props.projectsName}
+
+ {this.props.projects
+ .map((details) =>
+
+ )}
diff --git a/gatsby/lobid/src/templates/project.js b/gatsby/lobid/src/templates/project.js
new file mode 100644
index 0000000..a8fcd3f
--- /dev/null
+++ b/gatsby/lobid/src/templates/project.js
@@ -0,0 +1,80 @@
+import React from "react";
+import { graphql } from "gatsby";
+import { Project } from "../components/project.html";
+
+export default function ProjectPage({ data, location, pageContext }) {
+ const project = data.allFile.edges.slice(-1).pop().node.childProjectJson
+ return ( edge.node)
+ .filter(p => p.about && p.about.find(a => a.id.includes(pageContext.id)))
+ .sort((a, b) => b.datePublished.localeCompare(a.datePublished))
+ }
+ contactName="Kontakt"
+ publications="Publikationen"
+ language="English"
+ teamLink="/team-de"
+ hasPart="Besteht aus"
+ isBasedOn="Basiert auf"
+ isRelatedTo="Bezug"
+ enhances="Erweitert"
+ result="Ergebnis"
+ companyDetails="Impressum"
+ privacy="Datenschutz"
+ contactPointId="mailto:semweb@hbz-nrw.de"
+ />);
+}
+
+export const query = graphql`
+ query ProjectQuery($id: String!) {
+ allFile (filter: { name: { eq : $id }}) {
+ edges {
+ node {
+ childProjectJson {
+ name {
+ label: de
+ }
+ description {
+ label: de
+ }
+ id
+ enhances {
+ id
+ }
+ isBasedOn {
+ id
+ }
+ alternateName
+ endDate
+ result {
+ id
+ }
+ }
+ }
+ }
+ }
+ allPublicationJson {
+ edges {
+ node {
+ id
+ type
+ creator {
+ id
+ }
+ name {
+ de
+ en
+ }
+ about {
+ id
+ }
+ datePublished
+ fields {
+ jsonFile
+ }
+ }
+ }
+ }
+ }
+`;
diff --git a/gatsby/lobid/src/templates/team.js b/gatsby/lobid/src/templates/team.js
index 620f316..4efc8b3 100644
--- a/gatsby/lobid/src/templates/team.js
+++ b/gatsby/lobid/src/templates/team.js
@@ -8,6 +8,7 @@ export default ({ data, location, pageContext }) => {
team={data.dataJson}
members={data.allTeamJson.edges}
products={data.allProductJson.edges}
+ projects={data.allProjectJson.edges}
lang={pageContext.lang}
contactName={pageContext.lang==="de"?"Kontakt":"Contact"}
subtitle={pageContext.lang==="de"?"Dateninfrastruktur für Bibliotheken":"Data infrastructure for libraries"}
@@ -17,6 +18,7 @@ export default ({ data, location, pageContext }) => {
languageLink={pageContext.lang==="de"?"/team-en":"/team-de"}
teamLink={pageContext.lang==="de"?"/team-de":"/team-en"}
makesOfferName={pageContext.lang==="de"?"Produkte":"Products"}
+ projectsName={pageContext.lang==="de"?"Projekte":"Projects"}
memberName={pageContext.lang==="de"?"Mitglieder":"Members"}
memberFormerName={pageContext.lang==="de"?"Ehemalige":"Former members"}
companyDetails={pageContext.lang==="de"?"Impressum":"Imprint"}
@@ -93,5 +95,17 @@ export const query = graphql`
}
}
}
+ allProjectJson {
+ edges {
+ node {
+ id
+ name {
+ de
+ en
+ }
+ alternateName
+ }
+ }
+ }
}
`;
diff --git a/gatsby/lobid/static/project/Alma+Migration.json b/gatsby/lobid/static/project/Alma+Migration.json
new file mode 100644
index 0000000..f8bbba7
--- /dev/null
+++ b/gatsby/lobid/static/project/Alma+Migration.json
@@ -0,0 +1,26 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://service-wiki.hbz-nrw.de/display/SEM/Alma+Migration",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "lobid/Alma-Migration",
+ "en": "lobid/Alma Migration"
+ },
+ "description": {
+ "en": "Switch lobid-resources ETL and indexing from Aleph to Alma Marc21 XML",
+ "de": "Der schrittweise Umstieg der hbz-Verbundbibliotheken auf das Bibliotheksmanagementsystem Alma im Rahmen des GO:AL-Projekts (GOAL) bringt auch für die Gruppe Offene Infrastruktur dauerhaft Aufgaben mit sich: lobid indexiert unter anderem die Verbunddaten des hbz, die nun schrittweise nach Alma wandern. Demenstprechend müssen sämtliche Prozesse zum Extrahieren, Transformieren und Laden (ETL) der Verbunddaten angepasst werden, damit sie (auch) auf Basis von Alma-Daten funktionieren."
+ },
+ "url": "https://github.com/hbz/lobid-resources/milestone/1",
+ "enhances": [
+ {
+ "id": "https://lobid.org"
+ }
+ ],
+ "isBasedOn": [
+ {
+ "id": "https://metafacture.org"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/lrmi-profile.json b/gatsby/lobid/static/project/lrmi-profile.json
new file mode 100644
index 0000000..315f099
--- /dev/null
+++ b/gatsby/lobid/static/project/lrmi-profile.json
@@ -0,0 +1,20 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/dini-ag-kim/lrmi-profile",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "LRMI-Metadatenprofil",
+ "en": "LRMI Metadata Profile"
+ },
+ "description": {
+ "en": "A schema.org/LRMI-based profile for describing OER developed and published as JSON Schema",
+ "de": "In diesem Projekt wird die erste offizielle Version eines Metadatenprofils für die web-konforme Publikation von Metadaten für Lehr- und Lernressourcen im deutschsprachigen Raum entwickelt. Es basiert auf dem schema.org-Vokabular mit seinen LRMI_Erweiterungen (Learning Resource Metadata Initiative) und fokussiert auf die Publikation der Metadaten als JSON-LD.\n\nDas Profil ist Basis für das Index-Schema im OERSI-Projekt (OEI) und soll als Vorgabe dienen für die Vergabe von Metadaten für OERs, die mit Fördergeldern des Landes NRW erstellt werden.\n\nFür die Validierung von Metadaten im Hinblick auf ihre Konformität zum Profil wird ein JSON Schema gepflegt."
+ },
+ "isBasedOn": [
+ {
+ "id": "https://github.com/dini-ag-kim/oer-stoeberspecs"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/metafacture-fix.json b/gatsby/lobid/static/project/metafacture-fix.json
new file mode 100644
index 0000000..037c78a
--- /dev/null
+++ b/gatsby/lobid/static/project/metafacture-fix.json
@@ -0,0 +1,21 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/metafacture/metafacture-fix",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "Metafacture-Fix",
+ "en": "Metafacture-Fix"
+ },
+ "description": {
+ "en": "Implementation of the Fix language for Metafacture as an alternative to configuring data transformations with Metamorph",
+ "de": "Ziel des Projekts ist die Erleichterung der Metafacture-Konfiguration und damit die Erweiterung der Zielgruppe um Bibliothekar*innen und andere Metadatenfachleute, die keinen Programmierhintergrund haben.\n\nDies geschieht durch die Implementierung der Fix-DSL für die Konfiguration von Metadatenmappings als Alternative zum XML-basierten Metamorph. Zunächst wird die Erweiterung zur produktiven Nutzung im OERSI-Kontext und anderen neu zu erstellenden ETL-Prozessen entwickelt und dann auf die komplexeren Prozesse – etwa im lobid-Kontext – ausgeweitet.\n\nIn einem nächsten Schritt – voraussichtlich 2022 – wird an einer Standardisierung der Fix-Sprache gearbeitet mit dem Ziel, Kompatibilität zwischen Metafacture und Catmandu zu erreichen."
+ },
+ "url": "https://github.com/metafacture/metafacture-fix",
+ "enhances": [
+ {
+ "id": "https://metafacture.org"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/metafacture-playground.json b/gatsby/lobid/static/project/metafacture-playground.json
new file mode 100644
index 0000000..9b99387
--- /dev/null
+++ b/gatsby/lobid/static/project/metafacture-playground.json
@@ -0,0 +1,26 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/metafacture/metafacture-playground",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "Metafacture Playground",
+ "en": "Metafacture Playground"
+ },
+ "description": {
+ "en": "This projects aims to provide a web application to play around with Metafactures languages Fix and Flux.",
+ "de": "Der Metafacture Playground ist eine browserbasierte Umgebung, um an der Konfiguration von ETL-Prozessen mittels Metafacture zu arbeiten. Der Playground nutzt die [Metafacture-Fix-Erweiterung (MFF)](https://github.com/metafacture/metafacture-fix). Kurzfristig soll der Playground zum Teilen von ETL-Konfigurationen via URL und für aktive Arbeit in metafacture-Workshops Verwendung finden.\n\nMittelfristiges Ziel ist der Aufbau einer Plattform zum Teilen von ETL-Konfigurationen, um das Auffinden bestehender Lösungen und deren Nachnutzung zu erleichtern und damit Parallelarbeiten zu vermeiden."
+ },
+ "url": "https://github.com/metafacture/metafacture-playground",
+ "enhances": [
+ {
+ "id": "https://metafacture.org"
+ }
+ ],
+ "isBasedOn": [
+ {
+ "id": "https://github.com/metafacture/metafacture-fix"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/oer-stoeberspecs.json b/gatsby/lobid/static/project/oer-stoeberspecs.json
new file mode 100644
index 0000000..c9d9093
--- /dev/null
+++ b/gatsby/lobid/static/project/oer-stoeberspecs.json
@@ -0,0 +1,22 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/dini-ag-kim/oer-stoeberspecs",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "StöberSpecs",
+ "en": "StöberSpecs"
+ },
+ "description": {
+ "de": "Im Rahmen des Projektes StöberSpecs entstehen Werkzeuge und Prozesse für die gemeinsame Entwicklung von Spezifikationen (engl. Kurzfassung „Specs“) von Metadatenstandards, die das „Aufstöbern“ von Open Educational Resources (OER) erleichtern sollen. Das Projekt wird gefördert durch das Ministerium für Kultur und Wissenschaft und durchgeführt in Zusammenarbeit mit Open Culture Consulting.\n\nSeinen Ausgangspunkt hatte das Projekt in der OER-Repo-AG der Bundesländer, die ihren Auftrag aus der AG \"Digitalisierung im Hochschulbereich\" des Hochschulausschusses der KMK hat. Dort wurde 2019 ein erster OER-Metadatenstandard entwickelt, allerdings in einem eher geschlossenen Verfahren. Als öffentliches Forum zur gemeinsamen fortdauernden, transparenten und nachhaltigen Entwicklung und Pflege von Metadatenstandards wurde die seit 2013 bestehende OER-Metadatengruppe der DINI AG KIM gewählt, die 2017 mit der Jointly-AG-Metadaten fusionierte.\n\nFür die Standardisierung von kontrollierten Vokabularen setzt das Projekt auf das SKOS-Datenmodell (Simple Knowledge Organization Systems) und liefert als ein Ergebnis eine [deutschsprachige SKOS-Einführung](https://dini-ag-kim.github.io/skos-einfuehrung/). Zur Publikation und Pflege von SKOS-Vokabularen greift das Projekt auf die entsprechenden SkoHub-Entwicklungen zurück ([SkoHub Vocabs](https://github.com/skohub-io/skohub-vocabs)).",
+ "en": "Project to develop tools and processes for the standardization of metadata profiles and controlled vocabularies within KI;."
+ },
+ "startDate": "2019-11-01",
+ "endDate": "2020-01-31",
+ "isBasedOn": [
+ {
+ "id": "https://skohub.io"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/oersi.json b/gatsby/lobid/static/project/oersi.json
new file mode 100644
index 0000000..db16fbf
--- /dev/null
+++ b/gatsby/lobid/static/project/oersi.json
@@ -0,0 +1,27 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://gitlab.com/oersi",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "OER Search Index",
+ "en": "OER Search Index"
+ },
+ "alternateName": [
+ "OERSI"
+ ],
+ "description": {
+ "de": "Ein gemeinsames Projekt der TIB Hannover und des hbz zum Aufbau eines offenen Suchindex für Bildungsressourcen",
+ "en": "Common project by TIB Hannover and hbz to create an open search index for educational resources"
+ },
+ "url": "https://oersi.de",
+ "isBasedOn": [
+ {
+ "id": "https://metafacture.org"
+ },
+ {
+ "id": "https://github.com/dini-ag-kim/lrmi-profile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/rpb.json b/gatsby/lobid/static/project/rpb.json
new file mode 100644
index 0000000..e35f5b6
--- /dev/null
+++ b/gatsby/lobid/static/project/rpb.json
@@ -0,0 +1,31 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/hbz/rpb",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "Rheinland-Pfälzische Bibliographie",
+ "en": "Bibliography of Rhineland-Platinate"
+ },
+ "description": {
+ "en": "Migrating the RPB from Allegro to a new cataloging and web presentation environment",
+ "de": "Das Landesbibliothekszentrum Rheinland-Pfalz hat das hbz beauftragt, die Rheinland-Pfälzische Bibliographie (RPB) von Allegro in eine neues System zu migrieren, das Erfassung und Präsentation der Bibliographie im Web abdeckt. Auf Basis der Erfahrungen mit der Nordrhein-Westfälischen Bibliographie (NWBib) und mit einer Erweiterung der SkoHub-Software um ein weiteres Modul zur Erfassung, Speicherung und Pflege von Linked Data wird das Projekt umgesetzt. Mit Metafacture werden zunächst die Allegro-Daten nach Linked Date überführt und indexiert und parallel an einer Erfassungs -und Speicherschicht gearbeitet."
+ },
+ "startDate": "2021-04-01",
+ "endDate": "2022-03-31",
+ "isBasedOn": [
+ {
+ "id": "https://metafacture.org"
+ },
+ {
+ "id": "https://skohub.io"
+ },
+ {
+ "id": "https://nwbib.de"
+ },
+ {
+ "id": "https://lobid.org"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gatsby/lobid/static/project/skohub-io.json b/gatsby/lobid/static/project/skohub-io.json
new file mode 100644
index 0000000..f0b3d5a
--- /dev/null
+++ b/gatsby/lobid/static/project/skohub-io.json
@@ -0,0 +1,22 @@
+{
+ "@context": "https://schema.org/",
+ "id": "https://github.com/skohub-io",
+ "type": [
+ "Project"
+ ],
+ "name": {
+ "de": "SkoHub",
+ "en": "SkoHub"
+ },
+ "description": {
+ "de": "Kontrollierte Vokabulare, Normdaten und andere Wissensorganisationssysteme sind seit langem ein zentraler Bestandteil der Wissensorganisation. Sie werden häufig von mehreren, unterschiedlichen Institutionen bei der Erschließung von Ressourcen verwendet und verbinden somit indirekt Ressourcen zum gleichen Thema. Damit alle Einträge zu einem Thema tatsächlich gefunden werden können, müssen meist die einzelnen Kataloge bzw. Datenbanken abgefragt oder übergreifende Suchindizes aufgebaut werden. Dieser Ansatz bringt viele Schwierigkeiten mit sich.\n\nDer strategische Ansatz von SkoHub verlagert die Sach- und Inhaltserschließung konsequent ins Web, um darauf neue, leistungsfähige Discovery-Werkzeuge aufzubauen. Innovatives Merkmal der SkoHub-Infrastruktur ist die Nutzung von bilden Wissensorganisationssystemen, eine als themenorientierte Schnittstelle zwischen Publizierenden und Wissenssuchenden. Damit wird es möglich, bestimmten Themen (im Sinne von Einträgen einer Klassifikation, eines Thesaurus etc.) zu folgen und Push-Benachrichtigungen zu bekommen, sobald irgendjemand eine Ressource mit dem entsprechenden Thema inhaltlich erschlossen hat.\n\nDas SkoHub-Projekt ist entstanden als begleitendes Projekt im Rahmen des Vorprojekt Content Marktplatz NRW und wird gefördert vom Ministerium für Kultur und Wissenschaft. Im Kontext des NRW Landesportals kann SkoHub zur Erschließung von dezentral im Web publizierten Inhalten mit hochqualitativen Metadaten benutzt werden. Für die technische Umsetzung wurde die graphthinking GmbH beauftragt.",
+ "en": "SkoHub supports a novel approach for finding content on the web. The general idea is to extend the scope of Knowledge Organization Systems (KOS) to also act as communication hubs for publishers and information seekers. In effect, SkoHub allows to follow specific subjects in order to be notified when new content about that subject is published.\n\nThe approach is realized by putting Knowledge Organization Systems online according to the SKOS standard. Additionally, they are exposed using the (social) networking protocols ActivityPub & Linked Data Notifications. This effectively turns the published vocabularies into hubs that provide structured metadata about and links to web content in real time.\n\nThe project to create a production-ready version of SkoHub has been carried out by the North-Rhine Westphalian Library Service Centre (hbz) in cooperation with graphthinking GmbH with four deliverables. The core is the back end infrastructure for publishing vocabularies on the web (Skohub Vocabs) and for receiving and pushing notifications (SkoHub PubSub). Additionally, we provide an editor to describe web resources according to a common metadata schema and to send notifications (SkoHub Editor). The editor can also be used as a browser plugin for Firefox and Chrome (SkoHub Extension)."
+ },
+ "startDate": "2019-03-06",
+ "endDate": "2020-03-31",
+ "result": [
+ {
+ "id": "https://skohub.io"
+ }
+ ]
+}
\ No newline at end of file