aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/cli/kicad_import_project.py
diff options
context:
space:
mode:
Diffstat (limited to 'trygvis/eda/cli/kicad_import_project.py')
-rwxr-xr-xtrygvis/eda/cli/kicad_import_project.py39
1 files changed, 20 insertions, 19 deletions
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