#include "facts.dl" #include "kicad-mpn.dl" .decl add_fact(part_uri:symbol, key:symbol, value:symbol) .output add_fact // --------------------------------------------------------------------------------------------------------------------- // Resistor rules .decl resistor_symbol(lib:symbol, name:symbol) .decl resistor_lib(lib:symbol) resistor_lib("Resistor_SMD"). resistor_lib("Resistor_THT"). // Old names resistor_lib("Resistors_SMD"). resistor_lib("Resistors_THT"). .decl resistor(uri:symbol) resistor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib), resistor_lib(lib). resistor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), resistor_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#resistor") :- resistor(Part). // --------------------------------------------------------------------------------------------------------------------- // Capacitor rules .decl capacitor_symbol(lib:symbol, name:symbol) .decl capacitor_lib(lib:symbol) capacitor_lib("Capacitor_SMD"). .decl capacitor(uri:symbol) capacitor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib), capacitor_lib(lib). capacitor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), capacitor_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#capacitor") :- capacitor(Part). // --------------------------------------------------------------------------------------------------------------------- // Inductor rules .decl inductor_symbol(lib:symbol, name:symbol) .decl inductor_lib(lib:symbol) inductor_lib("Inductor_SMD"). .decl inductor(uri:symbol) inductor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib), inductor_lib(lib). inductor(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), inductor_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#inductor") :- inductor(Part). // --------------------------------------------------------------------------------------------------------------------- // LED rules .decl led_symbol(lib:symbol, name:symbol) .decl led_lib(lib:symbol) led_lib("led_SMD"). .decl led(uri:symbol) led(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib), led_lib(lib). led(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), led_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#led") :- led(Part). // --------------------------------------------------------------------------------------------------------------------- // Net tie rules // Net ties and test points should probably not be marked as components to buy. Test points is possible to buy and // install so that needs to be an option. .decl net_tie_lib(lib:symbol) .decl net_tie_symbol(lib:symbol, name:symbol) net_tie_symbol("Device", "Net-Tie_2"). net_tie_symbol("Device", "Net-Tie_3"). net_tie_symbol("Device", "Net-Tie_3_Tee"). net_tie_symbol("Device", "Net-Tie_4"). net_tie_symbol("Device", "Net-Tie_4_Cross"). .decl net_tie(uri:symbol) net_tie(Part) :- net_tie_lib(lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib). net_tie(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), net_tie_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#net-tie") :- net_tie(Part). // --------------------------------------------------------------------------------------------------------------------- // Test point rules .decl test_point_lib(lib:symbol) .decl test_point_symbol(lib:symbol, name:symbol) test_point_symbol("Connector", "TestPoint"). test_point_symbol("Connector", "TestPoint_2Pole"). test_point_symbol("Connector", "TestPoint_Alt"). test_point_symbol("Connector", "TestPoint_Flag"). test_point_symbol("Connector", "TestPoint_Probe"). .decl test_point(uri:symbol) test_point(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), test_point_lib(lib). test_point(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), test_point_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#test-point") :- test_point(Part). // --------------------------------------------------------------------------------------------------------------------- // Mounting hole rules .decl mounting_hole_lib(lib:symbol) .decl mounting_hole_symbol(lib:symbol, name:symbol) mounting_hole_symbol("Mechanical", "MountingHole"). .decl mounting_hole(uri:symbol) mounting_hole(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), mounting_hole_lib(lib). mounting_hole(Part) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib), fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name), mounting_hole_symbol(lib, name). add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#mounting-hole") :- mounting_hole(Part). // Value add_fact(Part, "http://purl.org/ee/fact-type/value", value) :- fact(Part, "http://purl.org/ee/kicad-sch-fact-type#value", value).