feat: replace external sample documents with bundled demo content (#956)

Replaces the URL-based PDF downloads in tg-load-sample-documents with
seven curated, locally bundled documents covering diverse topics (recipes,
Belgian beer, trade routes, corporate scandals, pets, fortifications,
Bronze Age collapse). Documents are packaged as data files within
trustgraph-cli and loaded from metadata.json, removing the dependency
on external URLs and the doc-cache mechanism.
This commit is contained in:
cybermaggedon 2026-05-28 11:03:00 +01:00 committed by GitHub
parent fd6e3e1269
commit 4f2185c621
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 1541 additions and 682 deletions

53
test-data/belgian-beer.md Normal file
View file

@ -0,0 +1,53 @@
# The Brewing Traditions of Belgium
## Section 1: The Fermentation Foundations (Yeasts & Styles)
### Component A: The Ardennes Isolation Strain
- **Alternative Names:** Strain-71, The Trappist Yeast, Wallonian Culture.
- **Origin:** Historically isolated in the rugged forests of the Ardennes region, shared via mutual trade agreements between various monastic brewing sites.
- **Characteristics:** A high-attenuation, top-fermenting yeast culture (*Saccharomyces cerevisiae*) that thrives at elevated temperatures (20°C to 26°C). It produces heavy volatile esters reminiscent of clove, banana, and white pepper.
- **Downstream Dependencies:** Essential biological engine required to brew The Westvleteren Quad and The Chimay Grand Réserve.
### Component B: Brettanomyces Bruxellensis
- **Alternative Names:** Wild Yeast, The Brussels Funk, Pajottenland Air.
- **Origin:** Indigenous entirely to the Senne River Valley and the surrounding Pajottenland region southwest of Brussels. It cannot be cultured in a standard laboratory setting for primary fermentation; it must be caught ambiently from the atmosphere.
- **Characteristics:** A slow-acting, wild yeast strain that consumes complex sugars that standard yeasts cannot digest. It introduces lactic acid and earthy, "barnyard" aroma characteristics over a 1 to 3-year aging cycle.
- **Downstream Dependencies:** Biological prerequisite for Oude Geuze and The Flemish Red Ale.
## Section 2: Monastic & Trappist Hierarchies (Appellation Controlled)
### Beer 1: The Westvleteren Quad
- **Alternative Names:** Westvleteren 12, The Yellow Cap.
- **Origin:** Brewed exclusively inside the walls of the Abbey of Saint-Sixtus in Westvleteren, Flanders. Holds the strict "Authentic Trappist Product" (ATP) legal designation.
- **Ingredients:** The Ardennes Isolation Strain, local soft water, pale malt, dark liquid candi sugar (sucrose solution), and Northern Brewer hops.
- **Process:** Primary fermentation utilizing the Ardennes strain for 7 days. Afterward, dark candi sugar is injected into the green beer to trigger a secondary fermentation stage. Crucially, the beer is bottled completely unfiltered with active yeast cells, requiring a mandatory 3-month cellar conditioning period to carbonate inside the bottle.
### Beer 2: The Chimay Grand Réserve
- **Alternative Names:** Chimay Blue, The Grande Réserve.
- **Origin:** Brewed inside the Scourmont Abbey in Hainaut, Wallonia. Also carries the ATP designation.
- **Ingredients:** The Ardennes Isolation Strain, estate-drawn well water, malted barley, Hallertau Mittelfrüh hops, and caramelized sugar.
- **Process:** Follows a parallel fermentation profile to the Westvleteren Quad, using the exact same ancestral yeast strain but utilizing a different mineral profile in the water, resulting in a drier, more dark-fruit-forward profile.
## Section 3: Spontaneous & Sour Traditions (Wild Ecosystems)
### Beer 3: Oude Geuze
- **Alternative Names:** The Champagne of Belgium, Brussels Lambic.
- **Origin:** The Pajottenland region. It is legally protected; it cannot be called "Oude Geuze" unless it is spontaneously fermented by the regional air.
- **Ingredients:** Unmalted wheat (30%), Pale barley malt (70%), aged "suranné" hops (which lose their bitterness but retain preservative qualities), and ambient Brettanomyces Bruxellensis.
- **Process:** Boiling wort is pumped into an open-air shallow vessel called a "coolship" overnight to cool down, absorbing wild microbes from the Senne Valley breeze.
**The Blending Protocol Dispute (Critical Logic Test):**
- **The Traditionalist Assembly:** A true Oude Geuze is a blend of 1-year-old young lambic (which provides active sugars) and 3-year-old vintage lambic (which provides complex sourness).
- **The Industrial Controversy:** Some macro-breweries pasteurize the blend and inject artificial sweeteners (aspartame) to neutralize the sourness for commercial appeal. Traditionalists argue this strips the product of its geographic identity and violates the "Oude" (Old) designation.
### Beer 4: The Flemish Red Ale
- **Alternative Names:** Rodenbach style, West-Flemish Sour.
- **Origin:** Roeselare, West Flanders.
- **Ingredients:** Red-kilned malts, aged hops, standard top-fermenting yeast, and a secondary inoculation of Brettanomyces Bruxellensis.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,13 @@
# The Domestic Canopy: A Unified Narrative of Companionship
The story of the human-animal bond begins not with a conscious decision to breed a companion, but with an ancient, mutual opportunism in the frozen wastes of the late Pleistocene. Long before the advent of agriculture, the gray wolf (*Canis lupus*) began to separate from its wild packs, drawn to the peripheral campfires of Eurasian hunter-gatherers. These ancestral canids, which would morph over millennia into the domesticated dog (*Canis lupus familiaris*), offered early humans an unparalleled early-warning system against apex predators and an invaluable partner in the persistence hunt. In return, humans provided a steady supply of megafauna marrow, cooked gristle, and proximity to warmth. This biological pact was so profound that it transcended mere utility, as evidenced by the late Paleolithic Natufian burial sites in the Levant, where human skeletons were interred with their hands resting gently upon the ribcages of wolf pups, marking the earliest archaeological signature of the transition from working tool to sentimental proxy.
As the ice sheets retreated and humanity anchored itself to the soil during the Neolithic Revolution, the nature of animal companionship shifted dramatically, giving rise to an entirely different ecological dynamic in the Fertile Crescent. The rise of grain storehouses in ancient Egypt attracted unprecedented swarms of rodents, creating a pristine ecological niche for the North African wildcat (*Felis lybica*). Unlike the highly structured social hierarchy of the wolf, the cat domesticated itself on terms of aloof independence, transitioning from a tolerated pest-control mechanism to a revered icon of divine protection. By the time of the Egyptian Middle Kingdom, cats were so thoroughly integrated into the domestic fabric that they were granted formal mourning rites; Roman historians like Herodotus noted that when a house cat died of natural causes, the entire human household would shave their eyebrows as a public manifestation of grief. These felines were often mummified using the same costly natron resins reserved for the nobility and entombed in specialized necropolises like Bubastis, dedicated to the feline-headed deity Bastet, effectively blending religious cosmology with domestic affection.
Parallel developments were unfolding across the globe, creating distinct regional pockets of companionship that would later collide through imperial trade. In the Andean highlands of South America, the Incas domesticated the guinea pig (*Cavia porcellus*), known locally as the cuy. While primarily a source of protein and a diagnostic tool used by folk healers to absorb illness from the sick, select lineages were kept by children as cherished house-dwellers. Meanwhile, in the imperial courts of Han Dynasty China, a parallel phenomenon saw the intensive breeding of the Pekingese dog. These small, flat-faced canids were selectively bred to resemble miniature lions — the mythical protectors of Buddhism — and were guarded so fiercely within the walls of the Forbidden City that stealing one was punishable by death. They lived a life of pampered luxury, carried in the sleeves of silk robes and tended to by dedicated eunuchs, establishing an early historical precedent where certain animal breeds functioned strictly as status symbols and manifestations of political sovereignty rather than utilitarian workers.
The classical antiquity of Europe further complicated this tapestry, as the Roman elite integrated exoticism into their definition of the domestic sphere. Roman matrons frequently kept ring-necked parakeets (*Psittacula krameri*) imported from the conquests of India, housing them in elaborate cages of ivory and silver, and teaching them to speak the name of the Emperor. Concurrently, the Roman fondness for the ferret (*Mustela furo*) emerged as a dual-purpose phenomenon; these mustelids were kept both to flush rabbits from agricultural burrows and as slinky, playful companions within the villa. This Roman domestic ecosystem was heavily documented by Pliny the Elder in his Natural History, where he noted that the elite often developed deep, seemingly irrational emotional attachments to their companion animals, including pet fish like the moray eel, which the orator Hortensius reportedly wept over when it died in his private ornamental pond.
The medieval period in Europe introduced a sharp class divide to the concept of the pet, often viewed through the suspicious lens of ecclesiastical authority. While the peasantry kept functional yard dogs and barn cats, the high nobility — particularly noblewomen and monastic figures — indulged in the keeping of lapdogs, such as the early Maltese, and refined birds of prey. These lapdogs were often criticized by conservative church theologians who argued that the excessive meat fed to pampered pets belonged in the mouths of the starving peasantry. Furthermore, during the height of the European witch trials, the domestic pet — particularly the black cat, the toad, or the ferret — was frequently demonized by inquisitors as a "familiar," a physical vessel housing a demonic spirit. This created a perilous cultural paradox where an animal could be viewed as a comforting hearth-companion in one household and an existential piece of heretical evidence in another.
The modern concept of pet-keeping as a universal consumer phenomenon crystallized during the Industrial Revolution and the rise of the Victorian middle class. As populations migrated from rural farms to dense urban centers, the severed connection to nature triggered a romanticized counter-movement. The Victorians elevated the domestic home into a moral sanctuary, and the pet was introduced as a pedagogical tool to teach children empathy, kindness, and middle-class domestic virtues. This era saw the birth of the commercial pet industry: standard kibble formulations were patented by James Spratt in the 1860s, dog shows like Crufts were established to formalize breed standards, and specialized pet cemeteries, like the one in London's Hyde Park, emerged to afford animals a dignified transition into the afterlife. The pet was no longer a working asset or an eccentric luxury of the aristocratic elite; it had become an institutionalized member of the nuclear family unit, setting the stage for the hyper-commodified, emotionally complex multi-billion dollar pet industry of the contemporary era.

527
test-data/metadata.json Normal file
View file

@ -0,0 +1,527 @@
[
{
"id": "https://trustgraph.ai/doc/west-country-recipes",
"title": "The Foundations of West Country Cooking",
"comments": "A structured guide to traditional West Country recipes including clotted cream, scones, hedgerow jam, the cream tea, Cornish pasty, homity pie, and Devonshire fudge, with regional supply chain dependencies.",
"file": "recipes.md",
"kind": "text/markdown",
"tags": ["cooking", "west-country", "devon", "cornwall", "recipes", "food-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Foundations of West Country Cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Foundations of West Country Cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A structured guide to traditional West Country recipes including clotted cream, scones, hedgerow jam, the cream tea, Cornish pasty, homity pie, and Devonshire fudge, with regional supply chain dependencies."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "west-country"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "devon"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cornwall"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "recipes"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "food-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/belgian-beer",
"title": "The Brewing Traditions of Belgium",
"comments": "An exploration of Belgian brewing traditions covering Trappist yeasts, wild fermentation, monastic beers including Westvleteren and Chimay, spontaneous sour traditions like Oude Geuze and Flemish Red Ale.",
"file": "belgian-beer.md",
"kind": "text/markdown",
"tags": ["brewing", "belgium", "beer", "trappist", "fermentation", "food-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Brewing Traditions of Belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Brewing Traditions of Belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "An exploration of Belgian brewing traditions covering Trappist yeasts, wild fermentation, monastic beers including Westvleteren and Chimay, spontaneous sour traditions like Oude Geuze and Flemish Red Ale."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "brewing"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "beer"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trappist"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "fermentation"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "food-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/trade-routes-europe",
"title": "Traditional Trade Routes of Pre-Modern Europe",
"comments": "A structured overview of pre-modern European trade networks including the Hanseatic Baltic Route and Venetian Maritime Route, hub cities like Bruges, Lübeck, and Constantinople, specialized commodities, and geopolitical chokepoints.",
"file": "trade-routes-europe.md",
"kind": "text/markdown",
"tags": ["trade", "medieval", "europe", "hanseatic-league", "venice", "economic-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Traditional Trade Routes of Pre-Modern Europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Traditional Trade Routes of Pre-Modern Europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A structured overview of pre-modern European trade networks including the Hanseatic Baltic Route and Venetian Maritime Route, hub cities like Bruges, Lübeck, and Constantinople, specialized commodities, and geopolitical chokepoints."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trade"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "medieval"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "hanseatic-league"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "venice"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "economic-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/corporate-scandals",
"title": "Global Corporate Fraud & Governance Failures",
"comments": "Detailed analysis of major corporate fraud cases including Enron and Wirecard, covering the financial engineering mechanisms, key executives, audit failures, whistleblowers, and collapse sequences.",
"file": "corporate-scandals.pdf",
"kind": "application/pdf",
"tags": ["corporate-fraud", "enron", "wirecard", "accounting", "governance", "financial-crime"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Global Corporate Fraud & Governance Failures"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Global Corporate Fraud & Governance Failures"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "Detailed analysis of major corporate fraud cases including Enron and Wirecard, covering the financial engineering mechanisms, key executives, audit failures, whistleblowers, and collapse sequences."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "corporate-fraud"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "enron"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "wirecard"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "accounting"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "governance"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "financial-crime"}
}
]
},
{
"id": "https://trustgraph.ai/doc/history-of-pets",
"title": "The Domestic Canopy: A Unified Narrative of Companionship",
"comments": "A narrative history of human-animal companionship from Pleistocene wolf domestication through Egyptian cat worship, Roman exotic pets, medieval class divides, to the Victorian birth of the commercial pet industry.",
"file": "history-of-pets.md",
"kind": "text/markdown",
"tags": ["pets", "domestication", "animal-history", "cultural-history", "dogs", "cats"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Domestic Canopy: A Unified Narrative of Companionship"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Domestic Canopy: A Unified Narrative of Companionship"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A narrative history of human-animal companionship from Pleistocene wolf domestication through Egyptian cat worship, Roman exotic pets, medieval class divides, to the Victorian birth of the commercial pet industry."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "pets"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "domestication"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "animal-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cultural-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "dogs"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cats"}
}
]
},
{
"id": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c",
"title": "Military Fortifications in 19th Century America",
"comments": "The evolution of American military fortification from the Third System masonry forts through Civil War obsolescence to earthwork defenses, plus the parallel development of frontier forts for westward expansion.",
"file": "mil-fortifications-america-19th-c.md",
"kind": "text/markdown",
"tags": ["military-history", "fortifications", "civil-war", "engineering", "american-history", "coastal-defense"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Military Fortifications in 19th Century America"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Military Fortifications in 19th Century America"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "The evolution of American military fortification from the Third System masonry forts through Civil War obsolescence to earthwork defenses, plus the parallel development of frontier forts for westward expansion."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "military-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "fortifications"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "civil-war"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "engineering"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "american-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "coastal-defense"}
}
]
},
{
"id": "https://trustgraph.ai/doc/bronze-age-collapse",
"title": "Echoes of the Void: The Late Bronze Age Collapse",
"comments": "A synthesis of the Late Bronze Age Collapse (c. 1200-1150 BCE) covering the interconnected trade networks, the cascade of failure from drought through the Sea Peoples to internal revolt, archaeological evidence, and the transition to the Iron Age.",
"file": "bronze-age-collapse.pdf",
"kind": "application/pdf",
"tags": ["bronze-age", "ancient-history", "archaeology", "mediterranean", "trade", "collapse"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Echoes of the Void: The Late Bronze Age Collapse"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Echoes of the Void: The Late Bronze Age Collapse"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A synthesis of the Late Bronze Age Collapse (c. 1200-1150 BCE) covering the interconnected trade networks, the cascade of failure from drought through the Sea Peoples to internal revolt, archaeological evidence, and the transition to the Iron Age."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "bronze-age"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "ancient-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "archaeology"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "mediterranean"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trade"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "collapse"}
}
]
}
]

View file

@ -0,0 +1,11 @@
# Military Fortifications in 19th Century America
The evolution of coastal and frontier defense across North America during the nineteenth century reflects a turbulent transition from traditional European masonry concepts to the brutal realities of industrialized warfare. At the dawn of the century, the young United States found its sprawling coastline dangerously exposed to the naval might of European empires. In response, the federal government embarked on a massive, highly centralized building program known as the Third System of fortifications. Orchestrated primarily by the newly formed U.S. Army Corps of Engineers and heavily influenced by French military engineer Simon Bernard, this system sought to seal off strategic harbors, naval shipyards, and commercial estuaries from maritime invasion. These fortifications were characterized by massive, multi-tiered masonry walls constructed of brick and stone, designed to mount several tiers of heavy cannon firing through vaulted casemates, thereby concentrating overwhelming firepower against hostile warships.
The architectural pinnacle of this philosophy was realized in structures like Fort Jefferson, situated on a remote key in the Dry Tortugas of the Gulf of Mexico, and Fort Sumter, guarding the entrance to Charleston Harbor. These fortresses were essentially artificial islands of masonry, featuring complex geometric designs — often pentagonal or hexagonal — to eliminate dead angles where an enemy could seek shelter from the garrison's fire. The walls were constructed using millions of locally fired bricks, backed by concrete and earth, creating a dense barrier meant to absorb the impact of smoothbore solid shot. Within these structures, the invention of the Totten shutter — a pair of iron doors that automatically closed over the cannon embrasure after firing — protected the artillerists from incoming musket fire and grape shot. For the first half of the century, these towering masonry sentinels were considered functionally impregnable to naval assault, as wooden warships could rarely sustain the prolonged, concentrated bombardment required to breach such thick brick facades.
However, the catastrophic vulnerabilities of the Third System were violently exposed during the American Civil War, rendering traditional masonry fortifications obsolete almost overnight. The catalyst for this military revolution was the introduction of the rifled cannon, most notably the James and Parrott rifles. Unlike the round, smoothbore cannonballs that shattered against brickwork with diminishing effect, elongated rifled projectiles spun like rifle bullets, striking the masonry with immense kinetic energy and drilling into the brickwork with a devastating, jackhammer-like effect. This paradigm shift was demonstrated at the Siege of Fort Pulaski near Savannah, Georgia, in April 1862. Union forces stationed on Tybee Island opened fire with rifled artillery from a distance of over a mile — a range previously considered entirely safe by the fort's defenders. Within thirty hours, the rifled shells tore through the massive brick walls of Fort Pulaski, breaching the solid masonry and threatening to ignite the fort's main powder magazine, forcing an immediate surrender.
This sudden obsolescence forced military engineers to radically re-evaluate defensive architecture, pivoting away from vertical masonry toward low-profile earthworks and subterranean engineering. It was discovered that simple mounds of loose sand and compacted earth absorbed the impact of rifled shells far better than rigid brick, as the displaced soil naturally filled in the craters left by explosions. This gave rise to formidable improvisations like Fort Fisher in North Carolina, often dubbed the "Malachite of America." Fort Fisher was an immense earthen stronghold constructed of sand face-traverses and underground bombproofs, which successfully withstood the largest naval bombardments of the war because the Union fleet's shells merely rearranged the sand rather than shattering a structural foundation. Consequently, post-Civil War modifications to coastal defense saw engineers cutting down the towering brick walls of older forts, burying them under massive earth glacis, and preparing the way for the Endicott System at the end of the century, which utilized reinforced concrete, low-profile designs, and disappearing guns.
Concurrently, a completely different doctrine of military architecture was unfolding along the interior frontiers of the continent, where the purpose of fortification was not to resist heavy naval artillery, but to project geopolitical power, control trade routes, and subjugate Indigenous populations. These interior strongholds, such as Fort Laramie in Wyoming or Fort Snelling in Minnesota, abandoned the complex geometry and multi-tiered casemates of coastal engineering in favor of practical, localized utility. Often constructed initially of timber palisades or sun-dried adobe brick depending on the regional geography, these frontier forts served as fortified outposts for the U.S. Army, fur trading companies, and westward migrants. Rather than being designed to withstand a siege by a peer military force, their layouts usually featured a wide, open central parade ground surrounded by barracks, officer quarters, and a defensive perimeter designed to repel swift cavalry raids, protect supply depots, and enforce the shifting boundaries of American westward expansion.

70
test-data/recipes.md Normal file
View file

@ -0,0 +1,70 @@
# The Foundations of West Country Cooking
## Section 1: The Foundations (Primary Ingredients & Sub-Recipes)
### Component A: West Country Clotted Cream
- **Alternative Names:** Devonshire Cream, Cornish Cream.
- **Origin:** Universally produced across the pastures of Devon and Cornwall, utilizing milk from Red Ruby Devon cattle.
- **Ingredients:** 2 Litres of Unpasteurized Whole Milk (High-fat dairy).
- **Process:** Pour the raw milk into a shallow brass pan. Allow it to sit for 12 hours until a thick layer of cream rises to the surface. Heat the pan slowly over a low, indirect flame (traditionally over a wood-fired stove) until the cream begins to "crinkle" but never boil. Remove from heat and cool in a larder for 24 hours. Gently skim the thick, golden crust from the top.
- **Downstream Dependencies:** Essential component for The South West Cream Tea and Devonshire Fudge.
### Component B: Sweet Scones
- **Alternative Names:** Hearth Cakes, Country Splits.
- **Origin:** Common across Somerset, Dorset, Devon, and Cornwall.
- **Ingredients:** 450g Self-Raising Flour, 100g Salted Butter, 50g Caster Sugar, 1 pinch of Salt, 250ml Whole Milk.
- **Process:** Rub the salted butter into the self-raising flour until it resembles fine breadcrumbs. Stir in the caster sugar and salt. Pour in the whole milk gradually, mixing with a blunt knife until a soft dough forms. Roll out on a floured surface to 2cm thickness and stamp out rounds. Bake at 220°C for 12 minutes until golden.
- **Downstream Dependencies:** Required component for The South West Cream Tea.
### Component C: Hedgerow Jam
- **Alternative Names:** Whortleberry Preserve, Blackberry Jam.
- **Origin:** Produced extensively in the Exmoor and Dartmoor regions of Devon and Somerset.
- **Ingredients:** 1kg Wild Blackberries (Whortleberries), 1kg Granulated Sugar, Juice of 1 Lemon (for pectin).
- **Process:** Combine blackberries, sugar, and lemon juice in a large copper preserving pan. Heat gently until the sugar dissolves entirely. Bring to a rolling boil for 15 minutes until the setting point of 105°C is reached. Pour into sterilized jars.
- **Downstream Dependencies:** Required component for The South West Cream Tea.
## Section 2: Regional Showcases (Assembled Dishes)
### Dish 1: The South West Cream Tea
- **Alternative Names:** Afternoon Tea, Devonshire Tea.
- **Origin:** Heavily disputed between the historical houses of Devon and Cornwall.
- **Core Components:** Requires 1 batch of Sweet Scones, 1 jar of Hedgerow Jam, and a generous portion of West Country Clotted Cream. Always served alongside a pot of hot Black Tea.
**The Assembly Protocol Dispute (Critical Logic Test):**
- **The Devon Method:** The scone is split in half. The West Country Clotted Cream is spread first onto the warm scone, acting as butter, and is then topped with a dollop of Hedgerow Jam.
- **The Cornish Method:** The scone is split in half. The Hedgerow Jam is spread directly onto the scone first, and is subsequently topped with a spoonful of West Country Clotted Cream.
### Dish 2: The Cornish Pasty
- **Alternative Names:** Oggy, The Miner's Lunch.
- **Origin:** Cornwall (Specifically protected by PGI status, meaning it must be prepared within the county borders).
- **Ingredients:** 500g Shortcrust Pastry, 400g Beef Skirt (cubed), 300g Potato (peeled and diced), 150g Swede (locally referred to as 'Turnip' in Cornwall), 150g Onion (finely chopped), Salt and Black Pepper, 1 Egg (beaten, for glaze).
- **Process:** Roll the pastry and cut into large circles. Place the raw beef, potato, swede, and onion on one half of the circle. Season generously. Fold the pastry over to form a D-shape and crimp the edges firmly to create a thick ridge. Brush with the beaten egg and bake at 200°C for 45 minutes.
- **Historical Context:** The thick crimped ridge allowed Cornish tin miners to hold the pasty with dirty, arsenic-covered hands and discard the crust afterward.
### Dish 3: Devonshire Homity Pie
- **Alternative Names:** Land Girls' Pie.
- **Origin:** Popularized in Devon by the Women's Land Army during world war rationing.
- **Ingredients:** 1 Pre-baked Shortcrust Pastry Case, 500g Potatoes (boiled and cubed), 2 Large Leeks (sliced), 1 Large Onion (chopped), 50g Salted Butter, 150g Mature Cheddar Cheese (sourced from Somerset), 2 tbsps Fresh Parsley.
- **Process:** Melt the salted butter in a pan and sauté the leeks and onions until soft. Stir in the cubed potatoes, parsley, and half of the Somerset-sourced Mature Cheddar Cheese. Spoon the filling into the pre-baked pastry case. Top with the remaining cheese and bake at 190°C for 25 minutes until bubbling.
## Section 3: Sweets & Confectionery
### Dish 4: Devonshire Fudge
- **Alternative Names:** Clotted Cream Fudge.
- **Origin:** Widely sold along the coastal towns of South Devon.
- **Ingredients:** 175g West Country Clotted Cream, 450g Caster Sugar, 115g Glucose Syrup, 1 tbsp Vanilla Extract.
- **Process:** Combine the caster sugar, glucose syrup, and West Country Clotted Cream in a heavy-based saucepan. Bring to a boil, stirring continuously until the mixture reaches the "soft ball" stage (116°C). Remove from heat, add vanilla extract, and beat vigorously with a wooden spoon until the mixture thickens and loses its gloss. Pour into a lined tin and allow to set.
## Section 4: Local Supply Chain & Geopolitical Geography
- **The Dairy Belt:** Devon and Cornwall are primary rivals in dairy manufacturing. Devon relies heavily on the Red Ruby cattle breed, whereas Cornwall utilizes traditional mixed-pasture herds. Both rely on Somerset for auxiliary hard cheeses like Cheddar.
- **The Allium Link:** Onions and leeks are the common denominator connecting the savory dishes of Devon (Homity Pie) and Cornwall (Cornish Pasty).
- **The Pectin Shortage Risk:** Should a frost hit the Tamar Valley, the production of Hedgerow Jam ceases, creating a supply bottleneck that directly disables the serving of The South West Cream Tea, despite dairy availability.

View file

@ -0,0 +1,63 @@
# Traditional Trade Routes of Pre-Modern Europe
## Section 1: The Arteries (The Core Networks)
### Network A: The Hanseatic Baltic Route
- **Alternative Names:** The Hansa Network, The Northern Guild Rim.
- **Geographical Span:** Spans from the North Sea across the Baltic Sea, linking London, Bruges, Lübeck, Danzig, and Novgorod.
- **Primary Commodities:** Timber, Fur, Flax, Stockfish, Amber.
- **Downstream Dependencies:** Provides raw materials for Western European shipbuilding and winter clothing markets.
### Network B: The Venetian Maritime Route
- **Alternative Names:** The Levantine Silk Spoke, The Adriatic Lifeline.
- **Geographical Span:** Connects Venice through the Adriatic Sea, around Greece, to Constantinople and Alexandria.
- **Primary Commodities:** Silk, Pepper, Cinnamon, Alum, Glassware.
- **Downstream Dependencies:** Feeds the luxury markets of the Holy Roman Empire via alpine passes.
## Section 2: Hub Cities & Commodity Crossings
### Hub 1: Bruges (The Low Countries)
- **Alternative Names:** Brugge, The Flanders Staple.
- **Geographical Intersection:** The primary terminus where The Hanseatic Baltic Route meets Western European land routes.
**The Staple Right Dispute (Critical Logic Test):**
- **The Guild Law:** By ducal decree, all foreign merchants traveling through Flanders must unload their ships at Bruges and offer their goods for sale for a mandatory 15 days before they can proceed.
- **The English Subversion:** English wool merchants, seeking to bypass the Bruges tax, began smuggling raw wool directly to Antwerp, sparking an economic blockade by the Hanseatic League against English shipping.
### Hub 2: Lübeck (The Baltic Capital)
- **Alternative Names:** Lubeca, The Queen of the Hansa.
- **Geographical Intersection:** Located in Northern Germany, acting as the administrative node connecting the North Sea (via the Kiel land-bridge) to the wider Baltic Sea.
- **Resource Matrix:** Completely dependent on the Lüneburg Salt Works for its primary processing industry (herring preservation).
### Hub 3: Constantinople (The Gateway)
- **Alternative Names:** Byzantium, Istanbul, Miklagard.
- **Geographical Intersection:** The western terminus of the Silk Road land routes and the northern terminus of The Venetian Maritime Route.
- **Controlling Entity:** Transferred from Byzantine control to Ottoman control in 1453, altering the tariff structures for all Christian merchants.
## Section 3: Specialized Commodities & Processing Nodes
### Item 1: Lüneburg Salt
- **Alternative Names:** White Gold, Northern Brine.
- **Origin:** Extracted from the brine springs of Lüneburg, Germany.
- **Process:** Boiled in massive lead pans using timber sourced from local forests.
- **Critical Dependency Link:** This salt is shipped directly to Bergen (Norway) via Lübeck to pack and preserve Scania Herring. Without this specific salt supply, Baltic fish rots before reaching Western markets.
### Item 2: Phocaean Alum
- **Alternative Names:** The Weaver's Fixative, Anatolian Alum.
- **Origin:** Mined in the hills of Phocaea (Asia Minor) under the jurisdiction of the Genoese Republic, later seized by regional powers.
- **Process:** Shipped via Mediterranean maritime routes to Flanders and Florence.
- **Chemical Function:** A mandatory chemical mordant required to fix dyes to wool and textiles. Without Alum, the famous Flemish textile industry cannot produce colored cloth.
## Section 4: Geopolitical Disruptions & Chokepoints
- **The Sound Toll Bottleneck:** The King of Denmark levies a mandatory tax on all ships entering or leaving the Baltic Sea through the Øresund strait. A diplomatic dispute or military blockade of the Sound by Denmark instantly halts the flow of Russian timber to the English Royal Dockyards.
- **The Sound-to-Salt Ripple Effect:** If the forests around Lüneburg are depleted, salt production drops. This directly causes a collapse in the Bergen fish trade, which in turn causes a protein shortage and subsequent famine in the labor forces of the Flemish textile hubs.
- **The Alum Monopolization:** Following conflicts in the East, the discovery of a domestic alum mine in Tolfa (Papal States) in 1461 caused a massive geopolitical shift, as the Pope banned the import of "infidel alum" from the East, forcing Venetian merchants to pivot their supply lines inward.

View file

@ -121,6 +121,9 @@ tg-show-extraction-provenance = "trustgraph.cli.show_extraction_provenance:main"
tg-list-explain-traces = "trustgraph.cli.list_explain_traces:main"
tg-show-explain-trace = "trustgraph.cli.show_explain_trace:main"
[tool.setuptools.package-data]
"trustgraph.cli.sample_documents" = ["*.md", "*.pdf", "*.json"]
[tool.setuptools.packages.find]
include = ["trustgraph*"]

View file

@ -1,709 +1,82 @@
"""
Loads a PDF document into the library
Loads sample documents into the TrustGraph library from bundled package data.
"""
import argparse
import json
import os
import uuid
import datetime
import requests
from importlib import resources
from trustgraph.api import Api
from trustgraph.api.types import hash, Uri, Literal, Triple
from trustgraph.api.types import Uri, Literal, Triple
default_url = os.getenv("TRUSTGRAPH_URL", 'http://localhost:8088/')
default_token = os.getenv("TRUSTGRAPH_TOKEN", None)
default_workspace = os.getenv("TRUSTGRAPH_WORKSPACE", "default")
from requests.adapters import HTTPAdapter
from urllib3.response import HTTPResponse
class FileAdapter(HTTPAdapter):
def send(self, request, *args, **kwargs):
resp = HTTPResponse(body=open(request.url[7:], 'rb'), status=200, preload_content=False)
return self.build_response(request, resp)
session = requests.session()
session.mount('file://', FileAdapter())
try:
os.mkdir("doc-cache")
except:
pass
documents = [
{
"id": "https://trustgraph.ai/doc/challenger-report-vol-1",
"title": "Report of the Presidential Commission on the Space Shuttle Challenger Accident, Volume 1",
"comments": "The findings of the Commission regarding the circumstances surrounding the Challenger accident are reported and recommendations for corrective action are outlined",
"url": "https://ntrs.nasa.gov/api/citations/19860015255/downloads/19860015255.pdf",
"kind": "application/pdf",
"date": datetime.datetime.now().date(),
"tags": ["nasa", "safety-engineering", "space-shuttle"],
"metadata": [
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/DigitalDocument")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("Report of the Presidential Commission on the Space Shuttle Challenger Accident, Volume 1")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/name"),
o = Literal("Report of the Presidential Commission on the Space Shuttle Challenger Accident, Volume 1")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/description"),
o = Literal("The findings of the Commission regarding the circumstances surrounding the Challenger accident are reported and recommendations for corrective action are outlined")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/copyrightNotice"),
o = Literal("Work of the US Gov. Public Use Permitted")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/copyrightHolder"),
o = Literal("US Gov.")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/copyrightYear"),
o = Literal("1986")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/keywords"),
o = Literal("nasa")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/keywords"),
o = Literal("space-shuttle")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/keywords"),
o = Literal("safety-engineering")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/keywords"),
o = Literal("challenger")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/keywords"),
o = Literal("space-transportation")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/publication"),
o = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/PublicationEvent")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae"),
p = Uri("https://schema.org/description"),
o = Literal("The findings of the Commission regarding the circumstances surrounding the Challenger accident are reported and recommendations for corrective action are outlined")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae"),
p = Uri("https://schema.org/publishedBy"),
o = Uri("https://trustgraph.ai/org/nasa")
),
Triple(
s = Uri("https://trustgraph.ai/org/nasa"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Organization")
),
Triple(
s = Uri("https://trustgraph.ai/org/nasa"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("NASA")
),
Triple(
s = Uri("https://trustgraph.ai/org/nasa"),
p = Uri("https://schema.org/name"),
o = Literal("NASA")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae"),
p = Uri("https://schema.org/startDate"),
o = Literal("1986-06-06")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/d946c320-0432-48c8-a015-26b0af3cedae"),
p = Uri("https://schema.org/endDate"),
o = Literal("1986-06-06")
),
Triple(
s = Uri("https://trustgraph.ai/doc/challenger-report-vol-1"),
p = Uri("https://schema.org/url"),
o = Uri("https://ntrs.nasa.gov/api/citations/19860015255/downloads/19860015255.pdf")
)
]
},
{
"id": "https://trustgraph.ai/doc/icelandic-dictionary",
"title": "A Concise Dictionary of Old Icelandic",
"comments": "A Concise Dictionary of Old Icelandic, published in 1910, is a 551-page dictionary that offers a comprehensive overview of the Old Norse language, particularly Old Icelandic.",
"url": "https://css4.pub/2015/icelandic/dictionary.pdf",
"kind": "application/pdf",
"date": datetime.datetime.now().date(),
"tags": ["old-icelandic", "dictionary", "language", "grammar", "old-norse", "icelandic"],
"metadata": [
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/DigitalDocument")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("A Concise Dictionary of Old Icelandic"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/name"),
o = Literal("A Concise Dictionary of Old Icelandic"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/description"),
o = Literal("A Concise Dictionary of Old Icelandic, published in 1910, is a 551-page dictionary that offers a comprehensive overview of the Old Norse language, particularly Old Icelandic."),
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/copyrightNotice"),
o = Literal("Copyright expired, public domain")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/copyrightHolder"),
o = Literal("Geir Zoëga, Clarendon Press")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/copyrightYear"),
o = Literal("1910")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/keywords"),
o = Literal("icelandic")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/keywords"),
o = Literal("old-norse")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/keywords"),
o = Literal("dictionary")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/keywords"),
o = Literal("grammar")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/keywords"),
o = Literal("old-icelandic")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/publication"),
o = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/PublicationEvent")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7"),
p = Uri("https://schema.org/description"),
o = Literal("Published by Clarendon Press in 1910"),
),
Triple(
s = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7"),
p = Uri("https://schema.org/publishedBy"),
o = Uri("https://trustgraph.ai/org/clarendon-press")
),
Triple(
s = Uri("https://trustgraph.ai/org/clarendon-press"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Organization")
),
Triple(
s = Uri("https://trustgraph.ai/org/clarendon-press"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("NASA")
),
Triple(
s = Uri("https://trustgraph.ai/org/clarendon-press"),
p = Uri("https://schema.org/name"),
o = Literal("Clarendon Press")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7"),
p = Uri("https://schema.org/startDate"),
o = Literal("1910-01-01")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/11a78156-3aea-4263-9f1b-0c63cbde69d7"),
p = Uri("https://schema.org/endDate"),
o = Literal("1910-01-01")
),
Triple(
s = Uri("https://trustgraph.ai/doc/icelandic-dictionary"),
p = Uri("https://schema.org/url"),
o = Uri("https://digital-research-books-beta.nypl.org/edition/10476341")
)
]
},
SAMPLE_DOCS_PACKAGE = "trustgraph.cli.sample_documents"
{
"id": "https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025",
"title": "Annual threat assessment of the U.S. intelligence community - March 2025",
"comments": "The report reflects the collective insights of the Intelligence Community (IC), which is committed to providing the nuanced, independent, and unvarnished intelligence that policymakers, warfighters, and domestic law enforcement personnel need to protect American lives and Americas interests anywhere in the world.",
"url": "https://www.intelligence.senate.gov/sites/default/files/2025%20Annual%20Threat%20Assessment%20of%20the%20U.S.%20Intelligence%20Community.pdf",
"kind": "application/pdf",
"date": datetime.datetime.now().date(),
"tags": ["adversary-cooperation", "cyberthreats", "supply-chain-vulnerabilities", "economic-competition", "national-security", "data-privacy"],
"metadata": [
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/DigitalDocument")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("Annual threat assessment of the U.S. intelligence community - March 2025"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/name"),
o = Literal("Annual threat assessment of the U.S. intelligence community - March 2025"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/description"),
o = Literal("The report reflects the collective insights of the Intelligence Community (IC), which is committed to providing the nuanced, independent, and unvarnished intelligence that policymakers, warfighters, and domestic law enforcement personnel need to protect American lives and Americas interests anywhere in the world."),
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/copyrightNotice"),
o = Literal("Not copyright")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/copyrightHolder"),
o = Literal("US Government")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/copyrightYear"),
o = Literal("2025")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/keywords"),
o = Literal("adversary-cooperation")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/keywords"),
o = Literal("cyberthreats")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/keywords"),
o = Literal("supply-chain-vulnerabilities")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/keywords"),
o = Literal("economic-competition")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/keywords"),
o = Literal("national-security")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/publication"),
o = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/PublicationEvent")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec"),
p = Uri("https://schema.org/description"),
o = Literal("Published by the Director of National Intelligence (DNI)"),
),
Triple(
s = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec"),
p = Uri("https://schema.org/publishedBy"),
o = Uri("https://trustgraph.ai/org/us-gov-dni")
),
Triple(
s = Uri("https://trustgraph.ai/org/us-gov-dni"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Organization")
),
Triple(
s = Uri("https://trustgraph.ai/org/us-gov-dni"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("The Director of National Intelligence")
),
Triple(
s = Uri("https://trustgraph.ai/org/us-gov-dni"),
p = Uri("https://schema.org/name"),
o = Literal("The Director of National Intelligence")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec"),
p = Uri("https://schema.org/startDate"),
o = Literal("2025-03-18")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/0f1cfbe2-ce64-403b-8327-799aa8ba3cec"),
p = Uri("https://schema.org/endDate"),
o = Literal("2025-03-18")
),
Triple(
s = Uri("https://trustgraph.ai/doc/annual-threat-assessment-us-dni-march-2025"),
p = Uri("https://schema.org/url"),
o = Uri("https://www.dni.gov/index.php/newsroom/reports-publications/reports-publications-2025/4058-2025-annual-threat-assessment")
)
]
},
def get_data_path():
return resources.files(SAMPLE_DOCS_PACKAGE)
{
"id": "https://trustgraph.ai/doc/intelligence-and-state",
"title": "The Role of Intelligence and State Policies in International Security",
"comments": "A volume by Mehmet Emin Erendor, published by Cambridge Scholars Publishing (2021). It is well-known that the understanding of security has changed since the end of the Cold War. This, in turn, has impacted the characteristics of intelligence, as states have needed to improve their security policies with new intelligence tactics. This volume investigates this new state of play in the international arena.",
"url": "https://www.cambridgescholars.com/resources/pdfs/978-1-5275-7604-9-sample.pdf",
"kind": "application/pdf",
"date": "2025-05-06",
"tags": ["intelligence", "state-policy", "international-security", "national-security", "geopolitics", "foreign-policy", "security-studies", "military", "crime"],
"metadata": [
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Book")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("The Role of Intelligence and State Policies in International Security")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/name"),
o = Literal("The Role of Intelligence and State Policies in International Security")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/description"),
o = Literal("A volume by Mehmet Emin Erendor. It is well-known that the understanding of security has changed since the end of the Cold War. This, in turn, has impacted the characteristics of intelligence, as states have needed to improve their security policies with new intelligence tactics. This volume investigates this new state of play in the international arena.")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/author"),
o = Literal("Mehmet Emin Erendor")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/isbn"),
o = Literal("9781527576049")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/numberOfPages"),
o = Literal("220")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("intelligence")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("state policy")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("international security")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("national security")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("geopolitics")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/publication"),
o = Uri("https://trustgraph.ai/pubev/b4352222-5da0-480d-a00f-f7342fe77862")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/b4352222-5da0-480d-a00f-f7342fe77862"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/PublicationEvent")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/b4352222-5da0-480d-a00f-f7342fe77862"),
p = Uri("https://schema.org/description"),
o = Literal("Published by Cambridge Scholars Publishing on October 28, 2021.")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/b4352222-5da0-480d-a00f-f7342fe77862"),
p = Uri("https://schema.org/publishedBy"),
o = Uri("https://trustgraph.ai/org/cambridge-scholars-publishing")
),
Triple(
s = Uri("https://trustgraph.ai/org/cambridge-scholars-publishing"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Organization")
),
Triple(
s = Uri("https://trustgraph.ai/org/cambridge-scholars-publishing"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("Cambridge Scholars Publishing")
),
Triple(
s = Uri("https://trustgraph.ai/org/cambridge-scholars-publishing"),
p = Uri("https://schema.org/name"),
o = Literal("Cambridge Scholars Publishing")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/b4352222-5da0-480d-a00f-f7342fe77862"),
p = Uri("https://schema.org/startDate"),
o = Literal("2021-10-28")
),
Triple(
s = Uri("https://trustgraph.ai/doc/intelligence-and-state"),
p = Uri("https://schema.org/url"),
o = Uri("https://www.cambridgescholars.com/resources/pdfs/978-1-5275-7604-9-sample.pdf")
)
]
},
{
"id": "https://trustgraph.ai/doc/beyond-vigilant-state",
"title": "Beyond the vigilant state: globalisation and intelligence",
"comments": "This academic paper by Richard J. Aldrich examines the relationship between globalization and intelligence agencies, discussing how intelligence services have adapted to global changes in the post-Cold War era.",
"url": "https://warwick.ac.uk/fac/soc/pais/people/aldrich/publications/beyond.pdf",
"kind": "application/pdf",
"date": datetime.datetime.now().date(),
"tags": ["intelligence", "globalization", "security-studies", "surveillance", "international-relations", "post-cold-war"],
"metadata": [
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/ScholarlyArticle")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("Beyond the vigilant state: globalisation and intelligence"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/name"),
o = Literal("Beyond the vigilant state: globalisation and intelligence"),
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/description"),
o = Literal("This academic paper by Richard J. Aldrich examines the relationship between globalization and intelligence agencies, discussing how intelligence services have adapted to global changes in the post-Cold War era."),
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/copyrightNotice"),
o = Literal("(c) British International Studies Association")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/copyrightHolder"),
o = Literal("British International Studies Association")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/author"),
o = Uri("https://trustgraph.ai/person/3a45f8c9-b7d1-42e5-8631-d9f82c4a0e22")
),
Triple(
s = Uri("https://trustgraph.ai/person/3a45f8c9-b7d1-42e5-8631-d9f82c4a0e22"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Person")
),
Triple(
s = Uri("https://trustgraph.ai/person/3a45f8c9-b7d1-42e5-8631-d9f82c4a0e22"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("Richard J. Aldrich")
),
Triple(
s = Uri("https://trustgraph.ai/person/3a45f8c9-b7d1-42e5-8631-d9f82c4a0e22"),
p = Uri("https://schema.org/name"),
o = Literal("Richard J. Aldrich")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("intelligence")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("globalisation")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("security-studies")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("surveillance")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("international-relations")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/keywords"),
o = Literal("post-cold-war")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/publication"),
o = Uri("https://trustgraph.ai/pubev/75c83dfa-6b2e-4d89-bda1-c8e92f0e3410")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/75c83dfa-6b2e-4d89-bda1-c8e92f0e3410"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/PublicationEvent")
),
Triple(
s = Uri("https://trustgraph.ai/pubev/75c83dfa-6b2e-4d89-bda1-c8e92f0e3410"),
p = Uri("https://schema.org/description"),
o = Literal("Published in Review of International Studies"),
),
Triple(
s = Uri("https://trustgraph.ai/pubev/75c83dfa-6b2e-4d89-bda1-c8e92f0e3410"),
p = Uri("https://schema.org/publishedBy"),
o = Uri("https://trustgraph.ai/org/british-international-studies-association")
),
Triple(
s = Uri("https://trustgraph.ai/org/british-international-studies-association"),
p = Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
o = Uri("https://schema.org/Organization")
),
Triple(
s = Uri("https://trustgraph.ai/org/british-international-studies-association"),
p = Uri("http://www.w3.org/2000/01/rdf-schema#label"),
o = Literal("British International Studies Association")
),
Triple(
s = Uri("https://trustgraph.ai/org/british-international-studies-association"),
p = Uri("https://schema.org/name"),
o = Literal("British International Studies Association")
),
Triple(
s = Uri("https://trustgraph.ai/doc/beyond-vigilant-state"),
p = Uri("https://schema.org/url"),
o = Uri("https://warwick.ac.uk/fac/soc/pais/people/aldrich/publications/beyond.pdf")
)
]
}
def load_metadata():
data_path = get_data_path()
metadata_file = data_path / "metadata.json"
return json.loads(metadata_file.read_text(encoding="utf-8"))
]
class Loader:
def convert_value(v):
if v["type"] == "uri":
return Uri(v["value"])
else:
return Literal(v["value"])
def __init__(
self, url, token=None, workspace="default",
):
self.api = Api(url, token=token, workspace=workspace).library()
def convert_metadata(metadata_json):
triples = []
for t in metadata_json:
triples.append(Triple(
s=convert_value(t["s"]),
p=convert_value(t["p"]),
o=convert_value(t["o"]),
))
return triples
def load(self, documents):
for doc in documents:
self.load_doc(doc)
def load_document(api, doc_entry, data_path):
def load_doc(self, doc):
doc_id = doc_entry["id"]
title = doc_entry["title"]
filename = doc_entry["file"]
try:
print(f" [{filename}] {title}")
print(doc["title"], ":")
print(f" reading content...")
content_file = data_path / filename
content = content_file.read_bytes()
hid = hash(doc["url"])
cache_file = f"doc-cache/{hid}"
print(f" loading into TrustGraph ({len(content) // 1024}KB)...")
metadata = convert_metadata(doc_entry["metadata"])
if os.path.isfile(cache_file):
print(" (use cache file)")
content = open(cache_file, "rb").read()
else:
print(" downloading...")
resp = session.get(doc["url"])
content = resp.content
open(cache_file, "wb").write(content)
print(" done.")
api.add_document(
id=doc_id,
metadata=metadata,
kind=doc_entry["kind"],
title=title,
comments=doc_entry["comments"],
tags=doc_entry["tags"],
document=content,
)
print(" adding...")
print(f" done.")
self.api.add_document(
id=doc["id"], metadata=doc["metadata"],
kind=doc["kind"], title=doc["title"],
comments=doc["comments"], tags=doc["tags"],
document=content,
)
print(" successful.")
except Exception as e:
print("Failed: {str(e)}", flush=True)
raise e
def main():
parser = argparse.ArgumentParser(
prog='tg-add-library-document',
prog='tg-load-sample-documents',
description=__doc__,
)
@ -729,18 +102,27 @@ def main():
try:
p = Loader(
url=args.url,
token=args.token,
workspace=args.workspace,
)
api = Api(args.url, token=args.token, workspace=args.workspace)
library = api.library()
p.load(documents)
data_path = get_data_path()
documents = load_metadata()
print(f"Loading {len(documents)} sample document(s)...\n")
for doc in documents:
try:
load_document(library, doc, data_path)
except Exception as e:
print(f" FAILED: {e}")
print()
print("Complete.")
except Exception as e:
print("Exception:", e, flush=True)
print(f"Exception: {e}")
raise e
if __name__ == "__main__":
main()
main()

View file

@ -0,0 +1,53 @@
# The Brewing Traditions of Belgium
## Section 1: The Fermentation Foundations (Yeasts & Styles)
### Component A: The Ardennes Isolation Strain
- **Alternative Names:** Strain-71, The Trappist Yeast, Wallonian Culture.
- **Origin:** Historically isolated in the rugged forests of the Ardennes region, shared via mutual trade agreements between various monastic brewing sites.
- **Characteristics:** A high-attenuation, top-fermenting yeast culture (*Saccharomyces cerevisiae*) that thrives at elevated temperatures (20°C to 26°C). It produces heavy volatile esters reminiscent of clove, banana, and white pepper.
- **Downstream Dependencies:** Essential biological engine required to brew The Westvleteren Quad and The Chimay Grand Réserve.
### Component B: Brettanomyces Bruxellensis
- **Alternative Names:** Wild Yeast, The Brussels Funk, Pajottenland Air.
- **Origin:** Indigenous entirely to the Senne River Valley and the surrounding Pajottenland region southwest of Brussels. It cannot be cultured in a standard laboratory setting for primary fermentation; it must be caught ambiently from the atmosphere.
- **Characteristics:** A slow-acting, wild yeast strain that consumes complex sugars that standard yeasts cannot digest. It introduces lactic acid and earthy, "barnyard" aroma characteristics over a 1 to 3-year aging cycle.
- **Downstream Dependencies:** Biological prerequisite for Oude Geuze and The Flemish Red Ale.
## Section 2: Monastic & Trappist Hierarchies (Appellation Controlled)
### Beer 1: The Westvleteren Quad
- **Alternative Names:** Westvleteren 12, The Yellow Cap.
- **Origin:** Brewed exclusively inside the walls of the Abbey of Saint-Sixtus in Westvleteren, Flanders. Holds the strict "Authentic Trappist Product" (ATP) legal designation.
- **Ingredients:** The Ardennes Isolation Strain, local soft water, pale malt, dark liquid candi sugar (sucrose solution), and Northern Brewer hops.
- **Process:** Primary fermentation utilizing the Ardennes strain for 7 days. Afterward, dark candi sugar is injected into the green beer to trigger a secondary fermentation stage. Crucially, the beer is bottled completely unfiltered with active yeast cells, requiring a mandatory 3-month cellar conditioning period to carbonate inside the bottle.
### Beer 2: The Chimay Grand Réserve
- **Alternative Names:** Chimay Blue, The Grande Réserve.
- **Origin:** Brewed inside the Scourmont Abbey in Hainaut, Wallonia. Also carries the ATP designation.
- **Ingredients:** The Ardennes Isolation Strain, estate-drawn well water, malted barley, Hallertau Mittelfrüh hops, and caramelized sugar.
- **Process:** Follows a parallel fermentation profile to the Westvleteren Quad, using the exact same ancestral yeast strain but utilizing a different mineral profile in the water, resulting in a drier, more dark-fruit-forward profile.
## Section 3: Spontaneous & Sour Traditions (Wild Ecosystems)
### Beer 3: Oude Geuze
- **Alternative Names:** The Champagne of Belgium, Brussels Lambic.
- **Origin:** The Pajottenland region. It is legally protected; it cannot be called "Oude Geuze" unless it is spontaneously fermented by the regional air.
- **Ingredients:** Unmalted wheat (30%), Pale barley malt (70%), aged "suranné" hops (which lose their bitterness but retain preservative qualities), and ambient Brettanomyces Bruxellensis.
- **Process:** Boiling wort is pumped into an open-air shallow vessel called a "coolship" overnight to cool down, absorbing wild microbes from the Senne Valley breeze.
**The Blending Protocol Dispute (Critical Logic Test):**
- **The Traditionalist Assembly:** A true Oude Geuze is a blend of 1-year-old young lambic (which provides active sugars) and 3-year-old vintage lambic (which provides complex sourness).
- **The Industrial Controversy:** Some macro-breweries pasteurize the blend and inject artificial sweeteners (aspartame) to neutralize the sourness for commercial appeal. Traditionalists argue this strips the product of its geographic identity and violates the "Oude" (Old) designation.
### Beer 4: The Flemish Red Ale
- **Alternative Names:** Rodenbach style, West-Flemish Sour.
- **Origin:** Roeselare, West Flanders.
- **Ingredients:** Red-kilned malts, aged hops, standard top-fermenting yeast, and a secondary inoculation of Brettanomyces Bruxellensis.

View file

@ -0,0 +1,13 @@
# The Domestic Canopy: A Unified Narrative of Companionship
The story of the human-animal bond begins not with a conscious decision to breed a companion, but with an ancient, mutual opportunism in the frozen wastes of the late Pleistocene. Long before the advent of agriculture, the gray wolf (*Canis lupus*) began to separate from its wild packs, drawn to the peripheral campfires of Eurasian hunter-gatherers. These ancestral canids, which would morph over millennia into the domesticated dog (*Canis lupus familiaris*), offered early humans an unparalleled early-warning system against apex predators and an invaluable partner in the persistence hunt. In return, humans provided a steady supply of megafauna marrow, cooked gristle, and proximity to warmth. This biological pact was so profound that it transcended mere utility, as evidenced by the late Paleolithic Natufian burial sites in the Levant, where human skeletons were interred with their hands resting gently upon the ribcages of wolf pups, marking the earliest archaeological signature of the transition from working tool to sentimental proxy.
As the ice sheets retreated and humanity anchored itself to the soil during the Neolithic Revolution, the nature of animal companionship shifted dramatically, giving rise to an entirely different ecological dynamic in the Fertile Crescent. The rise of grain storehouses in ancient Egypt attracted unprecedented swarms of rodents, creating a pristine ecological niche for the North African wildcat (*Felis lybica*). Unlike the highly structured social hierarchy of the wolf, the cat domesticated itself on terms of aloof independence, transitioning from a tolerated pest-control mechanism to a revered icon of divine protection. By the time of the Egyptian Middle Kingdom, cats were so thoroughly integrated into the domestic fabric that they were granted formal mourning rites; Roman historians like Herodotus noted that when a house cat died of natural causes, the entire human household would shave their eyebrows as a public manifestation of grief. These felines were often mummified using the same costly natron resins reserved for the nobility and entombed in specialized necropolises like Bubastis, dedicated to the feline-headed deity Bastet, effectively blending religious cosmology with domestic affection.
Parallel developments were unfolding across the globe, creating distinct regional pockets of companionship that would later collide through imperial trade. In the Andean highlands of South America, the Incas domesticated the guinea pig (*Cavia porcellus*), known locally as the cuy. While primarily a source of protein and a diagnostic tool used by folk healers to absorb illness from the sick, select lineages were kept by children as cherished house-dwellers. Meanwhile, in the imperial courts of Han Dynasty China, a parallel phenomenon saw the intensive breeding of the Pekingese dog. These small, flat-faced canids were selectively bred to resemble miniature lions — the mythical protectors of Buddhism — and were guarded so fiercely within the walls of the Forbidden City that stealing one was punishable by death. They lived a life of pampered luxury, carried in the sleeves of silk robes and tended to by dedicated eunuchs, establishing an early historical precedent where certain animal breeds functioned strictly as status symbols and manifestations of political sovereignty rather than utilitarian workers.
The classical antiquity of Europe further complicated this tapestry, as the Roman elite integrated exoticism into their definition of the domestic sphere. Roman matrons frequently kept ring-necked parakeets (*Psittacula krameri*) imported from the conquests of India, housing them in elaborate cages of ivory and silver, and teaching them to speak the name of the Emperor. Concurrently, the Roman fondness for the ferret (*Mustela furo*) emerged as a dual-purpose phenomenon; these mustelids were kept both to flush rabbits from agricultural burrows and as slinky, playful companions within the villa. This Roman domestic ecosystem was heavily documented by Pliny the Elder in his Natural History, where he noted that the elite often developed deep, seemingly irrational emotional attachments to their companion animals, including pet fish like the moray eel, which the orator Hortensius reportedly wept over when it died in his private ornamental pond.
The medieval period in Europe introduced a sharp class divide to the concept of the pet, often viewed through the suspicious lens of ecclesiastical authority. While the peasantry kept functional yard dogs and barn cats, the high nobility — particularly noblewomen and monastic figures — indulged in the keeping of lapdogs, such as the early Maltese, and refined birds of prey. These lapdogs were often criticized by conservative church theologians who argued that the excessive meat fed to pampered pets belonged in the mouths of the starving peasantry. Furthermore, during the height of the European witch trials, the domestic pet — particularly the black cat, the toad, or the ferret — was frequently demonized by inquisitors as a "familiar," a physical vessel housing a demonic spirit. This created a perilous cultural paradox where an animal could be viewed as a comforting hearth-companion in one household and an existential piece of heretical evidence in another.
The modern concept of pet-keeping as a universal consumer phenomenon crystallized during the Industrial Revolution and the rise of the Victorian middle class. As populations migrated from rural farms to dense urban centers, the severed connection to nature triggered a romanticized counter-movement. The Victorians elevated the domestic home into a moral sanctuary, and the pet was introduced as a pedagogical tool to teach children empathy, kindness, and middle-class domestic virtues. This era saw the birth of the commercial pet industry: standard kibble formulations were patented by James Spratt in the 1860s, dog shows like Crufts were established to formalize breed standards, and specialized pet cemeteries, like the one in London's Hyde Park, emerged to afford animals a dignified transition into the afterlife. The pet was no longer a working asset or an eccentric luxury of the aristocratic elite; it had become an institutionalized member of the nuclear family unit, setting the stage for the hyper-commodified, emotionally complex multi-billion dollar pet industry of the contemporary era.

View file

@ -0,0 +1,527 @@
[
{
"id": "https://trustgraph.ai/doc/west-country-recipes",
"title": "The Foundations of West Country Cooking",
"comments": "A structured guide to traditional West Country recipes including clotted cream, scones, hedgerow jam, the cream tea, Cornish pasty, homity pie, and Devonshire fudge, with regional supply chain dependencies.",
"file": "recipes.md",
"kind": "text/markdown",
"tags": ["cooking", "west-country", "devon", "cornwall", "recipes", "food-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Foundations of West Country Cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Foundations of West Country Cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A structured guide to traditional West Country recipes including clotted cream, scones, hedgerow jam, the cream tea, Cornish pasty, homity pie, and Devonshire fudge, with regional supply chain dependencies."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cooking"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "west-country"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "devon"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cornwall"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "recipes"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/west-country-recipes"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "food-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/belgian-beer",
"title": "The Brewing Traditions of Belgium",
"comments": "An exploration of Belgian brewing traditions covering Trappist yeasts, wild fermentation, monastic beers including Westvleteren and Chimay, spontaneous sour traditions like Oude Geuze and Flemish Red Ale.",
"file": "belgian-beer.md",
"kind": "text/markdown",
"tags": ["brewing", "belgium", "beer", "trappist", "fermentation", "food-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Brewing Traditions of Belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Brewing Traditions of Belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "An exploration of Belgian brewing traditions covering Trappist yeasts, wild fermentation, monastic beers including Westvleteren and Chimay, spontaneous sour traditions like Oude Geuze and Flemish Red Ale."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "brewing"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "belgium"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "beer"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trappist"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "fermentation"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/belgian-beer"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "food-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/trade-routes-europe",
"title": "Traditional Trade Routes of Pre-Modern Europe",
"comments": "A structured overview of pre-modern European trade networks including the Hanseatic Baltic Route and Venetian Maritime Route, hub cities like Bruges, Lübeck, and Constantinople, specialized commodities, and geopolitical chokepoints.",
"file": "trade-routes-europe.md",
"kind": "text/markdown",
"tags": ["trade", "medieval", "europe", "hanseatic-league", "venice", "economic-history"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Traditional Trade Routes of Pre-Modern Europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Traditional Trade Routes of Pre-Modern Europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A structured overview of pre-modern European trade networks including the Hanseatic Baltic Route and Venetian Maritime Route, hub cities like Bruges, Lübeck, and Constantinople, specialized commodities, and geopolitical chokepoints."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trade"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "medieval"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "europe"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "hanseatic-league"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "venice"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/trade-routes-europe"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "economic-history"}
}
]
},
{
"id": "https://trustgraph.ai/doc/corporate-scandals",
"title": "Global Corporate Fraud & Governance Failures",
"comments": "Detailed analysis of major corporate fraud cases including Enron and Wirecard, covering the financial engineering mechanisms, key executives, audit failures, whistleblowers, and collapse sequences.",
"file": "corporate-scandals.pdf",
"kind": "application/pdf",
"tags": ["corporate-fraud", "enron", "wirecard", "accounting", "governance", "financial-crime"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Global Corporate Fraud & Governance Failures"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Global Corporate Fraud & Governance Failures"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "Detailed analysis of major corporate fraud cases including Enron and Wirecard, covering the financial engineering mechanisms, key executives, audit failures, whistleblowers, and collapse sequences."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "corporate-fraud"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "enron"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "wirecard"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "accounting"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "governance"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/corporate-scandals"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "financial-crime"}
}
]
},
{
"id": "https://trustgraph.ai/doc/history-of-pets",
"title": "The Domestic Canopy: A Unified Narrative of Companionship",
"comments": "A narrative history of human-animal companionship from Pleistocene wolf domestication through Egyptian cat worship, Roman exotic pets, medieval class divides, to the Victorian birth of the commercial pet industry.",
"file": "history-of-pets.md",
"kind": "text/markdown",
"tags": ["pets", "domestication", "animal-history", "cultural-history", "dogs", "cats"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "The Domestic Canopy: A Unified Narrative of Companionship"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "The Domestic Canopy: A Unified Narrative of Companionship"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A narrative history of human-animal companionship from Pleistocene wolf domestication through Egyptian cat worship, Roman exotic pets, medieval class divides, to the Victorian birth of the commercial pet industry."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "pets"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "domestication"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "animal-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cultural-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "dogs"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/history-of-pets"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "cats"}
}
]
},
{
"id": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c",
"title": "Military Fortifications in 19th Century America",
"comments": "The evolution of American military fortification from the Third System masonry forts through Civil War obsolescence to earthwork defenses, plus the parallel development of frontier forts for westward expansion.",
"file": "mil-fortifications-america-19th-c.md",
"kind": "text/markdown",
"tags": ["military-history", "fortifications", "civil-war", "engineering", "american-history", "coastal-defense"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Military Fortifications in 19th Century America"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Military Fortifications in 19th Century America"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "The evolution of American military fortification from the Third System masonry forts through Civil War obsolescence to earthwork defenses, plus the parallel development of frontier forts for westward expansion."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "military-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "fortifications"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "civil-war"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "engineering"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "american-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/mil-fortifications-america-19th-c"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "coastal-defense"}
}
]
},
{
"id": "https://trustgraph.ai/doc/bronze-age-collapse",
"title": "Echoes of the Void: The Late Bronze Age Collapse",
"comments": "A synthesis of the Late Bronze Age Collapse (c. 1200-1150 BCE) covering the interconnected trade networks, the cascade of failure from drought through the Sea Peoples to internal revolt, archaeological evidence, and the transition to the Iron Age.",
"file": "bronze-age-collapse.pdf",
"kind": "application/pdf",
"tags": ["bronze-age", "ancient-history", "archaeology", "mediterranean", "trade", "collapse"],
"metadata": [
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
"o": {"type": "uri", "value": "https://schema.org/DigitalDocument"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label"},
"o": {"type": "literal", "value": "Echoes of the Void: The Late Bronze Age Collapse"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/name"},
"o": {"type": "literal", "value": "Echoes of the Void: The Late Bronze Age Collapse"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/description"},
"o": {"type": "literal", "value": "A synthesis of the Late Bronze Age Collapse (c. 1200-1150 BCE) covering the interconnected trade networks, the cascade of failure from drought through the Sea Peoples to internal revolt, archaeological evidence, and the transition to the Iron Age."}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightNotice"},
"o": {"type": "literal", "value": "Original content, public domain"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightHolder"},
"o": {"type": "literal", "value": "TrustGraph AI"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/copyrightYear"},
"o": {"type": "literal", "value": "2025"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "bronze-age"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "ancient-history"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "archaeology"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "mediterranean"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "trade"}
},
{
"s": {"type": "uri", "value": "https://trustgraph.ai/doc/bronze-age-collapse"},
"p": {"type": "uri", "value": "https://schema.org/keywords"},
"o": {"type": "literal", "value": "collapse"}
}
]
}
]

View file

@ -0,0 +1,11 @@
# Military Fortifications in 19th Century America
The evolution of coastal and frontier defense across North America during the nineteenth century reflects a turbulent transition from traditional European masonry concepts to the brutal realities of industrialized warfare. At the dawn of the century, the young United States found its sprawling coastline dangerously exposed to the naval might of European empires. In response, the federal government embarked on a massive, highly centralized building program known as the Third System of fortifications. Orchestrated primarily by the newly formed U.S. Army Corps of Engineers and heavily influenced by French military engineer Simon Bernard, this system sought to seal off strategic harbors, naval shipyards, and commercial estuaries from maritime invasion. These fortifications were characterized by massive, multi-tiered masonry walls constructed of brick and stone, designed to mount several tiers of heavy cannon firing through vaulted casemates, thereby concentrating overwhelming firepower against hostile warships.
The architectural pinnacle of this philosophy was realized in structures like Fort Jefferson, situated on a remote key in the Dry Tortugas of the Gulf of Mexico, and Fort Sumter, guarding the entrance to Charleston Harbor. These fortresses were essentially artificial islands of masonry, featuring complex geometric designs — often pentagonal or hexagonal — to eliminate dead angles where an enemy could seek shelter from the garrison's fire. The walls were constructed using millions of locally fired bricks, backed by concrete and earth, creating a dense barrier meant to absorb the impact of smoothbore solid shot. Within these structures, the invention of the Totten shutter — a pair of iron doors that automatically closed over the cannon embrasure after firing — protected the artillerists from incoming musket fire and grape shot. For the first half of the century, these towering masonry sentinels were considered functionally impregnable to naval assault, as wooden warships could rarely sustain the prolonged, concentrated bombardment required to breach such thick brick facades.
However, the catastrophic vulnerabilities of the Third System were violently exposed during the American Civil War, rendering traditional masonry fortifications obsolete almost overnight. The catalyst for this military revolution was the introduction of the rifled cannon, most notably the James and Parrott rifles. Unlike the round, smoothbore cannonballs that shattered against brickwork with diminishing effect, elongated rifled projectiles spun like rifle bullets, striking the masonry with immense kinetic energy and drilling into the brickwork with a devastating, jackhammer-like effect. This paradigm shift was demonstrated at the Siege of Fort Pulaski near Savannah, Georgia, in April 1862. Union forces stationed on Tybee Island opened fire with rifled artillery from a distance of over a mile — a range previously considered entirely safe by the fort's defenders. Within thirty hours, the rifled shells tore through the massive brick walls of Fort Pulaski, breaching the solid masonry and threatening to ignite the fort's main powder magazine, forcing an immediate surrender.
This sudden obsolescence forced military engineers to radically re-evaluate defensive architecture, pivoting away from vertical masonry toward low-profile earthworks and subterranean engineering. It was discovered that simple mounds of loose sand and compacted earth absorbed the impact of rifled shells far better than rigid brick, as the displaced soil naturally filled in the craters left by explosions. This gave rise to formidable improvisations like Fort Fisher in North Carolina, often dubbed the "Malachite of America." Fort Fisher was an immense earthen stronghold constructed of sand face-traverses and underground bombproofs, which successfully withstood the largest naval bombardments of the war because the Union fleet's shells merely rearranged the sand rather than shattering a structural foundation. Consequently, post-Civil War modifications to coastal defense saw engineers cutting down the towering brick walls of older forts, burying them under massive earth glacis, and preparing the way for the Endicott System at the end of the century, which utilized reinforced concrete, low-profile designs, and disappearing guns.
Concurrently, a completely different doctrine of military architecture was unfolding along the interior frontiers of the continent, where the purpose of fortification was not to resist heavy naval artillery, but to project geopolitical power, control trade routes, and subjugate Indigenous populations. These interior strongholds, such as Fort Laramie in Wyoming or Fort Snelling in Minnesota, abandoned the complex geometry and multi-tiered casemates of coastal engineering in favor of practical, localized utility. Often constructed initially of timber palisades or sun-dried adobe brick depending on the regional geography, these frontier forts served as fortified outposts for the U.S. Army, fur trading companies, and westward migrants. Rather than being designed to withstand a siege by a peer military force, their layouts usually featured a wide, open central parade ground surrounded by barracks, officer quarters, and a defensive perimeter designed to repel swift cavalry raids, protect supply depots, and enforce the shifting boundaries of American westward expansion.

View file

@ -0,0 +1,70 @@
# The Foundations of West Country Cooking
## Section 1: The Foundations (Primary Ingredients & Sub-Recipes)
### Component A: West Country Clotted Cream
- **Alternative Names:** Devonshire Cream, Cornish Cream.
- **Origin:** Universally produced across the pastures of Devon and Cornwall, utilizing milk from Red Ruby Devon cattle.
- **Ingredients:** 2 Litres of Unpasteurized Whole Milk (High-fat dairy).
- **Process:** Pour the raw milk into a shallow brass pan. Allow it to sit for 12 hours until a thick layer of cream rises to the surface. Heat the pan slowly over a low, indirect flame (traditionally over a wood-fired stove) until the cream begins to "crinkle" but never boil. Remove from heat and cool in a larder for 24 hours. Gently skim the thick, golden crust from the top.
- **Downstream Dependencies:** Essential component for The South West Cream Tea and Devonshire Fudge.
### Component B: Sweet Scones
- **Alternative Names:** Hearth Cakes, Country Splits.
- **Origin:** Common across Somerset, Dorset, Devon, and Cornwall.
- **Ingredients:** 450g Self-Raising Flour, 100g Salted Butter, 50g Caster Sugar, 1 pinch of Salt, 250ml Whole Milk.
- **Process:** Rub the salted butter into the self-raising flour until it resembles fine breadcrumbs. Stir in the caster sugar and salt. Pour in the whole milk gradually, mixing with a blunt knife until a soft dough forms. Roll out on a floured surface to 2cm thickness and stamp out rounds. Bake at 220°C for 12 minutes until golden.
- **Downstream Dependencies:** Required component for The South West Cream Tea.
### Component C: Hedgerow Jam
- **Alternative Names:** Whortleberry Preserve, Blackberry Jam.
- **Origin:** Produced extensively in the Exmoor and Dartmoor regions of Devon and Somerset.
- **Ingredients:** 1kg Wild Blackberries (Whortleberries), 1kg Granulated Sugar, Juice of 1 Lemon (for pectin).
- **Process:** Combine blackberries, sugar, and lemon juice in a large copper preserving pan. Heat gently until the sugar dissolves entirely. Bring to a rolling boil for 15 minutes until the setting point of 105°C is reached. Pour into sterilized jars.
- **Downstream Dependencies:** Required component for The South West Cream Tea.
## Section 2: Regional Showcases (Assembled Dishes)
### Dish 1: The South West Cream Tea
- **Alternative Names:** Afternoon Tea, Devonshire Tea.
- **Origin:** Heavily disputed between the historical houses of Devon and Cornwall.
- **Core Components:** Requires 1 batch of Sweet Scones, 1 jar of Hedgerow Jam, and a generous portion of West Country Clotted Cream. Always served alongside a pot of hot Black Tea.
**The Assembly Protocol Dispute (Critical Logic Test):**
- **The Devon Method:** The scone is split in half. The West Country Clotted Cream is spread first onto the warm scone, acting as butter, and is then topped with a dollop of Hedgerow Jam.
- **The Cornish Method:** The scone is split in half. The Hedgerow Jam is spread directly onto the scone first, and is subsequently topped with a spoonful of West Country Clotted Cream.
### Dish 2: The Cornish Pasty
- **Alternative Names:** Oggy, The Miner's Lunch.
- **Origin:** Cornwall (Specifically protected by PGI status, meaning it must be prepared within the county borders).
- **Ingredients:** 500g Shortcrust Pastry, 400g Beef Skirt (cubed), 300g Potato (peeled and diced), 150g Swede (locally referred to as 'Turnip' in Cornwall), 150g Onion (finely chopped), Salt and Black Pepper, 1 Egg (beaten, for glaze).
- **Process:** Roll the pastry and cut into large circles. Place the raw beef, potato, swede, and onion on one half of the circle. Season generously. Fold the pastry over to form a D-shape and crimp the edges firmly to create a thick ridge. Brush with the beaten egg and bake at 200°C for 45 minutes.
- **Historical Context:** The thick crimped ridge allowed Cornish tin miners to hold the pasty with dirty, arsenic-covered hands and discard the crust afterward.
### Dish 3: Devonshire Homity Pie
- **Alternative Names:** Land Girls' Pie.
- **Origin:** Popularized in Devon by the Women's Land Army during world war rationing.
- **Ingredients:** 1 Pre-baked Shortcrust Pastry Case, 500g Potatoes (boiled and cubed), 2 Large Leeks (sliced), 1 Large Onion (chopped), 50g Salted Butter, 150g Mature Cheddar Cheese (sourced from Somerset), 2 tbsps Fresh Parsley.
- **Process:** Melt the salted butter in a pan and sauté the leeks and onions until soft. Stir in the cubed potatoes, parsley, and half of the Somerset-sourced Mature Cheddar Cheese. Spoon the filling into the pre-baked pastry case. Top with the remaining cheese and bake at 190°C for 25 minutes until bubbling.
## Section 3: Sweets & Confectionery
### Dish 4: Devonshire Fudge
- **Alternative Names:** Clotted Cream Fudge.
- **Origin:** Widely sold along the coastal towns of South Devon.
- **Ingredients:** 175g West Country Clotted Cream, 450g Caster Sugar, 115g Glucose Syrup, 1 tbsp Vanilla Extract.
- **Process:** Combine the caster sugar, glucose syrup, and West Country Clotted Cream in a heavy-based saucepan. Bring to a boil, stirring continuously until the mixture reaches the "soft ball" stage (116°C). Remove from heat, add vanilla extract, and beat vigorously with a wooden spoon until the mixture thickens and loses its gloss. Pour into a lined tin and allow to set.
## Section 4: Local Supply Chain & Geopolitical Geography
- **The Dairy Belt:** Devon and Cornwall are primary rivals in dairy manufacturing. Devon relies heavily on the Red Ruby cattle breed, whereas Cornwall utilizes traditional mixed-pasture herds. Both rely on Somerset for auxiliary hard cheeses like Cheddar.
- **The Allium Link:** Onions and leeks are the common denominator connecting the savory dishes of Devon (Homity Pie) and Cornwall (Cornish Pasty).
- **The Pectin Shortage Risk:** Should a frost hit the Tamar Valley, the production of Hedgerow Jam ceases, creating a supply bottleneck that directly disables the serving of The South West Cream Tea, despite dairy availability.

View file

@ -0,0 +1,63 @@
# Traditional Trade Routes of Pre-Modern Europe
## Section 1: The Arteries (The Core Networks)
### Network A: The Hanseatic Baltic Route
- **Alternative Names:** The Hansa Network, The Northern Guild Rim.
- **Geographical Span:** Spans from the North Sea across the Baltic Sea, linking London, Bruges, Lübeck, Danzig, and Novgorod.
- **Primary Commodities:** Timber, Fur, Flax, Stockfish, Amber.
- **Downstream Dependencies:** Provides raw materials for Western European shipbuilding and winter clothing markets.
### Network B: The Venetian Maritime Route
- **Alternative Names:** The Levantine Silk Spoke, The Adriatic Lifeline.
- **Geographical Span:** Connects Venice through the Adriatic Sea, around Greece, to Constantinople and Alexandria.
- **Primary Commodities:** Silk, Pepper, Cinnamon, Alum, Glassware.
- **Downstream Dependencies:** Feeds the luxury markets of the Holy Roman Empire via alpine passes.
## Section 2: Hub Cities & Commodity Crossings
### Hub 1: Bruges (The Low Countries)
- **Alternative Names:** Brugge, The Flanders Staple.
- **Geographical Intersection:** The primary terminus where The Hanseatic Baltic Route meets Western European land routes.
**The Staple Right Dispute (Critical Logic Test):**
- **The Guild Law:** By ducal decree, all foreign merchants traveling through Flanders must unload their ships at Bruges and offer their goods for sale for a mandatory 15 days before they can proceed.
- **The English Subversion:** English wool merchants, seeking to bypass the Bruges tax, began smuggling raw wool directly to Antwerp, sparking an economic blockade by the Hanseatic League against English shipping.
### Hub 2: Lübeck (The Baltic Capital)
- **Alternative Names:** Lubeca, The Queen of the Hansa.
- **Geographical Intersection:** Located in Northern Germany, acting as the administrative node connecting the North Sea (via the Kiel land-bridge) to the wider Baltic Sea.
- **Resource Matrix:** Completely dependent on the Lüneburg Salt Works for its primary processing industry (herring preservation).
### Hub 3: Constantinople (The Gateway)
- **Alternative Names:** Byzantium, Istanbul, Miklagard.
- **Geographical Intersection:** The western terminus of the Silk Road land routes and the northern terminus of The Venetian Maritime Route.
- **Controlling Entity:** Transferred from Byzantine control to Ottoman control in 1453, altering the tariff structures for all Christian merchants.
## Section 3: Specialized Commodities & Processing Nodes
### Item 1: Lüneburg Salt
- **Alternative Names:** White Gold, Northern Brine.
- **Origin:** Extracted from the brine springs of Lüneburg, Germany.
- **Process:** Boiled in massive lead pans using timber sourced from local forests.
- **Critical Dependency Link:** This salt is shipped directly to Bergen (Norway) via Lübeck to pack and preserve Scania Herring. Without this specific salt supply, Baltic fish rots before reaching Western markets.
### Item 2: Phocaean Alum
- **Alternative Names:** The Weaver's Fixative, Anatolian Alum.
- **Origin:** Mined in the hills of Phocaea (Asia Minor) under the jurisdiction of the Genoese Republic, later seized by regional powers.
- **Process:** Shipped via Mediterranean maritime routes to Flanders and Florence.
- **Chemical Function:** A mandatory chemical mordant required to fix dyes to wool and textiles. Without Alum, the famous Flemish textile industry cannot produce colored cloth.
## Section 4: Geopolitical Disruptions & Chokepoints
- **The Sound Toll Bottleneck:** The King of Denmark levies a mandatory tax on all ships entering or leaving the Baltic Sea through the Øresund strait. A diplomatic dispute or military blockade of the Sound by Denmark instantly halts the flow of Russian timber to the English Royal Dockyards.
- **The Sound-to-Salt Ripple Effect:** If the forests around Lüneburg are depleted, salt production drops. This directly causes a collapse in the Bergen fish trade, which in turn causes a protein shortage and subsequent famine in the labor forces of the Flemish textile hubs.
- **The Alum Monopolization:** Following conflicts in the East, the discovery of a domestic alum mine in Tolfa (Papal States) in 1461 caused a massive geopolitical shift, as the Pope banned the import of "infidel alum" from the East, forcing Venetian merchants to pivot their supply lines inward.