diff --git a/python/cic_schema/__pycache__/__init__.cpython-310.pyc b/python/cic_schema/__pycache__/__init__.cpython-310.pyc index 6e0fc39..069c1ad 100644 Binary files a/python/cic_schema/__pycache__/__init__.cpython-310.pyc and b/python/cic_schema/__pycache__/__init__.cpython-310.pyc differ diff --git a/python/cic_schema/__pycache__/cert.cpython-310.pyc b/python/cic_schema/__pycache__/cert.cpython-310.pyc index ba65e93..14303e2 100644 Binary files a/python/cic_schema/__pycache__/cert.cpython-310.pyc and b/python/cic_schema/__pycache__/cert.cpython-310.pyc differ diff --git a/python/cic_schema/cert.py b/python/cic_schema/cert.py index e197212..102df74 100644 --- a/python/cic_schema/cert.py +++ b/python/cic_schema/cert.py @@ -1,17 +1,44 @@ # standard imports import sys +import enum # external imports -from rdflib import Graph +from rdflib import Graph, RDF +from rdflib.term import URIRef +from rdflib.collection import Collection + + +class CIC(enum.Enum): + voucherContract = URIRef('https://defalsify.org/rdf-eth/0.1/voucherContract') + voucherTransfer = URIRef('https://defalsify.org/rdf-eth/0.1/voucherTransfer') class Cert: - def __init__(self, path): + def __init__(self): self.g = Graph() - self.g.parse(path, format='turtle') + self.txs = {} + self.typ = None + @classmethod + def from_path(cls, path): + c = cls() + c.g.parse(path, format='turtle') + c.__apply_graph() + return c + + + def __apply_graph(self): + current_subject = None + for (s, p, o) in self.g: + if s != current_subject: + current_subject = s + if p == RDF.first: + pass + print('{} {} {}'.format(s, p, o)) + + def export(self, w=sys.stdout): v = self.g.serialize(format='xml') w.write(v) diff --git a/python/tests/test_json.py b/python/tests/test_json.py index 332c931..e4bac8f 100644 --- a/python/tests/test_json.py +++ b/python/tests/test_json.py @@ -4,29 +4,24 @@ import json import os # external imports -from jsonschema import validate as json_validate +#from jsonschema import validate as json_validate +# local imports +from cic_schema.nft import NFT test_dir = os.path.realpath(os.path.dirname(__file__)) testdata_dir = os.path.join(test_dir, 'testdata') -data_dir = os.path.join(test_dir, '..', 'cic_schema', 'data') +#data_dir = os.path.join(test_dir, '..', 'cic_schema', 'data') class TestJsonData(unittest.TestCase): def setUp(self): - fp = os.path.join(data_dir, 'cic.json') - f = open(fp, 'r') - self.schema = json.load(f) - f.close() + self.path = os.path.join(testdata_dir, 'test_valid.json') + self.nft = NFT.from_path(self.path) - def test_schema_load(self): - fp = os.path.join(testdata_dir, 'test_valid.json') - f = open(fp, 'r') - o = json.load(f) - f.close() - validator = json_validate(o, self.schema) - + def test_valid(self): + pass if __name__ == '__main__': diff --git a/python/tests/test_nft.py b/python/tests/test_nft.py index 790aa15..e3c7a38 100644 --- a/python/tests/test_nft.py +++ b/python/tests/test_nft.py @@ -19,14 +19,15 @@ data_dir = os.path.join(test_dir, '..', 'cic_schema', 'data') class TestNft(unittest.TestCase): def setUp(self): - fp = os.path.join(testdata_dir, 'test_voucher.rdf') - self.graph_voucher = Cert(fp) - fp = os.path.join(testdata_dir, 'test_tx.rdf') - self.graph_tx = Cert(fp) + #fp = os.path.join(testdata_dir, 'test_voucher.rdf') + #self.graph_voucher = Cert.from_path(fp) + fp = os.path.join(testdata_dir, 'test_tx2.rdf') + self.graph_tx = Cert.from_path(fp) def test_simplest(self): - print(self.graph_tx.export()) + pass + if __name__ == '__main__': diff --git a/python/tests/testdata/test_tx.rdf b/python/tests/testdata/test_tx.rdf index 0f32ea7..f63f2bd 100644 --- a/python/tests/testdata/test_tx.rdf +++ b/python/tests/testdata/test_tx.rdf @@ -1,12 +1,15 @@ -@prefix evm: . +@prefix evm: . @prefix cic: . @prefix ge: . @prefix redcross: . -@prefix un: . +@prefix un: . @prefix xsd: . -evm:voucherTransfer - evm:id "6f4ed36c11345a9a48353cd2f93f1f92958c96df15f3112a192bc994250e8d03"^^xsd:hexBinary ; +( + "6f4ed36c11345a9a48353cd2f93f1f92958c96df15f3112a192bc994250e8d03"^^evm:id + "7f4ed36c11345a9a48353cd2f93f1f92958c96df15f3112a192bc994250e8d03"^^evm:id + "8f4ed36c11345a9a48353cd2f93f1f92958c96df15f3112a192bc994250e8d03"^^evm:id +) ge:approvedActor ; redcross:interest ge:foodforest ; un:esg "deforestation" ;