Extend source coverage to House of Graphs: just the invariants (e.g. "chromatic number", "girth", "treewidth"), not the graphs or invariant values.
Source
- Endpoint:
GET https://houseofgraphs.org/api/invariants — do not send
Accept: application/json (it returns {"error":true,"message":"Unauthorized"});
the default Accept: */* returns HAL+JSON. No auth, no pagination.
- Shape:
_embedded.invariantModelList[].entity → invariantId,
invariantName (= keyword), definition (HTML), typeName (b/i/r).
~52 entries.
Tasks
Notes
- No Wikidata cross-link property for invariants — they connect to existing concepts
via the NAME_EQ heuristic (Chromatic Number, Girth, …), which makes them handy
for the alignment-benchmark work.
Extend source coverage to House of Graphs: just the invariants (e.g. "chromatic number", "girth", "treewidth"), not the graphs or invariant values.
Source
GET https://houseofgraphs.org/api/invariants— do not sendAccept: application/json(it returns{"error":true,"message":"Unauthorized"});the default
Accept: */*returns HAL+JSON. No auth, no pagination._embedded.invariantModelList[].entity→invariantId,invariantName(=keyword),definition(HTML),typeName(b/i/r).~52 entries.
Tasks
web/slurper/source_house_of_graphs.pywith a slurper class + module-levelinstance.
HOUSE_OF_GRAPHSchoice toItem.Source.Item(source=HOUSE_OF_GRAPHS, identifier=str(invariantId), url=f"https://houseofgraphs.org/invariants/{id}", name=invariantName, description=<definition with HTML stripped>).Item.Sourcemember with a ≤4-char tag (e.g.HoG = "HoG"); add it toItem.Source.key().management/commands/import_house_of_graphs.pyandclear_house_of_graphs.py.populate-db.Makefiletargetimport-house-of-graphs.make create-migrationsfor the new Source choice.make fix-filesclean; tests pass.Notes
via the
NAME_EQheuristic (Chromatic Number, Girth, …), which makes them handyfor the alignment-benchmark work.