123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #!/usr/bin/env python3
- import pytest
- from numpy import isnan
- from hashlib import sha256
- from rdflib import Namespace
- from probs_runner import PROBS, QUANTITYKIND, answer_queries
- from numpy.testing import assert_allclose
- from decimal import Decimal
- #from uuid import uuid4
- PRODCOM2016 = Namespace("http://w3id.org/probs-lab/data/prodcom/2016/")
- PRODCOM2017 = Namespace("http://w3id.org/probs-lab/data/prodcom/2017/")
- GEONAMES = Namespace("https://sws.geonames.org/")
- def assert_exact_results(result, expected_value):
- assert len(result) == 1
- assert result[0].bound == PROBS.ExactBound
- assert_allclose(result[0].measurement, expected_value, rtol=1e-3)
- def assert_no_measurement(result):
- assert len(result) == 1
- assert isnan(result[0].measurement)
- class TestProdcomCorrespondence:
- """Test PRODCOM Correspondence File Conversion"""
- endpoint_data = ["outputs/PRC_2017_2016.nt.gz",
- "outputs/PRD_2016_20200617_185122.nt.gz",
- "outputs/PRD_2017_20200617_185035.nt.gz"
- ]
- @pytest.mark.parametrize("code", [
- ("10112000"), ("22197120"), ("26601170")
- ])
-
- def test_object_equivalence(self, rdfox, code):
- # object has same code in PRODCOM 2016 and 2017 lists
- obj_name = "\"PRODCOM Object from Code " + code + "\""
- query = r""" PREFIX ufpc: <http://w3id.org/probs-lab/data/prodcom/>
- SELECT ?a ?b WHERE {
- ?a rdfs:label %s ;
- :hasClassificationCode ?c.
- ?c :partOfList ufpc:Prodcom2016List .
- ?b rdfs:label %s ;
- :hasClassificationCode ?d.
- ?d :partOfList ufpc:Prodcom2017List .
- ?b :objectEquivalentTo ?a .
- } """ % (obj_name, obj_name)
- result = rdfox.query_records(query)
- assert len(result) == 1
- @pytest.mark.parametrize("code", [
- ("20201100"), ("265100Z0"), ("28491290")
- ])
-
- def test_new_object(self, rdfox, code):
- # new object in PRODCOM 2017 list
- obj_name = "\"PRODCOM Object from Code " + code + "\""
- query = r""" PREFIX ufpc: <http://w3id.org/probs-lab/data/prodcom/>
- SELECT ?a WHERE {
- ?a rdfs:label %s ;
- :hasClassificationCode ?c .
- ?c :partOfList ufpc:Prodcom2017List .
- FILTER NOT EXISTS {
- ?b :hasClassificationCode ?d .
- ?d :partOfList ufpc:Prodcom2016List .
- ?a :objectEquivalentTo ?b .
- }
- } """ % (obj_name)
- result = rdfox.query_records(query)
- assert len(result) == 1
-
- @pytest.mark.parametrize("code", [
- ("23311073"), ("28302370"), ("32403990")
- ])
- def test_object_deleted(self, rdfox, code):
- # object in PRODCOM 2016 list deleted in 2017 list
- obj_name = "\"PRODCOM Object from Code " + code + "\""
- query = r""" PREFIX ufpc: <http://w3id.org/probs-lab/data/prodcom/>
- SELECT ?a WHERE {
- ?a rdfs:label %s ;
- :hasClassificationCode ?c .
- ?c :partOfList ufpc:Prodcom2016List .
- FILTER NOT EXISTS {
- ?b :hasClassificationCode ?d .
- ?d :partOfList ufpc:Prodcom2017List .
- ?b :objectEquivalentTo ?a .
- }
- } """ % (obj_name)
- result = rdfox.query_records(query)
- assert len(result) == 1
|