test_maintenance_helpers.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import rdflib
  2. from app.maintenance import (
  3. _extract_wikidata_qids_from_entity_dump,
  4. _infer_atlas_type_from_qids,
  5. )
  6. def test_extract_wikidata_qids_from_dump_dedupes():
  7. dump = {
  8. "entities": {
  9. "Q1": {
  10. "claims": {
  11. "P31": [
  12. {
  13. "mainsnak": {
  14. "datavalue": {"value": {"id": "Q5"}},
  15. }
  16. },
  17. {
  18. "mainsnak": {
  19. "datavalue": {"value": {"id": "Q5"}},
  20. }
  21. },
  22. ],
  23. "P279": [
  24. {
  25. "mainsnak": {
  26. "datavalue": {"value": {"id": "Q6"}},
  27. }
  28. }
  29. ],
  30. },
  31. }
  32. }
  33. }
  34. qids = _extract_wikidata_qids_from_entity_dump(dump)
  35. assert qids == ["Q5", "Q6"]
  36. def test_infer_atlas_type_from_qids_heuristic_person():
  37. g = rdflib.Graph()
  38. wikidata_uri = rdflib.URIRef("http://www.wikidata.org/entity/Q5")
  39. # object should contain a keyword like "Person" so the heuristic maps.
  40. g.add((wikidata_uri, rdflib.RDFS.subClassOf, rdflib.URIRef("http://dbpedia.org/ontology/Person")))
  41. atlas_type = _infer_atlas_type_from_qids(["Q5"], g)
  42. assert atlas_type == "atlas:Person"