""" Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # standard imports import argparse import sys import typing # bsie imports from bsie.extractor import ExtractorBuilder from bsie.lib import PipelineBuilder from bsie.reader import ReaderBuilder from bsie.utils import bsfs, errors # exports __all__: typing.Sequence[str] = ( 'main', ) ## code ## def main(argv): """Show information from BSIE.""" parser = argparse.ArgumentParser(description=main.__doc__, prog='info') parser.add_argument('what', choices=('predicates', 'schema'), help='Select what information to show.') args = parser.parse_args(argv) # FIXME: Read reader/extractor configs from a config file # reader builder rbuild = ReaderBuilder({ }) # extractor builder ebuild = ExtractorBuilder([ {'bsie.extractor.generic.path.Path': {}}, {'bsie.extractor.generic.stat.Stat': {}}, {'bsie.extractor.generic.constant.Constant': dict( tuples=[('http://bsfs.ai/schema/Entity#author', 'Me, myself, and I')], schema=''' bse:author rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Entity ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . ''', )}, ]) # pipeline builder pbuild = PipelineBuilder( bsfs.Namespace('http://example.com/me/'), # not actually used rbuild, ebuild, ) # build pipeline pipeline = pbuild.build() # show info if args.what == 'predicates': # show predicates for pred in pipeline.schema.predicates(): print(pred.uri) elif args.what == 'schema': # show schema print(bsfs.schema.to_string(pipeline.schema)) else: # args.what is already checked by argparse raise errors.UnreachableError() ## main ## if __name__ == '__main__': main(sys.argv[1:]) ## EOF ##