From 0259c6f907875b54e5d1df4bc89efa1c293d2812 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Mon, 27 May 2019 08:52:38 +0200 Subject: Adding Soufflé based reasoning on parts. Replacing default configuration with applying python function with this new reasoner. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ee/tools/part_apply_souffle_post.py | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/ee/tools/part_apply_souffle_post.py (limited to 'src/ee/tools/part_apply_souffle_post.py') diff --git a/src/ee/tools/part_apply_souffle_post.py b/src/ee/tools/part_apply_souffle_post.py new file mode 100644 index 0000000..4c23128 --- /dev/null +++ b/src/ee/tools/part_apply_souffle_post.py @@ -0,0 +1,56 @@ +import argparse +import csv +from pathlib import Path + +from ee import EeException +from ee.db import ObjDb +from ee.part import Part, load_db, save_db, PartDb + + +def work(in_path: Path, out_path: Path, work_dir: Path): + in_parts: ObjDb[Part] = ObjDb[Part]() + uri_idx = in_parts.add_unique_index("uri", lambda p: p.uri) + + for entry in load_db(in_path).parts: + in_parts.add(Part(entry.part)) + + out_parts = PartDb() + + for part in in_parts: + out_parts.add_entry(part, False) + + with (work_dir / "out" / "fact.csv").open("r") as f: + reader = csv.reader(f, dialect="excel-tab") + for uri, key, value in reader: + try: + part = uri_idx.get_single(uri) + except KeyError: + raise EeException("Unknown part found in output: uri={}".format(uri)) + + old_value = part.facts.get_value(key) + + if old_value is None: + print("New fact for {}: {}={}".format(uri, key, value)) + part.facts.add(key, value) + + save_db(out_path, out_parts) + + +parser = argparse.ArgumentParser() + +parser.add_argument("--in", + dest="in_path", + required=True, + metavar="PART DB") + +parser.add_argument("--out", + required=True, + metavar="PART DB") + +parser.add_argument("--work", + required=True, + metavar="DIR") + +args = parser.parse_args() + +work(Path(args.in_path), Path(args.out), Path(args.work)) -- cgit v1.2.3