The LACK Knowledge Graph
The LACK knowledge graph is constructed through a three-phase pipeline of relation extraction from web pages, ontology alignment, entity URI generation, and relation graph construction, applied to relation extraction datasets from two investigative journalism sources covering climate lobbying.
KG at a Glance
Entities
| Count | |
|---|---|
| Total entities | 27,945 |
Persons (lack:Person) |
10,370 |
Collectives (lack:Collective) |
17,604 |
Wikidata links (owl:sameAs) |
8,280 |
| DBpedia links | 8,726 |
Relations
| Count | |
|---|---|
| Asserted (extracted) | 47,450 |
| Inferred (entailed) | 142,737 |
| Total after inferencing | 188,862 |
Relation Extraction
Relationships between persons and organisations are extracted automatically from source text using a large language model pipeline guided by the LACK ontology.
Relation types extracted
| Relation | Count |
|---|---|
lack:memberOf |
13,427 |
lack:employedBy |
5,463 |
lack:leadsAt |
5,639 |
lack:contributedTo |
6,722 |
lack:fundedBy |
5,210 |
lack:hasPartner |
2,515 |
lack:associatedWith |
3,216 |
lack:sponsored |
3,171 |
lack:derivedFrom |
1,922 |
lack:founded |
73 |
lack:hasMember |
42 |
lack:acquired |
37 |
lack:organised |
13 |
| Total | 47,450 |
Attributes
Temporal bounds attached directly to entities (rather than to relations):
| Attribute | Count |
|---|---|
lack:activeSince |
652 |
lack:activeUntil |
184 |
| Total | 836 |
Reified Statements
All extracted relations are represented as reified rdf:Statement instances, enabling provenance metadata (source URL, temporal bounds) to be attached to individual relation assertions. The total number of statements (51,848) exceeds the number of distinct relations because some entity pairs are attested by multiple sources.
| Relation | Statements |
|---|---|
lack:memberOf |
14,099 |
lack:contributedTo |
7,012 |
lack:leadsAt |
5,971 |
lack:employedBy |
5,664 |
lack:fundedBy |
5,624 |
lack:associatedWith |
3,527 |
lack:sponsored |
3,387 |
lack:hasPartner |
2,990 |
lack:derivedFrom |
1,602 |
lack:activeSince |
1,238 |
owl:sameAs |
363 |
lack:activeUntil |
203 |
lack:founded |
76 |
lack:hasMember |
42 |
lack:acquired |
37 |
lack:organised |
13 |
| Total | 51,848 |
All relations can optionally carry temporal annotations (since, until), represented via RDF reification on the rdf:Statement node.
Evaluation
Evaluated on 300 relations extracted from 8 Desmog profile pages:
| Criterion | Yes | Partly | No | Accuracy | Accuracy (with partial) |
|---|---|---|---|---|---|
| True | 279 | 18 | 3 | 0.93 | 0.99 |
| Valid | 272 | 12 | 16 | 0.907 | 0.95 |
| Time info true | 239 | 34 | 27 | 0.797 | 0.91 |
Ongoing work includes error analysis, ontology refinement, and evaluation on LobbyMap sources.
Entity Linking
Entities extracted from text are linked to canonical identifiers in Wikidata and DBpedia, enabling cross-source deduplication and enrichment. Entity linking is complete for v1.0.
Two methods were implemented and compared:
- Gemini in-context — direct linking using a large language model
- Multi-step workflow — Wikidata search followed by LLM verification (Groq + Llama 3.3 70B), including web search for disambiguation
The multi-step workflow was selected for production. Coverage in the current release:
| Count | % of entities | |
|---|---|---|
| Wikidata links | 8,280 | 30% |
| DBpedia links | 8,726 | 31% |
| Unlinked entities | 19,665 | 70% |
Entity links are represented using two distinct properties reflecting different certainty levels: owl:sameAs asserts identity between the LACK entity and the external URI, while rdfs:seeAlso indicates a related but not necessarily identical resource.
| Link type | Count |
|---|---|
owl:sameAs |
17,449 |
rdfs:seeAlso |
104,757 |
| Total | 122,206 |
Inferencing
After the asserted graph is constructed, OWL inferencing is applied using the LACK ontology to materialise:
- Inverse properties — e.g. every
lack:employedBytriple generates alack:hasEmployeetriple; everylack:memberOfgenerateslack:hasMember lack:associatedWithentailments — as the top-level superproperty, it is entailed by all other relation types
This adds 142,737 triples, bringing the total graph to 188,862 triples.
| Count | |
|---|---|
| Asserted triples | 47,450 |
| Inferred triples | 142,737 |
| Total | 188,862 |
Inferred relation breakdown
| Relation | Count |
|---|---|
lack:associatedWith |
88,650 |
lack:hasMember |
13,427 |
lack:hasEmployee |
10,638 |
lack:hasContributor |
6,722 |
lack:employedBy |
5,639 |
lack:hasLeader |
5,639 |
lack:hasFunder |
5,210 |
lack:wasSponsoredBy |
3,171 |
lack:hasPartner |
2,515 |
lack:hasDerivation |
961 |
lack:wasFoundedBy |
73 |
lack:memberOf |
42 |
lack:wasAcquiredBy |
37 |
lack:wasOrganisedBy |
13 |
| Total | 142,737 |