from rdflib.term import URIRef from trygvis.eda import cli, EDA from trygvis.eda.digikey import * def do_categories(db: DigikeyDatabase, client: DigikeyClient, output: str): cli.info("Downloading category tree") download_category_tree(db, client) def make_graph(): g = cli.create_graph(digikey=True) for pc in db.productCategories: [g.add(node) for node in pc.to_nodes()] for sc in pc.subCategories: [g.add(node) for node in sc.to_nodes()] return g cli.write_graph(make_graph, output, force_write=True) def do_category(client: DigikeyClient, sc: DigikeyProductCategory, output: str): cli.info('Downloading attributes for %s' % sc.label) def make_graph(): attributes = download_attribute_types_from_category(sc, client) g = cli.create_graph(digikey=True) g.add((sc.url(), RDF.type, OWL.Ontology)) g.add((sc.url(), OWL.imports, URIRef(rdf.DIGIKEY))) for a in attributes: [g.add(node) for node in a.to_nodes()] return g cli.write_graph(make_graph, output, force_write=True) def run(args): db = DigikeyDatabase() client = DigikeyClient() # TODO: store in database too, not sure write to disk output = "%s/digikey-categories.ttl" % args.output_dir do_categories(db, client, output) for pc in db.productCategories: for sc in pc.subCategories: output = "%s/digikey-category-%s.ttl" % (args.output_dir, normalize_filename(sc.label)) do_category(client, sc, output)