# SPDX-FileCopyrightText: 2023 Birger Schacht
# SPDX-License-Identifier: MIT
from pathlib import Path
from django.test import TestCase
from apis_core.apis_entities.abc import E21_Person, E53_Place, E74_Group
from apis_core.utils import rdf
# use `curl -H "Accept: application/rdf+xml" -L $URI` to fetch data
testdata = Path(__file__).parent / "testdata"
[docs]
class Place(E53_Place):
class Meta:
app_label = "test"
[docs]
class Person(E21_Person):
class Meta:
app_label = "test"
[docs]
class Institution(E74_Group):
class Meta:
app_label = "test"
[docs]
class RdfTest(TestCase):
[docs]
def test_get_definition_from_dict_place_from_geonames(self):
achensee = {
"latitude": "47.5",
"longitude": "11.7",
"label": "Achensee",
}
# https://www.geonames.org/2783029/achensee.html
uri = str(testdata / "achensee.rdf")
place = Place()
defintion, attributes = rdf.get_definition_and_attributes_from_uri(uri, place)
self.assertEqual(achensee, attributes)
[docs]
def test_get_definition_from_dict_place_from_dnb(self):
wien = {"label": "Wien", "latitude": "048.208199", "longitude": "016.371690"}
# https://d-nb.info/gnd/4066009-6
uri = str(testdata / "wien.rdf")
place = Place()
defintion, attributes = rdf.get_definition_and_attributes_from_uri(uri, place)
self.assertEqual(wien, attributes)
[docs]
def test_get_definition_from_dict_person_from_dnb(self):
pierre = {
"forename": "Pierre",
"surname": "Ramus",
"date_of_birth": "1882-04-15",
"date_of_death": "1942",
}
# https://d-nb.info/gnd/118833197
uri = str(testdata / "ramus.rdf")
person = Person()
defintion, attributes = rdf.get_definition_and_attributes_from_uri(uri, person)
self.assertEqual(pierre, attributes)
[docs]
def test_get_definition_from_dict_institution_from_dnb(self):
pierre_ges = {
"label": "Pierre-Ramus-Gesellschaft",
}
# https://d-nb.info/gnd/415006-5
uri = str(testdata / "ramus_gesellschaft.rdf")
institution = Institution()
defintion, attributes = rdf.get_definition_and_attributes_from_uri(
uri, institution
)
self.assertEqual(pierre_ges, attributes)
[docs]
def test_get_definition_from_dict_institution_from_dnb2(self):
pierre_ges = {
"label": "Akademie der Wissenschaften in Wien",
}
# https://d-nb.info/gnd/35077-1
uri = str(testdata / "oeaw.rdf")
institution = Institution()
defintion, attributes = rdf.get_definition_and_attributes_from_uri(
uri, institution
)
self.assertEqual(pierre_ges, attributes)