aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/cli/kicad_bom_to_ttl.py
diff options
context:
space:
mode:
Diffstat (limited to 'trygvis/eda/cli/kicad_bom_to_ttl.py')
-rwxr-xr-xtrygvis/eda/cli/kicad_bom_to_ttl.py28
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)))