Coverage for oc_meta / run / meta_editor.py: 0%
23 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-07-25 10:39 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-07-25 10:39 +0000
1# SPDX-FileCopyrightText: 2021-2026 Arcangelo Massari <arcangelo.massari@unibo.it>
2#
3# SPDX-License-Identifier: ISC
5from argparse import ArgumentParser
7from oc_meta.core.editor import MetaEditor
8from oc_meta.run.merge.entities import EntityMerger
10if __name__ == "__main__":
11 arg_parser = ArgumentParser(
12 "meta_editor.py",
13 description="This script edits OpenCitations Meta triplestore, RDF and provenance",
14 )
15 arg_parser.add_argument(
16 "-c",
17 "--config",
18 dest="config",
19 required=True,
20 help="Configuration file directory",
21 )
22 arg_parser.add_argument(
23 "-op",
24 "--operation",
25 dest="operation",
26 required=True,
27 choices=["update", "delete", "sync", "merge"],
28 help="The CRUD operation to perform",
29 )
30 arg_parser.add_argument(
31 "-s", "--subject", dest="res", required=True, help="The subject entity"
32 )
33 arg_parser.add_argument(
34 "-p", "--property", dest="property", required=False, help="The property"
35 )
36 arg_parser.add_argument(
37 "-o", "--object", dest="value", required=False, help="The value"
38 )
39 arg_parser.add_argument(
40 "-ot",
41 "--other",
42 dest="other",
43 required=False,
44 help="Other res to be merged with res",
45 )
46 arg_parser.add_argument(
47 "-r", "--resp", dest="resp_agent", required=True, help="Your ORCID"
48 )
49 args = arg_parser.parse_args()
50 meta_editor = MetaEditor(args.config, args.resp_agent)
51 if args.operation == "update":
52 meta_editor.update_property(args.res, args.property, args.value)
53 elif args.operation == "delete":
54 meta_editor.delete(args.res, args.property, args.value)
55 elif args.operation == "sync":
56 meta_editor.sync_rdf_with_triplestore(args.res)
57 elif args.operation == "merge":
58 merger = EntityMerger(args.config, args.resp_agent)
59 merger.process_rows(
60 [{"surviving_entity": args.res, "merged_entities": [args.other]}]
61 )