diff options
Diffstat (limited to 'trygvis/eda/cli/kicad_bom_to_ttl.py')
-rwxr-xr-x | trygvis/eda/cli/kicad_bom_to_ttl.py | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/trygvis/eda/cli/kicad_bom_to_ttl.py b/trygvis/eda/cli/kicad_bom_to_ttl.py index b017767..651ad32 100755 --- a/trygvis/eda/cli/kicad_bom_to_ttl.py +++ b/trygvis/eda/cli/kicad_bom_to_ttl.py @@ -6,9 +6,15 @@ import re import sys import xml.etree.ElementTree from urllib.parse import quote_plus +from operator import attrgetter +import itertools -from trygvis.eda import cli -from trygvis.eda.kicad import rdf as kicad_rdf +import rdflib + +from .. import cli +from ..kicad import rdf as kicad_rdf +from rdflib import Literal, URIRef +from rdflib.namespace import RDF, RDFS def _clean(s): @@ -280,9 +286,6 @@ def process(src, dst, schematic_url): # for name in export.component_fields(): # cli.info(name) - from operator import attrgetter - import itertools - # cli.info("components:") # fmt = '%2s%3s' # cli.info(fmt % ('Ref', '')) @@ -345,18 +348,19 @@ def process(src, dst, schematic_url): # cli.info('Assigned part: %d / %2.f%%' % (has_part, (has_part / part_count) * 100)) # cli.info('Assigned digikey: %d / %2.f%%' % (has_digikey, (has_digikey / part_count) * 100)) - from ..kicad import rdf as kicad_rdf - from rdflib import Literal, BNode, URIRef - from rdflib.namespace import RDF, RDFS - g = cli.create_graph(kicad=True) schematic = URIRef(schematic_url) g.add((schematic, RDF.type, kicad_rdf.KICAD_TYPE.schematic)) - # componentNodes = [] + # 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. + # "http://example.org/my-board" + ref="C10" => "http://example.org/my-boardC10" + # hash("http://example.org/my-boardC10") => 123456 + # add_prefix(hash) => "https://trygvis.io/purl/kicad/generated#123456" for c in export.components: - node = BNode() + ns = rdflib.Namespace(schematic_url) + node = ns[c.ref] g.add((schematic, kicad_rdf.KICAD.component, node)) g.add((node, RDF.type, kicad_rdf.KICAD_TYPE.schematic_component)) @@ -364,7 +368,7 @@ def process(src, dst, schematic_url): g.add((node, kicad_rdf.KICAD.value, Literal(c.value.text))) for name, value in c.fields.items(): - f = BNode() + f = ns["%s-%s" % (c.ref, name)] g.add((node, kicad_rdf.KICAD.field, f)) g.add((f, RDF.type, kicad_rdf.KICAD_TYPE.field)) g.add((f, kicad_rdf.KICAD.field_name, Literal(name))) |