SPARQL
Leitfaden für vernetzte offene CORDIS-Daten
Was sind vernetzte offene Daten?
Bei vernetzten offenen Daten handelt es sich um eine Kombination aus vernetzten und offenen Daten. Vernetzte Daten bezieht sich auf maschinenlesbare Daten, die im Web gemeinsam genutzt werden, während offene Daten die freie Nutzung und Verbreitung von Daten gestattet.
Vernetzte offene Daten bieten eine Methode, um auf das dezentralisierte Web zentral zuzugreifen. Es stellt den Nutzenden die Mittel und Dienste zur Verfügung, um relevante und genaue Informationen zu finden. Durch die Kombination der Gestaltungsprinzipien vernetzter Daten mit maschinenlesbaren strukturierten Daten können vernetzte offene Daten mehr nützliche Informationen bereitstellen, die mit anderen Daten zur weiteren Auswertung verknüpft sind.
Die FAIR-Prinzipien (englische Abkürzung für auffindbar, zugänglich, interoperabel, wiederverwendbar) und das von Tim Berners-Lee beschriebene 5-Sterne-Modell für offene Daten sorgen dafür, dass Daten im Web frei geteilt und verbreitet werden können.
Als Teil der Initiative für vernetzte offene Daten ist das Resource Description Format (RDF) die wichtigste Sprache und Technologie, um Informationen über Daten auszudrücken sowie zu veröffentlichen und sie im Web miteinander zu verknüpfen. RDF gestattet die Strukturierung der Daten in Form der Dreiergruppe Subjekt-Prädikat-Objekt
EURIO-Wissensgraph
Ein Wissensgraph stellt reale Einheiten (z. B. Projekte, Organisationen, Projektergebnisse wie Projektleistungen) zusammen mit ihren Beziehungen (z. B. die Beteiligung einer Organisation an einem Projekt) und Attributen (z. B. das Startdatum eines Projekts oder die Umsatzsteuernummer einer Organisation) als ein miteinander verbundenes Netzwerk aus Knoten und Kanten dar.
Durch Wissensgraphen wird eine strukturierte, maschinenlesbare Darstellung von Daten zur Verfügung gestellt und die Integration, Verknüpfung und Wiederverwendung von Wissen gefördert. Der EURIO-Wissensgraph nutzt das Paradigma der Darstellung von Wissensgraphen, um die CORDIS-Daten in maschinenlesbare, miteinander verknüpfte Daten umzuwandeln.
Die Daten werden in Form von Dreiergruppen im Resource Description Format (RDF) veröffentlicht, die den Prinzipien vernetzter offener Daten entsprechen. Die Bedeutung der beschriebenen Einheiten ist formal durch die EUropean Information Research Ontology (EURIO) definiert. Der daraus resultierende EURIO-Wissensgraph ist ein Netzwerk miteinander verbundener RDF-Dreiergruppen, die die ursprünglichen CORDIS-Daten kodieren, und kann mit SPARQL abgefragt werden, der standardisierten Sprache für den Abruf und die Bearbeitung von Daten im RDF-Format.
Die EURIO-Ontologie
Um die Sichtbarkeit, Wiederverwendbarkeit und Zugänglichkeit von CORDIS-Inhalten zu verbessern und ihre semantische Interoperabilität zu erhöhen, hat das Amt für Veröffentlichungen der Europäischen Kommission die EUropean Research Information Ontology (EURIO) eingerichtet. EURIO ist ein konzeptionelles Datenmodell, das sich auf ein Netz bestehender Ontologien (z. B. schema.org, DINGO) und Referenzdaten (z. B. die EuroSciVoc-Taxonomie oder die NUTS-Code-Liste) stützt. Es bietet die Mittel zur Beschreibung von u. a. Verwaltungsinformationen im Zusammenhang mit Forschungsprojekten und deren Finanzhilfen, wie Beginn und Ende, Gesamtkosten und erhaltene Finanzmittel, Informationen über die beteiligten Organisationen und Personen sowie die Projektergebnisse, wie z. B. die Liste der Autorinnen und Autoren, Titel und Journalinformationen zu einer Veröffentlichung.
EURIO verwendet die OWL 2 Web Ontology Language zur formalen Definition der Bedeutung der Domänenbegriffe, die zur Beschreibung der CORDIS-Einheiten (z. B. Projekte, Organisationen), ihrer Attribute (z. B. Titel, Akronym, rechtlicher Name) und ihrer Beziehungen untereinander (z. B. die Beziehung zwischen einem Projekt und den beteiligten Organisationen) verwendet werden.
Die EURIO-Ontologie und ihre Dokumentation sind auf der Website EU Vocabularies zu finden.
SPARQL zur Abfrage des EURIO-Wissensgraph verwenden
SPARQL ist eine Standardabfragesprache zum Abrufen und zur Bearbeitung von Daten, die im RDF-Format gespeichert sind. Die Entwicklung und Weiterentwicklung wird von der SPARQL-Arbeitsgruppe innerhalb des W3C beaufsichtigt und ist vollständig dokumentiert und öffentlich zugänglich.
SPARQL-Abfragen basieren auf dem Abgleich von Graphmustern, d. h. dem Abgleich von Sätzen aus Dreiergruppenmustern, die konjunktive (UND) oder disjunktive (ODER) Bedingungen bilden. Dreiergruppenmuster sind wie RDF-Dreiergruppen, mit dem Unterschied, dass jedes Subjekt, Prädikat und Objekt eine Variable sein kann. Ein gegebenes SPARQL-Abfrage-Graphmuster passt zu einem Teilgraphen der abgefragten RDF-Daten, wenn RDF-Begriffe aus diesem Teilgraphen für die Variablen ersetzt werden können.
Die folgenden Beispiele zeigen, wie SPARQL-Abfragen konstruiert werden können, um Informationen im EURIO-Wissensgraphen zu suchen und von dort abzurufen.
Lassen Sie uns mit diesem einfachen Beispiel beginnen, um genauere Informationen zu erhalten:
Alle Projekttitel finden
Das Schlüsselwort PREFIX verknüpft ein Label mit dem IRI des Namensraums, in dem die Einheiten definiert sind; im laufenden Beispiel verwenden wir die Begriffe „Projekt“ und „Titel“, die in der EURIO-Ontologie definiert sind, deren IRI http://data.europa.eu/s66# lautet.
Die Abfrage besteht aus zwei Teilen:
- Die SELECT-Klausel legt die Variablen fest, die in den Abfrageergebnissen erscheinen sollen. In unserem Beispiel enthält ?project_title den Wert des angeforderten Projekttitels (der Name der Variablen kann bei der Nutzung selbst bestimmt werden).
- Die WHERE-Klausel liefert das mit dem EURIO-Wissensgraphen abzugleichende Graphmuster. Unser Beispiel besteht aus zwei konjunktiven Dreifachmustern, d. h. zwei Mustern, die übereinstimmen müssen:
- einem Dreifachmuster mit der Variable ?project, die ausdrückt, dass die angeforderten Projekteinheiten der Klasse eurio:Project angehören sollen.
- einem Dreifachmuster, das mit der Variablen ?project beginnt, wobei die Variable ?title die Titel dieses Projekts enthalten soll.
Die Ergebnisse werden mithilfe der Klausel ORDER BY, die nach der Klausel WHERE stehen muss, nach Titel geordnet.
Da wir davon ausgehen, dass die Ergebnisliste lang sein wird, verwenden wir die Klausel LIMIT, um nur 100 Ergebnisse anzuzeigen. Außerdem werden zu Demonstrationszwecken die ersten 1 000 Ergebnisse mit der Klausel OFFSET übersprungen.
Die vollständige Abfrage lautet wie folgt:
PREFIX eurio: <http://data.europa.eu/s66#>
SELECT ?project_title
WHERE {
?project a eurio:Project .
?project eurio:title ?project_title .
}
ORDER BY ?project_title
LIMIT 100
OFFSET 1000
Aufgrund des Titels eines Projekts könnten wir an folgenden Informationen interessiert sein:
Anfangs- und Enddaten des Projekts „taRgeted thErapy for adVanced colorEctal canceR paTients“ finden
Zu diesem Zweck geben wir diese Bedingungen in der Klausel WHERE an:
- Wir legen den Wert des Projekttitels (eurio:title) als die Zeichenfolge „taRgeted thErapy for adVanced colorEctal canceR paTients“ fest.
- Das Startdatum des Projekts ist in der Variablen ?project_start_date gespeichert.
- Das Enddatum des Projekts ist in der Variablen ?project_end_date gespeichert.
Die Abfrage lautet wie folgt:
PREFIX eurio: <http://data.europa.eu/s66#>
SELECT ?project_start_date ?project_end_date
WHERE {
?project eurio:title 'taRgeted thErapy for adVanced colorEctal canceR paTients'.
?project eurio:startDate ?project_start_date .
?project eurio:endDate ?project_end_date .
}
Mit der folgenden Abfrage können wir tiefer als mit der vorherigen Abfrage in das Projekt vordringen:
Die Teilnehmenden des Projekts „taRgeted thErapy for adVanced colorEctal canceR paTients“ und ihre Rolle im Projekt finden
Unter Berücksichtigung der von uns gewünschten Informationen geben wir diese Bedingungen in die Klausel WHERE ein:
- Wir legen den Wert des Projekttitels (eurio:title) als die Zeichenfolge „taRgeted thErapy for adVanced colorEctal canceR paTients“ fest.
- Die Rollen der am Projekt beteiligten Einrichtungen sind in der Variablen ?organisation_role gespeichert.
- Das Label der Rolle der Einrichtung ist in der Variablen ?role_label gespeichert.
- Die Variable ?organisation bezieht sich auf die dazugehörigen Teilnehmenden.
- Die Variable ?organisation_name enthält die offiziellen Bezeichnungen der Einrichtungen.
- Außerdem wird die Ausgabe mittels ORDER BY DESC(?organisation_name) alphabetisch nach ?organisation_name sortiert.
PREFIX eurio: <http://data.europa.eu/s66#>
SELECT ?organisation_name ?role_label
WHERE {
?project eurio:title 'taRgeted thErapy for adVanced colorEctal canceR paTients' .
?project eurio:hasInvolvedParty ?organisation_role .
?organisation_role eurio:roleLabel ?role_label .
?organisation_role eurio:isRoleOf ?organisation .
?organisation eurio:legalName ?organisation_name .
}
ORDER BY DESC(?organisation_name)
Da CORDIS Forschungsinformationen enthält, könnten wir auch die EuroSciVoc-Taxonomie nutzen, um unsere Ergebnisse zu filtern. EuroSciVoc ist eine mehrsprachige Taxonomie, die alle wichtigen Gebiete der Wissenschaft auf CORDIS darstellt und zur Klassifizierung der Daten dient. Sie enthält mehr als 1 000 Kategorien in sechs Sprachen (Englisch, Französisch, Deutsch, Italienisch, Polnisch und Spanisch), und jede Kategorie ist mit relevanten Schlüsselwörtern angereichert, die aus der Textbeschreibung von CORDIS-Projekten extrahiert werden.
Die nächsten beiden Abfragen zeigen, wie die daraus gewonnenen Informationen kombiniert und die Ergebnisse mithilfe von EuroSciVoc auf das Wissenschaftsgebiet der künstlichen Intelligenz beschränkt werden.
Ermitteln des Titels sowie der Anfangs- und Enddaten aller Projekte mit Teilnehmenden aus Griechenland auf dem Gebiet der künstlichen Intelligenz
Unter Berücksichtigung der von uns gewünschten Informationen geben wir diese Bedingungen in die Klausel WHERE ein:
- Die Projekte müssen in EuroSciVoc der Kategorie „künstliche Intelligenz“ zugeordnet werden. Wir finden sie über das Label des EuroSciVoc-Konzepts (?euroSciVoc_label_value), das wir auf „artificial intelligence“ setzen. Wir fügen außerdem „@en“ hinzu, um sicherzugehen, dass das englische Label des Konzepts der künstlichen Intelligenz gefunden wird.
- Um die Projekte in Griechenland zu finden, müssen wir die beteiligten Einrichtungen (die in der Variablen ?organisation gespeichert sind) finden und ihr Land abrufen, indem wir nach der Einheit eurio:Country suchen, deren eurio:name „Greece“ ist.
- Der Titel des Projekts ist in der Variablen ?project_title gespeichert.
- Das Startdatum des Projekts ist in der Variablen ?project_start_date gespeichert.
- Das Enddatum des Projekts wird in der Variablen ?project_end_date gespeichert.
Die resultierende SPARQL-Abfrage lautet wie folgt:
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT DISTINCT ?project_title ?project_start_date ?project_end_date
WHERE {
?project eurio:title ?project_title .
?project eurio:startDate ?project_start_date .
?project eurio:endDate ?project_end_date .
?project eurio:hasEuroSciVocClassification ?euroSciVoc.
?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en.
?role eurio:isInvolvedIn ?project .
?role eurio:isRoleOf ?organisation .
?organisation eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country;
eurio:name 'Greece' .
}
Ermitteln der Namen der Teilnehmenden und ihrer Funktionen für alle Projekte mit Teilnehmenden aus Griechenland auf dem Gebiet der künstlichen Intelligenz in Griechenland
Unter Berücksichtigung der von uns gewünschten Informationen erfolgt die Abfrage wie die vorherige, mit den folgenden Bedingungen in der Klausel WHERE:
- Die Projekte müssen in EuroSciVoc der Kategorie „künstliche Intelligenz“ zugeordnet werden. Wir finden sie über das Label des EuroSciVoc-Konzepts (?euroSciVoc_label_value), das wir auf „artificial intelligence“ setzen. Wir fügen außerdem „@en“ hinzu, um sicherzugehen, dass das englische Label des Konzepts der künstlichen Intelligenz gefunden wird.
- Um die Projekte in Griechenland zu finden, müssen wir die beteiligten Einrichtungen (die in der Variablen ?organisation gespeichert sind) finden und ihr Land abrufen, indem wir nach der Einheit eurio:Country suchen, deren eurio:name „Greece“ ist.
- Die eurio:hasInvolvedParty des ?project ist in der Variablen ?organisation_role gespeichert.
- Das eurio:roleLabel der ?organisation_role ist in der Variablen ?role gespeichert.
- Die eurio:isRoleOf der ?organisation_role ist in der Variablen ?organisation gespeichert.
- Der eurio:legalName der ?organisation ist in der Variablen ?organisation_name gespeichert.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?project_title ?role ?organisation_name
WHERE {
?project eurio:hasEuroSciVocClassification ?euroSciVoc.
?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en .
?project eurio:title ?project_title .
?project eurio:hasInvolvedParty ?organisation_role .
?organisation_role eurio:roleLabel ?role .
?organisation_role eurio:isRoleOf ?organisation .
?organisation eurio:legalName ?organisation_name .
?organisation eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country;
eurio:name 'Greece' .
}
ORDER BY DESC(?project_title)
Bei der Untersuchung der Auswirkungen des Gebiets der künstlichen Intelligenz in Griechenland könnte, da CORDIS auch Informationen über wissenschaftliche Veröffentlichungen von Projekten enthält, die vorherige Abfrage erweitert werden:
Bei einer Einrichtung die relevanten Projekte auf dem Gebiet der künstlichen Intelligenz und deren Veröffentlichungen finden
Unter Berücksichtigung der von uns gewünschten Informationen geben wir diese Bedingungen in die Klausel WHERE ein:
- Die Projekte müssen in EuroSciVoc der Kategorie „künstliche Intelligenz“ zugeordnet werden. Wir finden sie über das Label des EuroSciVoc-Konzepts (?euroSciVoc_label_value), das wir auf „artificial intelligence“ setzen. Wir fügen außerdem „@en“ hinzu, um sicherzugehen, dass das englische Label des Konzepts der künstlichen Intelligenz gefunden wird.
- Um die erwartete Einrichtung zu finden, rufen wir die offiziellen Bezeichnungen der Einrichtungen ab und speichern sie in der Variablen ?organisation_name. Dann spezifizieren wir die Einrichtung mithilfe eines Filters: FILTER(str(?organisation_name) = 'ETHNIKO KENTRO EREVNAS KAI TECHNOLOGIKIS ANAPTYXIS').
- In der Abfrage werden alle Projekte, die sich auf das Wissenschaftsgebiet der künstlichen Intelligenz beziehen, in der Variablen ?project gespeichert.
- Anschließend werden alle zugehörigen Funktionen von Einrichtungen ermittelt (die Rollen sind in der Variablen ?role gespeichert).
- Parallel dazu wird geprüft, welche der Rollen der Einrichtungen mit der in der Variablen ?organisation angegebenen Einrichtung verbunden sind.
- Anhand dieser Überprüfungen werden die mit der Eingabe-Einrichtung verbundenen Projekte abgeleitet und die Projektveröffentlichungen gespeichert. Die Veröffentlichungen werden in der Variablen ?result gespeichert.
- Die Abfrage liefert: (i) den Titel des Projekts, an dem sie beteiligt sind (?project_title), (ii) den Titel der Veröffentlichung (?publication_title), (iii) Autorinnen und Autoren (?authors), (iv) den DOI (?doi) und (v) den Verlag (?publisher). Die Ergebnisse werden nach Veröffentlichung und Projekttitel geordnet mit ORDER BY ?publication ?project_title.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?project_title ?publication ?authors ?doi ?publisher
WHERE {
?organisation eurio:legalName ?organisation_name .
?role eurio:isRoleOf ?organisation .
?role eurio:isInvolvedIn ?project .
?project eurio:hasEuroSciVocClassification ?euroSciVoc .
?project eurio:title ?project_title .
?project eurio:hasResult ?result .
?result a eurio:ProjectPublication .
?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en .
OPTIONAL { ?result eurio:title ?publication }
OPTIONAL { ?result eurio:doi ?doi }
OPTIONAL { ?result eurio:author ?authors }
OPTIONAL { ?result eurio:publisher ?publisher }
FILTER(str(?organisation_name) = 'ETHNIKO KENTRO EREVNAS KAI TECHNOLOGIKIS ANAPTYXIS')
}
ORDER BY ?publication ?project_title
Bisher haben wir über Projekte auf dem Gebiet der künstlichen Intelligenz in Griechenland gesprochen, daher könnte uns anhand der folgenden Abfrage interessieren, wie sehr dieses Thema auf europäischer Ebene erforscht wird:
Die zehn wichtigsten Länder nach Anzahl der Projekte im Bereich der künstlichen Intelligenz auflisten
Wir geben die Bedingungen in die Klausel WHERE ein:
- Die Projekte müssen in EuroSciVoc der Kategorie „künstliche Intelligenz“ zugeordnet werden. Wir finden sie über das Label des EuroSciVoc-Konzepts (?euroSciVoc_label_value), das wir auf „artificial intelligence“ setzen. Wir fügen außerdem „@en“ hinzu, um sicherzugehen, dass das englische Label des Konzepts der künstlichen Intelligenz gefunden wird.
- In der Abfrage werden alle Projekte, die sich auf das Wissenschaftsgebiet der künstlichen Intelligenz beziehen, in der Variablen ?project gespeichert.
- Anschließend werden alle mit den Projekten verbundenen Funktionen der Einrichtungen ermittelt (die Rollen sind in der Variablen ?role gespeichert).
- Anschließend wird die mit den Funktionen der Einrichtung verknüpfte Einrichtung ermittelt und dann in der Variablen ?organisation gespeichert. Zu guter Letzt werden mit der Abfrage die Länder gefunden, in denen sich die Einrichtungen befinden, und deren Namen in derVariablen ?country_name gespeichert.
- Die Ergebnisse werden nach der Anzahl der Projekte in absteigender Reihenfolge mit ORDER BY DESC (?total_projects_in_country) und LIMIT 10 sortiert, um die ersten zehn Länder anzuzeigen.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?country_name (COUNT(?project) AS ?total_projects_in_country)
WHERE {
?project eurio:hasEuroSciVocClassification ?euroSciVoc.
?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en .
?role eurio:isInvolvedIn ?project .
?role eurio:isRoleOf ?organisation .
?organisation eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country .
?country eurio:name ?country_name .
}
GROUP BY ?country_name
ORDER BY DESC (?total_projects_in_country)
LIMIT 10
Die oben beschriebenen SELECT-Abfragen sind eine der von SPARQL definierten Abfrageformen, die dazu verhelfen, die Lösungen aus dem Mustervergleich zu spezifizieren und zu verwenden, um Ergebnismengen oder RDF-Graphen zu bilden. Diese sind:
- SELECT, das, wie oben dargestellt, alle oder eine Teilmenge der Variablen zurückgibt, die in einem Abfragemuster übereinstimmen.
- CONSTRUCT, bei der ein RDF-Graph angezeigt wird, der durch Ersetzen von Variablen in einer Reihe von Dreifachvorlagen konstruiert wurde.
- ASK, das einen booleschen Wert zurückgibt, der angibt, ob ein Abfragemuster übereinstimmt oder nicht.
- DESCRIBE, das einen RDF-Graphen zurückgibt, der die gefundenen Ressourcen beschreibt.
Weitere Informationen zur Verwendung der verschiedenen Abfrageformen sowie eine umfassende Beschreibung der allgemeinen Eigenschaften der SPARQL-Abfragesprache finden Sie in der offiziellen Dokumentation zur SPARQL 1.1 Query Language.
Wie löst man gebündelte Abfragen aus?
In allen vorgestellten Beispielen wurden die Abfragen über die im EURIO-Wissensgraph enthaltenen Daten ausgeführt.
Mit der wachsenden Anzahl von SPARQL-Abfragediensten (SPARQL-Endpunkte) verschiedener Datenanbieter durch die Veröffentlichung ihrer Daten als vernetzte offene Daten ergibt sich jedoch die Möglichkeit, diese verteilten Datensätze gemeinsam abzufragen.
Dazu verwendet SPARQL die Erweiterung SERVICE. Mit dieser Erweiterung ist es möglich, einen Teil einer Abfrage an einen bestimmten SPARQL-Endpunkt zu richten und die zurückgegebenen Ergebnisse mit den Ergebnissen der restlichen Abfrage zu kombinieren.
Bei der nächsten Abfrage werden Informationen aus EURIO und dem EU Knowledge Graph, der unter anderem Kohesio-Projekte enthält, d. h. Projekte, die von der Europäischen Union im Rahmen der Kohäsionspolitik im Programmplanungszeitraum 2014-2020 finanziert werden. Kohesio deckt Projekte ab, die im Rahmen der nationalen und regionalen operationellen Programme entwickelt wurden, die vom Europäischen Fonds für Regionale Entwicklung (EFRE), dem Kohäsionsfonds und dem Europäischen Sozialfonds (ESF) kofinanziert werden, gegebenenfalls einschließlich der Beschäftigungsinitiative für junge Menschen. Kohesio umfasst außerdem die Projekte der Programme für Europäische territoriale Zusammenarbeit (auch bekannt als INTERREG).
Mit dieser Abfrage können die Nutzenden:
Sowohl in CORDIS als auch in KOHESIO die Anzahl der Projekte und deren Finanzierung ermitteln, an denen eine bestimmte Einrichtung beteiligt ist
Wir geben die Bedingungen in die Klausel WHERE ein:
- Wir geben an, dass der Wert der Variablen ?organisation_name 'UNIVERSIDAD CARLOS III DE MADRID' ist.
- Anschließend werden alle mit den Projekten verknüpften Funktionen der Einrichtung (gespeichert in der Variablen ?role) sowie die Informationen über den Höchstbetrag der Finanzhilfe (gespeichert in ?grant_amount) ermittelt und außerdem über die Variable ?organisation sichergestellt, dass es sich dabei um Projekte der 'UNIVERSIDAD CARLOS III DE MADRID' handelt.
- Von ?grant_payment aus durchläuft die Abfrage die Eigenschaften, um zum Finanzierungsbetrag zu gelangen, den wir in der Variablen ?funding_amount speichern.
- Die Abfrage erfolgt dann ab dem Kohesio-Endpunkt, basierend auf dem Namen der eingegebenen Einrichtung aus dem EURIO-Wissensgraphen:
- die Gesamtkosten für jedes Projekt (gespeichert in der Variablen ?total_budget)
- den EU-Beitrag (gespeichert in ?eu_contribution).
- Die Abfrage liefert: (i) die Gesamtanzahl der Projekte in CORDIS (?total_projects_cordis), (ii) die Gesamtzahl der Projekte in Kohesio (?total_projects_kohesio), (iii) die Gesamtkosten für jedes Projekt (über ?total_budget), und (iv) den EU-Beitrag (?eu_contribution) für die jeweilige Einrichtung. Um die Werte zu erhalten, verwenden wir die Funktion SUM, welche die Werte im angegebenen Ausdruck addiert.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX kohesio: <https://linkedopendata.eu/prop/direct/>
SELECT (COUNT(DISTINCT ?project_cordis) AS ?total_projects_cordis) (SUM(?funding_amount) AS ?total_funding_cordis)
(COUNT(DISTINCT ?project_kohesio) AS ?total_projects_kohesio) (SUM(?budget) AS ?total_budget_kohesio) (SUM(?eu_contribution) AS ?total_eu_contribution_kohesio)
WHERE {
?organisation eurio:legalName 'UNIVERSIDAD CARLOS III DE MADRID'.
?role eurio:isRoleOf ?organisation ;
eurio:isInvolvedIn ?project_cordis ;
eurio:isRecipientOf ?grant_amount .
?grant_amount eurio:hasPaymentAmount ?monetary_amount .
?monetary_amount eurio:value ?funding_amount .
SERVICE <https://query.linkedopendata.eu/sparql> {
?project_kohesio kohesio:P841 'UNIVERSIDAD CARLOS III DE MADRID' ;
kohesio:P474 ?budget ;
kohesio:P835 ?eu_contribution .
}
}
Die nächste Abfrage bezieht sich auf den Begriff der „kleinen Universität“, den die Times Higher Education, eine britische Zeitschrift, die für die jährliche Hochschuleinstufung Times Higher Education-QS World University Ranking verantwortlich ist, als eine Hochschule mit weniger als 5 000 Studierenden definiert. Da diese Informationen in CORDIS nicht vorhanden sind, stützen wir uns auf Wikidata, eine freie, kollaborative, mehrsprachige, sekundäre Wissensdatenbank, in der strukturierte Daten gesammelt werden, um Wikipedia, Wikimedia Commons, die anderen Wikis der Wikimedia-Bewegung und alle Interessierten weltweit zu unterstützen.
Mit dieser Abfrage können die Nutzenden:
Alle kleinen Hochschulen und ihre Länder, sowie den Titel und die Kennung der Projekte finden, an denen sie auf dem Gebiet der Arzneimittelsicherheit teilnehmen
We specify the conditions into the WHERE clause:
Wir geben die Bedingungen in die Klausel WHERE ein:
- Die Projekte müssen in EuroSciVoc der Kategorie „Arzneimittelsicherheit“ zugeordnet sein. Wir finden sie über das Label des EuroSciVoc-Konzepts (?euroSciVoc_label_value), das wir auf „drug safety“ setzen. Zu guter Letzt fügen wir „@en“ hinzu, um sicherzustellen, dass wir das englische Label des Konzepts „Arzneimittelsicherheit“ finden.
- Bei der Abfrage werden alle Projekte, die mit dem Wissenschaftsbereich der Arzneimittelsicherheit in Verbindung stehen, ihr Titel und ihre Finanzhilfevereinbarungskennungen in der Variablen ?project gespeichert.
- Anschließend werden alle mit den Projekten verbundenen Funktionen der Einrichtungen ermittelt (die Rollen sind in der Variablen ?role gespeichert).
- Die Namen der Hochschulen sind in der Variablen ?organisation_name gespeichert, die Mehrwertsteuernummer in der Variablen ?vat_number. Wir verwenden die Mehrwertsteuer-Identifikationsnummer der Universitäten, um sie mit den entsprechenden Wikidata-Daten abzugleichen (da sie als eindeutiger Identifikationswert zu berücksichtigen ist).
- Abschließend werden mit der Abfrage die Länder gefunden, in denen sich die Einrichtungen befinden, und sie werden in der Variablen ?country_name gespeichert.
- Zusätzlich zu der Suche nach den Hochschulen nutzen wir die Wikidata-Anweisung ?statement, die sowohl die Informationen über die Anzahl der Studierenden (?students) als auch das Datum enthält, an dem diese Anzahl berechnet wurde (?time, die eine weitere Anweisung ?statement ist, die das aktuelle Datum in der Variablen ?date enthält).
- Da wir bestimmte Informationsgruppen benötigen, verwenden wir zweimal die Funktion FILTER:
- Im ersten Durchgang werden alle Universitäten mit weniger als 5 000 Studierenden gefiltert.
- Im zweiten kommt die Funktion YEAR der Variablen ?date zum Einsatz, um sie in ein Jahr umzuwandeln, z. B. von „1. Januar 2022“ in „2022“, womit die Darstellung des Datums vereinheitlicht wird. Dieser Filter wird auf die Zeit ab 2020 gesetzt, um aktuelle Informationen über die Studierendenpopulation zu berücksichtigen.
- Die Abfrage liefert: (i) den Namen der Hochschule (?organisation_name), (ii) den Titel des Projekts, an dem sie beteiligt sind (?project_title), und (iii) die Kennung der Finanzhilfevereinbarung (?id)
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX pqv: <http://www.wikidata.org/prop/qualifier/value/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT DISTINCT ?organisation_name ?project_title ?id
WHERE {
?role eurio:isRoleOf ?organisation .
?role eurio:isInvolvedIn ?project .
?project eurio:title ?project_title .
?project eurio:identifier ?id .
?project eurio:hasEuroSciVocClassification ?euroSciVoc.
?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
?euroSciVoc_label skos-xl:literalForm 'drug safety'@en .
?organisation eurio:legalName ?organisation_name .
?organisation eurio:vatNumber ?vat_number.
?organisation eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country .
?country eurio:name ?country_name .
SERVICE <https://query.wikidata.org/sparql> {
?wikidata_org wdt:P3608 ?vat_number .
?wikidata_org p:P2196 ?statement.
?statement pqv:P585 ?time .
?statement ps:P2196 ?students .
?time wikibase:timeValue ?date .
FILTER (YEAR(?date) >= 2020)
FILTER(?students < 5000)
}
}
Mit der nächsten föderierten Abfrage wird die Suche um Daten von CELLAR erweitert. Cellar ist der gemeinsame Datenspeicher des Amtes für Veröffentlichungen der Europäischen Union. Digitale Veröffentlichungen und Metadaten werden in Cellar gespeichert und über Cellar verbreitet, damit Menschen und Maschinen auf sie zugreifen können. Mit dem Ziel, den Nutzenden eine transparente Dienstleistung anzubieten, werden auf Cellar mehrsprachige Veröffentlichungen und Metadaten gespeichert. Es steht allen EU-Bürgerinnen und -Bürgern offen und bietet maschinenlesbare Daten.
Als offizielles Daten- und Informationsarchiv des Amtes für Veröffentlichungen der Europäischen Union enthält CELLAR mehrere Instanzentabellen, darunter eine Tabelle mit Ländern und Gebieten, die zusätzliche geopolitische Informationen beinhaltet, die auf CORDIS fehlen.
Die nächsten drei Abfragen zeigen Ihnen, wie drei Auskünfte extrahiert werden können, indem Länder und Gebiete aus CELLAR mit CORDIS-Ländern über die ISO-3166-1-Kodierliste ALPHA-2 abgeglichen werden. Diese Daten sind:
- Kontinente: Bei der Abfrage wird der Begriff des Kontinents verwendet, um alle afrikanischen Projektbeteiligten mit ihrer Kennung und ihrem Titel zu finden.
- Geografische Regionen: Bei der Abfrage kommt die Liste der geografischen Regionen nach den Vereinten Nationen zum Einsatz, die eine regionale Gruppierung von Ländern und Gebieten nach dem Schema der geografischen Regionen der Vereinten Nationen vornimmt, um alle Projektbeteiligten mit ihrer Kennung und ihrem Titel aus der geografischen Region Westafrika zu finden.
- Internationale Partnerschaften: Bei der Abfrage werden internationale Partnerschaften wie die südliche Nachbarschaft verwendet, um alle Projektbeteiligten mit ihrer Kennung und ihrem Titel zu finden, die zu dieser speziellen Partnerschaft gehören, die zehn Partnerländer umfasst: Ägypten, Algerien, Israel, Jordanien, Libanon, Libyen, Marokko, Palästina, Syrien und Tunesien.
Projekte mit Teilnehmenden aus Afrika finden
Wir geben die Bedingungen in die Klausel WHERE ein:
- Wir beginnen mit einer Abfrage der CELLAR-Datenbank und geben den Graphen http://publications.europa.eu/resource/authority/country ein, um alle Länder abzurufen, die durch ihre skos:notation identifiziert werden. Gefiltert wird ?cellar_code, um sicherzustellen, dass der Datentyp der ISO-3166-1-Kodierliste ALPHA-2 entspricht.
- Innerhalb des Blocks SERVICE wird nach Ländern in Afrika gesucht, wobei die Eigenschaft ogcgs:sfWithin genutzt wird, um bestimmte Länder mit dem URI des afrikanischen Kontinents (http://publications.europa.eu/resource/authority/continent/AFRICA) zu verknüpfen, der aus der Instanzentabelle für Kontinente stammt.
- Für jedes Projekt wird bei der Abfrage der Projekttitel (gespeichert in ?project_title), die Kennung der Finanzhilfevereinbarung (gespeichert in ?id) und die offizielle Bezeichnung der zugehörigen Einrichtung (gespeichert in ?organisation_name) abgerufen. Es werden außerdem Informationen über den geografischen Standort der Einrichtung gesammelt, darunter der Name des Landes (gespeichert in ?country_name).
- Zudem wird bei der Abfrage die String-Darstellung des Cellar-Codes an ?cordis_code angebunden, um das Land entsprechend der Adresse der Einrichtung bei CORDIS zu ermitteln.
- Die Abfrage liefert: (i) den Titel des Projekts, an dem sie beteiligt sind (?project_title), (ii) die Kennung der Finanzhilfevereinbarung (?id), (iii) den Namen der Einrichtung (?organisation_name) und (iv) das Land der Einrichtung (?country_name). Mithilfe von ORDER BY ASC (?country_name) ordnen wir das Ergebnis alphabetisch in aufsteigender Reihenfolge nach dem Namen des Landes.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX ogcgs: <http://www.opengis.net/ont/geosparql#>
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
SERVICE <https://publications.europa.eu/webapi/rdf/sparql>
{GRAPH <http://publications.europa.eu/resource/authority/country>{
?s skos:notation ?cellar_code.
FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>)
?s ogcgs:sfWithin <http://publications.europa.eu/resource/authority/continent/AFRICA>
}
}
BIND(STR(?cellar_code) as ?cordis_code)
?project eurio:title ?project_title .
?project eurio:identifier ?id .
?project eurio:hasInvolvedParty ?participant .
?participant eurio:isRoleOf ?organisation .
?organisation eurio:legalName ?organisation_name .
?organisation eurio:hasSite ?site .
?site eurio:hasAddress ?address .
?address eurio:addressCountry ?cordis_code .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country.
?country eurio:name ?country_name .
}
ORDER BY ASC(?country_name)
Projekte mit Teilnehmenden aus Westafrika finden
Diese Abfrage verläuft ebenso wie die vorherige Abfrage, Der einzige Unterschied besteht in der Spezifikation des geographischen Filters im Block SERVICE , da er nach Ländern sucht, die zur geografischen Region Westafrika gehören. Zu diesem Zweck wird bei der Abfrage der Name der Region in der Variablen ?unsd_geoscheme gespeichert und die Suche durch Anwendung zweier Funktionen für FILTER fortgesetzt:
- Mit den ersten Filter wird die Suche auf das Attribut skos:notation mit dem Datentyp http://publications.europa.eu/ontology/euvoc#UNSD_GEOSCHEME eingegrenzt.
- Mit dem zweiten Filter wird nur nach Werten in der Variablen ?unsd_geoscheme gesucht, die mit der Zeichenfolge „Western Africa“ übereinstimmen. Dazu wird die Funktion CONTAINS verwendet, die überprüft, ob die Variable den angegebenen String enthält.
Der Vollständigkeit halber finden Sie die komplette Abfrage wie folgt:
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
GRAPH <http://publications.europa.eu/resource/authority/country>{
?s skos:notation ?cellar_code.
FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>)
?s skos:notation ?unsd_geoscheme .
FILTER(datatype(?unsd_geoscheme)=<http://publications.europa.eu/ontology/euvoc#UNSD_GEOSCHEME>)
FILTER(CONTAINS(?unsd_geoscheme,'Western Africa'))
}
}
BIND(STR(?cellar_code) as ?cordis_code)
?project eurio:title ?project_title .
?project eurio:identifier ?id .
?project eurio:hasInvolvedParty ?participant .
?participant eurio:isRoleOf ?organisation .
?organisation eurio:hasSite ?site .
?organisation eurio:legalName ?organisation_name .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country .
?country eurio:name ?country_name .
?site eurio:hasAddress ?address .
?address eurio:addressCountry ?cordis_code .
}
ORDER BY ASC(?country_name)
Projekte mit Teilnehmenden aus Ländern finden, die in die Europäische Nachbarschaftspolitik (südlicher Teil) eingebunden sind
Diese Abfrage gleicht der vorherigen Abfrage, der einzige Unterschied besteht in der Angabe des geografischen Filters im Block SERVICE, da nach Ländern gesucht wird, die der südlichen Nachbarschaft angehören. Zu diesem Zweck wird die Beziehung zwischen dem Land und der südlichen Nachbarschaft über die Eigenschaft org:hasMembership gespeichert, die zur URI der Partnerschaft führt, zu der das Land gehört, d. h. http://publications.europa.eu/resource/authority/corporate-body/ENP-SOUTH.
Der Vollständigkeit halber finden Sie die komplette Abfrage wie folgt:
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX org: <http://www.w3.org/ns/org#>
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
GRAPH <http://publications.europa.eu/resource/authority/country>{
?s skos:notation ?cellar_code.
FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>)
?s org:hasMembership ?international_partnership .
?international_partnership org:organization <http://publications.europa.eu/resource/authority/corporate-body/ENP-SOUTH>}
}
BIND(STR(?cellar_code) as ?cordis_code)
?project eurio:title ?project_title .
?project eurio:identifier ?id .
?project eurio:hasInvolvedParty ?participant .
?participant eurio:isRoleOf ?organisation .
?organisation eurio:legalName ?organisation_name .
?organisation eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?country .
?country a eurio:Country .
?country eurio:name ?country_name .
?site eurio:hasAddress ?address .
?address eurio:addressCountry ?cordis_code .
}
ORDER BY ASC(?country_name)
Es ist zu beachten, dass gebündelte Abfragen mit Vorsicht eingesetzt werden müssen, um exzessive Abfragen an entfernte SPARQL-Endpunkte sowie ineffiziente Abfragemuster zu vermeiden, da beides die Ausführungszeit der Abfrage stark beeinträchtigen kann, was oft zu Abfragezeitüberschreitungen und der Unfähigkeit, überhaupt ein Ergebnis abzurufen, führt. In Anbetracht dieser Situation und da außerdem keine Garantie für die Stabilität, Verfügbarkeit und Leistung externer SPARQL-Endpunkte gegeben werden kann, wird dringend empfohlen, sich stattdessen für lokale Datenabzüge des Wissensgraphs (oder seiner Teilgraphen) von Interesse zu entscheiden und sich auf lokale gebündelte Abfragen zu verlassen.
Für einen umfassenden Überblick über die Funktionen und Spezifikationen, die für die Unterstützung von gebündelten Abfragen durch SPARQL relevant sind, sollte die Dokumentation zur SPARQL 1.1 Federated Query konsultiert werden.
Datenspeicherauszug
Der neueste Auszug des EURIO-Wissensgraphs kann vom europäischen Datenportal heruntergeladen werden, wo Sie auch Teilgraphen des EURIO-Wissensgraphs finden können. Diese Teilgraphen enthalten eine äußerst relevante, in sich geschlossene Momentaufnahme der Beziehungen und Attribute, die für jeden der Haupttypen von Einheiten des EURIO-Wissensgraphs relevant sind, und ermöglichen einen feineren Zugang zu den Inhalten des EURIO-Wissensgraphs. Die Teilgraphen werden als eigenständige benannte Graphen veröffentlicht, d. h. als Teilmengen der Graphen des EURIO-Wissensgraphs, die jeweils ein eigenes Label haben.