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

1# SPDX-FileCopyrightText: 2021-2026 Arcangelo Massari <arcangelo.massari@unibo.it> 

2# 

3# SPDX-License-Identifier: ISC 

4 

5from argparse import ArgumentParser 

6 

7from oc_meta.core.editor import MetaEditor 

8from oc_meta.run.merge.entities import EntityMerger 

9 

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 )