Dieses Repository enthält Skripte zur Annahme, Prüfung, Bereinigung und Einspielung von Daten in den Knowledge-Graphen von NFDI4Objects. Bei den Daten handelt es sich zum einen um Lieferungen von Forschungsdaten und zum anderen um Ontologien und andere Vokabulare. Forschungsdaten müssen in LIDO-XML oder in RDF vorliegen.
git clone https://github.com/nfdi4objects/n4o-import.git && cd n4o-import
Benötigt werden Standard-Kommandozeilenwerkzeuge (git, grep...) sowie rapper, xmllint, xmlstarlet, jq und Python 3. Unter Ubuntu lassen sie sich folgendermaßen installieren:
sudo apt-get install raptor2-utils libxml2-utils xmlstarlet jq python3
Darüber hinaus muss Node mindestens in Version 18, besser 20 installiert sein (Empfehlung zur Installation: nvm).
Zusätzliche Abhängigkeiten werden anschließend mit make update
installiert. Dies beinhaltet:
npm install
)Schließlich müssen als Backend ein lokaler Triple-Store (bislang unterstützt: Fuseki) und eine Property-Graph-Datenbank (bislang unterstützt: Neo4J) vorhanden sein. In Fuseki muss der Default-Graph mit folgender Einstellung in /etc/fuseki/configuration/n4o-rdf-import.ttl
als Union-Graph konfiguriert werden:
:tdb_dataset_readwrite tdb2:unionDefaultGraph true;
Alle zu importierenden Forschungsdaten müssen genau einer "Sammlung" zugeordnet sein. Eine Sammlung im Sinne des Import ist eine Menge von Daten in LIDO oder RDF, die als ganzes importiert und aktualisiert werden kann. Zusätzlich müssen Sammlungen einem übergreifenden Forschungsdaten-Repository zugeordnet sein. Die Verwaltung von Sammlungen geschieht derzeit über das git-Repository n4o-databases.
Weitere Anforderungen an Datenlieferungen sind im Handbuch des N4O Graph beschrieben.
Alle offiziell unterstützen Terminologien (Normdateien und Ontologien) sind ebenfalls im Repository n4o-terminologies aufgeführt. Sie werden gesondert in den Knowledge Graphen eingespielt.
Die Datenannahme und Prüfung beinhaltet:
Beispiele: (könnten ins Handbuch verschoben werden)
Die Datenbank Objekte im Netz enthält mehrere Teil-Sammlungen, die einzeln übernommen werden, beispielsweise die Musikinstrumente-Sammlung (Sammlungs-ID 4).
Das virtuelle Münzportal KENOM ist eine Forschungsdatenbank deren Inhalt als ganzes übernommen wird (Sammlungs-ID 7).
Der Datensatz Ogham Data wurde unabhängig von einer Forschungsdatenbank im allgemeinen Repository Zenodo unter der DOI https://doi.org/10.5281/zenodo.4765603 publiziert (Sammlungs-ID 9) und wird einzeln übernommen.
Zur Durchführung der Datenannahme muss eine Lieferung in Form einer Datei irgendwo im lokalen Dateisystem vorliegen. Es empfiehlt sich, die Datei im Verzeichnis inbox
abzulegen, damit sie bei Bedarf für weitere Prüfungen zur Verfügung gestellt werden kann. Das Skript receive
erwartet eine vorab definierte Sammlungs-ID und die entsprechende RDF/Turtle- oder LIDO-XML-Datei.
Die empfangenen RDF- bzw. LIDO-Daten werden syntaktisch geprüft und rudimentär
bereinigt in einem Unterverzeichnis von import
mit der jeweiligen
Sammlungs-ID abgelegt. Das betreffende Import-Verzeichnis enthält verschiedene
Report-Dateien mit Statistiken und im Erfolgsfall die Datei filtered.nt
für
geprüfte und bereinigte RDF-Daten bzw. die Datei valid.xml
für geprüfte
LIDO-Daten.
Darüber hinaus wird für RDF-Daten eine Statistik der verwendeten RDF-Properties und der RDF-Namensräume von Subjekt- und Objekt-URIs erstellt. Letztere werden mit bekannten Namensräumen abgeglichen (siehe n4o-terminologies).
./download-zenodo https://doi.org/10.5281/zenodo.5642751
Legt Forschunsgdaten im Verzeichnis inbox/zenodo-5642751
ab.
./extract-zenodo-rdf inbox/zenodo-5642751
Erzeugt die Datei inbox/zenodo-5642751/triples.nt
./receive 10 inbox/zenodo-5642751/triples.nt
Das Einspielen der bereinigten RDF-Daten als Named Graph in einen lokalen Fuseki RDF-Triple-Store bzw. das Konvertieren der LIDO-XML-Daten zur Einspielung in den gemeinsamen Knowledge Graphen erfolgt mit folgenden Skripten.
Mit dem Skript load-rdf
können Sammlungen und Informationen über Sammlungen
(sources) in einen lokalen RDF-Triple-Store (Fuseki) geladen werden, wobei die
vorhandenen RDF-Daten der Sammlung jeweils überschrieben werden. Beispiel:
./load-rdf 4
Vor dem Einspielen der RDF-Daten in einen Graphen mit der jeweiligen Sammlungs-URI (hier https://graph.nfdi4objects.net/collection/4) wird der Graph https://graph.nfdi4objects.net/collection/ mit Verwaltungsdaten über die Sammlungen aktualisiert. Diese Metadaten können auch folgendermaßen unabhängig von den eigentlichen Forschungsdaten aktualisiert werden:
./load-rdf-metadata 4
Zum Löschen von Graphen kann die Fuseki-Weboberfläche mit dem update
Endpunkt und dem Kommando DROP GRAPH <...>
verwendet werden, allerdings wird der Graph mit den Verwaltungsdaten dabei nicht aktualisiert!
Neben der RDF-Kodierung sollen die Daten oder Teile davon in einen Property-Graphen überführt und dort mit anderen Daten zusammengeführt werden. Siehe dazu das Code-Repository https://github.com/nfdi4objects/n4o-property-graph/.
Noch in Arbeit
Abrufen von Informationen über die für N4O relevanten Vokabulare:
make terminologies
Aktualisieren des Graph https://graph.nfdi4objects.net/terminology/ mit den Angaben über die für N4O relevanten Vokabulare im Triple Store:
./load-terminologies-metadata
Zum Import eines ausgewählten Vokabulars dient das Skript load-terminology
. Dabei müssen eine BARTOC-URI und eine URL zum Herunterladen des Vokabulars in RDF angegeben werden. Optional kann zusätzlich das RDF-Format angegeben werden wenn es sich nicht aus der URL ergibt. Unterstützt werden N-Triples (nt
), Turtle (ttl
), RDF/XML (xml
oder rdf
) und JSKOS als JSON-LD (ndjson
oder jskos
). Beispiel:
./load-terminology http://bartoc.org/en/node/1683 https://n2t.net/ark:/99152/p0dataset.ttl
./load-terminology http://bartoc.org/en/node/1048 'https://vocabs.acdh.oeaw.ac.at/rest/v1/hsinstruments_thesaurus/data?format=text/turtle' ttl
./load-terminology http://bartoc.org/en/node/20533 https://api.dante.gbv.de/export/download/kenom_material/def
ault/kenom_material__default.jskos.ndjson
Im Verzeichnis wikidata
werden RDF-Daten aus Wikidata vorgehalten und können mit load-wikidata
in den Triple-Store geladen werden.
Das Skript extract-wikidata
ermittelt Wikidata-Entity-IDs aus der Liste von Datenbanken und läd diese von Wikidata.
./extract-wikidata
./load-wikidata