From 78bc8446b18f555feb9d8c872c0848a27ceed8b9 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 8 Jan 2017 01:26:44 +0100 Subject: kicad.owl: making the model look more like kicad's own model. --- trygvis/eda/cli/kicad_import_project.py | 39 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'trygvis/eda/cli/kicad_import_project.py') diff --git a/trygvis/eda/cli/kicad_import_project.py b/trygvis/eda/cli/kicad_import_project.py index 422f24a..d43b10f 100755 --- a/trygvis/eda/cli/kicad_import_project.py +++ b/trygvis/eda/cli/kicad_import_project.py @@ -63,12 +63,14 @@ def run(args): info("Version: %s, timestamp=%s" % (version, timestamp)) with src: - (version, project_g) = export_to_graph(src, project_url, version, timestamp) + data_url = URIRef(kicad_rdf.gen_random(timestamp)) + graph = export_to_graph(src, data_url) - debug('Loaded %s tuples' % len(project_g)) + graph.add((data_url, kicad_rdf.KICAD['version-uuid'], Literal(version))) + graph.add((data_url, kicad_rdf.KICAD['version-of'], URIRef(project_url))) + graph.add((data_url, kicad_rdf.KICAD['timestamp'], Literal(timestamp))) - project_g.add((URIRef(project_url), RDF.type, kicad_rdf.KICAD['project'])) - project_g.add((URIRef(project_url), kicad_rdf.KICAD['version'], version)) + debug('Loaded %s tuples' % len(graph)) if args.output_dir is not None: parent = args.output_dir @@ -77,16 +79,16 @@ def run(args): v = timestamp.strftime("%Y-%m-%d %H:%M:%S") output_file = os.path.join(parent, "project-%s.ttl" % v) - write_graph(lambda: project_g, filename=output_file, force_write=True) + write_graph(lambda: graph, filename=output_file, force_write=True) def import_project(g): - for idx, t in enumerate(project_g.triples((None, None, None))): + for idx, t in enumerate(graph.triples((None, None, None))): g.add(t) with_database(import_project) -def export_to_graph(src: object, project_url: str, version: str, timestamp: datetime.datetime) -> (str, rdflib.Graph): +def export_to_graph(src: object, url: URIRef) -> rdflib.Graph: export = Export.from_xml_file(src) # print('components:') @@ -158,11 +160,7 @@ def export_to_graph(src: object, project_url: str, version: str, timestamp: date g = create_graph(kicad=True) - version_uri = URIRef('urn:uuid:%s#' % version) - g.add((version_uri, RDF.type, kicad_rdf.KICAD["project-version"])) - g.add((version_uri, RDFS.label, Literal('Version: %s' % timestamp.strftime("%Y-%m-%d %H:%M:%S")))) - g.add((version_uri, kicad_rdf.KICAD['version-of'], URIRef(project_url))) - g.add((version_uri, kicad_rdf.KICAD['timestamp'], Literal(timestamp))) + g.add((url, RDF.type, kicad_rdf.KICAD["project"])) # The components and fields could/should have been a BNodes. Their generated names are not very nice. # TODO: try using a hash of the current value and put that under a special generated namespace. @@ -170,10 +168,11 @@ def export_to_graph(src: object, project_url: str, version: str, timestamp: date # hash('http://example.org/my-boardC10') => 123456 # add_prefix(hash) => 'https://trygvis.io/purl/kicad/generated#123456' footprints = set() + component_ns = rdflib.Namespace(str(url + "/component")) + sheet_ns = rdflib.Namespace(str(url + "/sheet")) for c in export.components: - ns = rdflib.Namespace(str(version_uri)) - node = ns[c.ref] - g.add((version_uri, kicad_rdf.KICAD['component'], node)) + node = component_ns[c.ref] + g.add((url, kicad_rdf.KICAD['component'], node)) g.add((node, RDF.type, kicad_rdf.KICAD['component'])) g.add((node, RDFS.label, Literal(c.ref))) @@ -197,12 +196,14 @@ def export_to_graph(src: object, project_url: str, version: str, timestamp: date d = export.design if d is not None: - g.add((version_uri, kicad_rdf.KICAD['design-date'], Literal(d.date))) + g.add((url, kicad_rdf.KICAD['design-date'], Literal(d.date))) for s in d.sheets: - sheet_uri = kicad_rdf.gen_random(s.number) - g.add((sheet_uri, RDF.type, kicad_rdf.KICAD['sheet'])) label = s.title_block.title if s.title_block.title is not None and len(s.title_block.title) > 0 else s.name + + sheet_uri = sheet_ns[s.number] + g.add((url, kicad_rdf.KICAD['sheet'], sheet_uri)) + g.add((sheet_uri, RDF.type, kicad_rdf.KICAD['sheet'])) g.add((sheet_uri, RDFS.label, Literal(label))) g.add((sheet_uri, kicad_rdf.KICAD['sheet-name'], Literal(s.name))) g.add((sheet_uri, kicad_rdf.KICAD['sheet-number'], Literal(int(s.number)))) @@ -210,4 +211,4 @@ def export_to_graph(src: object, project_url: str, version: str, timestamp: date g.add((sheet_uri, kicad_rdf.KICAD['rev'], Literal(s.title_block.rev))) g.add((sheet_uri, kicad_rdf.KICAD['date'], Literal(s.title_block.date))) - return version_uri, g + return g -- cgit v1.2.3