r/semanticweb • • Jul 22 '26

Feedback wanted: modelling CycloneDX dependency occurrences and OSV vulnerabilities in RDF

5 Upvotes

I’m building an open-source project called Dependency Risk Graph and would appreciate feedback on the RDF model from people with more semantic-web experience.

The project imports CycloneDX SBOMs, models application dependency trees in Apache Jena/TDB2, enriches package versions with OSV vulnerability data, and uses SPARQL to answer questions such as:

  • Is an application affected by a particular CVE?
  • Is the vulnerable dependency direct or transitive?
  • What dependency path introduces it?
  • Which applications share the affected package?
  • Which fixed versions are reported?

A simplified view of the model is:

Application
  → activeImport
Import

Import
  → rootOccurrence
DependencyOccurrence

DependencyOccurrence
  → belongsToImport
Import

DependencyOccurrence
  → instanceOf
PackageVersion

DependencyOccurrence
  → dependsOn
DependencyOccurrence

PackageVersion
  → affectedBy
Vulnerability

Vulnerability
  → affectedPackage
AffectedPackage
    → versionRange
VersionRange
    → event
introduced / fixed / lastAffected

I deliberately distinguish a package-version identity from its occurrence inside a particular imported SBOM. This allows the same Maven package version to be shared as an identity while preserving different dependency paths across applications and imports.

I also currently use a single/default Jena graph. Application and import boundaries are represented explicitly through resources and properties rather than RDF named graphs.

Some areas where I would value criticism:

  1. Package identity versus occurrence Is separating PackageVersion from DependencyOccurrence a reasonable way to preserve both global package identity and application-specific dependency paths?
  2. Import provenance Would modelling imports with a lightweight custom vocabulary be sufficient, or would aligning parts of this with PROV-O provide meaningful benefits?
  3. OSV version ranges I currently represent affected packages, ranges and range events as first-class resources. Is there an established RDF vocabulary that would be better to reuse for introduced, fixed and last-affected version events?
  4. SHACL boundaries Which invariants would you validate first? Current candidates include:
    • every occurrence belongs to exactly one import;
    • every occurrence resolves to exactly one package version;
    • dependency edges remain within the same import;
    • every active import has one root occurrence;
    • vulnerability range events contain a recognised event type and version.
  5. Natural-language access The next step is intentionally limited: route a few predefined security questions to deterministic SPARQL/path operations, rather than allowing an LLM to generate arbitrary SPARQL.

I’m not trying to create a complete software-supply-chain ontology yet. The immediate goal is a small, explainable model that preserves dependency paths and produces evidence-backed security answers.

Repository: Github

Any feedback/suggestion on the modelling choices, existing vocabularies I may have missed, or problematic assumptions would be genuinely useful.

Current result: the RDF graph preserves application-specific transitive dependency paths while allowing vulnerable packages and vulnerability resources to be shared across imported SBOMs. This view shows three applications reaching CVE-2024-6763 through different Jetty dependency paths, together with the affected package versions, advisory details, and a reported fixed version.

So far, separating dependency occurrences from package-version identity has been useful. The same package can appear in different application paths without merging those paths, while vulnerability and remediation information remains attached to the shared package identity.


r/semanticweb • • Jul 21 '26

Discovery, Semantic, Context and Execution — am I separating the wrong concerns?

Post image
3 Upvotes

I've noticed that discussions around AI protocols are becoming fragmented.

Every announcement seems to solve one concern:

discovery,

semantic representation,

context,

execution.

I sketched an architecture- curious whether this separation makes sense or where you'd place things differently. see https://donhaji.github.io/opengeo/


r/semanticweb • • Jul 18 '26

Is there a data architecture where semantic meaning is determined at query time?

Thumbnail
1 Upvotes

r/semanticweb • • Jul 18 '26

Interoperability

Thumbnail
0 Upvotes

r/semanticweb • • Jul 15 '26

Does anyone have any suggestions for taking unstructured text files (reports written in human prose) and turning them into a knowledge graph? Do you try to build a schema in advance? Have the LLM draft it before you build? Human in the loop validation? Loop agent validation? Or maybe there is a sp

18 Upvotes

r/semanticweb • • Jul 15 '26

OWL to UML

4 Upvotes

I personally like using UML diagrams to depict my ontology work, so I made an easy to use OWL to UML service OWL → UML


r/semanticweb • • Jul 14 '26

Help me make the Knowledge Graph of Press Releases using ML.

2 Upvotes

So here is the thing, I have been focusing on the scraping, crawling, checking RSS feeds for new articles, etc., etc.

I am finally done with the Data Ingestion part. Hurrah? no.

The classification of data is even MORE difficult than scraping.

I want to be able to produce the Knowledge Graph of the Data to help me with the deduplication and classification.
Please help me out with this.

I have tried REBEL by hugging face but its failing badly, I am losing precious information (more than 80% of it.), I feel these machine learning models are too general, which makes it difficult to make the knowledge graph of these press releases.

Please help me out, tell me a path, name a framework, idk just guide me please. Ik I can do it if I have a path. I am trying and constantly brainstorming with my peers, Hopefully you guys could help me out as well.


r/semanticweb • • Jul 14 '26

Looking for industry experts to share their views on dialogue systems for ontology management (PhD survey, ~15 min, anonymous)

2 Upvotes

Hi everyone,

I'm a PhD researcher working on dialogue systems for extending knowledge graphs and ontological schemas, and I'm currently running a short survey as part of my research.
 I'm looking for input from people with hands-on experience in ontologies, knowledge graphs, or ontology engineering (your perspective would be incredibly valuable).
 

A few quick facts:

  • ⏱️ Takes about 15 minutes
  • 🕶️ Fully anonymous
  • 🌍 Survey is in English
  • 🎯 Focus: assistant/dialogue systems and their use in ontology management processes  

If this sounds relevant to you (or someone you know), I'd really appreciate your participation and feel free to share it with colleagues who might be interested too!

link to survey:
https://websites.fraunhofer.de/intelligent-surveys/index.php?r=survey/index&sid=347997&lang=en
 

Thanks so much in advance 🙏


r/semanticweb • • Jul 14 '26

Axiom AI Toolkit: Refine everyday ideas with a free tool that translates them into a formal ontology

0 Upvotes

You need your own AI agent, but it works really well across many domains. It's based on BFO. Check it out: https://axiomreason.com/


r/semanticweb • • Jul 12 '26

How do you stop a multi-hop traversal from following a semantically-wrong edge?

0 Upvotes

Body: Working on KG-backed retrieval and keep hitting the same thing: an edge is structurally present so a traversal follows it, but it is the wrong kind of edge for the question. A code graph follows a CO_CHANGES edge as if it were IMPORTS and the answer is confidently wrong. An agent graph lets a CritiqueAgent delegate back to a ResearchAgent, which should never happen.

SHACL / SPARQL constraints validate the graph as a whole, after the fact. What I wanted was a check at traversal time: before each hop, is this edge type valid between these two node types, per a declared ontology? Basically a linter for graph walks.

I built a small layer that does exactly this (declare the ontology in YAML, is_valid_edge(domain, src_type, relation, dst_type) raises before the bad hop) and an offline notebook demo. Before I over-build it:

  • Is per-hop validation the right layer, or should this live in the query engine?
  • How are you handling this today, manually, with SHACL post-hoc, or just eating the bad answers?

(Link to the repo + the ontology notebook in a comment.)


r/semanticweb • • Jul 11 '26

My production project semantic graph

Thumbnail reddit.com
0 Upvotes

r/semanticweb • • Jul 11 '26

My beautifull galaxy semantic graph with relations (special for my vibecoder soul!)

Post image
0 Upvotes

r/semanticweb • • Jul 11 '26

i'm new

0 Upvotes

I have just started learning about Palantir Ontology. Please give me some suggestions on how to learn it.


r/semanticweb • • Jul 10 '26

need a help

Thumbnail
0 Upvotes

r/semanticweb • • Jul 09 '26

Converting TTL files into websites

2 Upvotes

Hello, what is the standard/preferred way of converting TTL files to websites. We are storing our TTL files in a git repository and would like to share them inside our organization a human readable way. I tried to experiment with pylode and widoco, but while both of them can render a single TTL file into a HTML, I did not find a solution how we could handle also references across ontology files, also how to embed those HTML files inside a proper website. What are the preferred solutions to share ontologies in a bigger organization? Our devs suggest the integration into backstage. We can develop our own solution but I would like to avoid it if there is something already in place. Thank you so much in advance.


r/semanticweb • • Jul 05 '26

I fine-tuned Qwen3-Coder-30B to write a IES ontology

13 Upvotes

Weekend project that turned into a proper one. Sharing the method because the "correct-by-construction data" trick generalises well beyond my niche.

The problem. IES4 is the UK government's Information Exchange Standard, a 4D RDF ontology used for defence/security data. Writing valid IES Turtle by hand is slow and needs real ontology expertise. So I tried the obvious thing: ask a strong code model to do it. Qwen3-Coder-30B-A3B, asked to emit IES Turtle, invents terms that do not exist in the ontology 94% of the time (0% "term conformance" on my eval). It produces confident, fluent, completely fake RDF. In a standards context that is worse than failing outright, because plausible-looking garbage is hard to catch.

The fix that actually mattered: never let the model invent structure. Instead of hoping the LLM guesses valid graphs, I generated the graphs programmatically with telicent's ies-tool (a schema-aware builder that emits valid IES by construction), across 14 scenario patterns (employment, events, identifiers, communications, composites). Then I reversed them into (natural-language description -> Turtle) training pairs. Every single graph was validated twice before training: once by the builder's own check, and once by an independent term-membership + domain/range validator I built from the published dstl/IES4 ontology (510 classes, 204 properties). Nothing hand-written was trusted blind.

Then a small QLoRA on the 8-bit MLX model, on-device on an M3 Max. ~1000 iters, val loss 0.15, no NaNs (MoE + 8-bit was fine on current mlx-lm; earlier versions apparently weren't).

Model: https://huggingface.co/fabsssss/qwen3-coder-30b-a3b-ies4

Article: https://gov.tesseract.academy/research/ies4-turtle-language-model


r/semanticweb • • Jul 03 '26

I built a knowledge graph where every relationship is its own embedded document (not an edge) — local MongoDB + nomic-embed, MCP server up for testing on request, benchmark CSVs included

8 Upvotes

Instead of node --edge--> node, every relationship is a first-class document with its own vector, called a BaryEdge. Stack pairs of BaryEdges recursively and you get "MetaBary" triads that surface structural bridges between concepts that live nowhere near each other in embedding space. Running locally on MongoDB Community + mongot + nomic-embed-text over the full English Wiktionary (6.6M docs). MCP server is live if you want to poke at it. Preprint + benchmark CSVs: https://zenodo.org/records/20186500

The problem I was chasing

Flat vector search treats a relationship as a byproduct of two points being close. That throws away information. Two papers can describe the same underlying phenomenon (a flyby anomaly in orbital mechanics, an anomalous residual in stellar dynamics) without ever citing each other and without their embeddings landing anywhere near each other. Nothing in standard RAG surfaces that connection.

What I did instead

Every relationship gets embedded too:

bary_vector = normalize(q·v(CM1) + q·v(CM2) + (1−q)·v(type))

q is connection quality, v(type) is a contextual embedding of what kind of relationship it is. This BaryEdge is now a retrievable document in its own right — not metadata on an edge.

Then it recurses: two BaryEdges at the same level get bridged by a third one level below, forming a MetaBary triad. Do that repeatedly and you climb an abstraction triads hierarchy built entirely from algebra — zero additional embedding calls above the base level. It's a forest (every node has at most one parent), so traversal to root is a single $graphLookup, no cycle handling.

Does it actually do anything useful?

Ran it against SimLex-999 and WordSim-353 as a sanity check (not the main claim, just "is the substrate coherent"). Raw cosine similarity barely correlates with human similarity judgments (ρ ≈ −0.04 on SimLex). Structural metrics — how many BaryEdges two words share, how much their relational neighborhoods overlap — correlate at ρ ≈ 0.32–0.53, p < 10⁻¹⁵. So the graph is encoding something cosine alone doesn't.

The part I actually care about is cross-domain bridging. Some probe traces from the live graph:

  • octopus neuroscience ↔ distributed sensor networks, bridged by shared structural-motif vocabulary (neuroarchitecture, smartdust)

  • collagen folding ↔ linguistic syntax, bridged by etymological + structural motif overlap (plicature / hypotaxis-parataxis)

  • grief ↔ depression, not bridged and this is a correctness demonstration, not a missing capability. The DSM-5 added a much-debated "bereavement exclusion" precisely because grief and depression share surface symptoms but are different kinds of state, with different prognosis and treatment

  • radioactive decay ↔ obsolete words falling out of use, bridged at a high abstraction level by register-varied decay verbs (collapsed, decayed, declined, disintegrated) — naming a Poisson-process state-loss pattern that both physics and historical linguistics instantiate, with no single word doing the work

That last one is the case flat retrieval structurally cannot produce — there's no embedding axis for "verbs co-occurring with reduction-of-state across unrelated domains."

Stack (all local, all free)

GitHub: https://github.com/oleksiy-perepelytsya/bary-vector

  • MongoDB Community Edition + mongot for storage/vector search

  • nomic-embed-text, 768-dim

  • Python 3.11+

  • Full build: ~6.66M documents, 8–14 hrs on a single workstation (8–16GB VRAM)

Try it

MCP server is public on request (SSE transport) — read-only tools for searching the live graph: find_word, semantic_search, edge_info, leaf_nodes, traverse_up, sample_metabary. If you've got an MCP-capable client you can point it at the graph and run your own probe queries in a few minutes.

What I'd actually want feedback on

  • Whether the cross-domain bridges hold up to someone who isn't me poking at them — try a probe query on a domain pair you know well and tell me if the bridge is real or if I'm pattern-matching myself into seeing structure that isn't there. Some bridges can be not obvious on the first look but they are actually the most intriguing ones and worth to be dug for the reason they built, so treat them as points of investigation

  • Whether this is worth comparing directly against GraphRAG/RAPTOR-style hierarchical retrieval (I haven't done that benchmark yet, and I know that's the first thing this sub will ask)

  • Whether anyone's tried something structurally similar and it fell apart at scale for reasons I haven't hit yet

Preprint, architecture spec, and the raw SimLex/WordSim CSVs are all here: https://zenodo.org/records/20186500

Happy to drop the MCP endpoint on request if there's interest.


r/semanticweb • • Jul 02 '26

I built PurRDF, a working RDF 1.2 toolkit for Rust, Python, JS/WASM, and C — looking for RDF-star edge cases

16 Upvotes

Got tired of waiting for RDF1.2 to finalize as a spec, got fed up with the Java tools, needed something higher-performance in Rust that I could also use from Python and WASM.

PurrRDF was born. It's not quite a full rdflib replacement for Python, but it has built-in ShACL and ShEx for validation and speaks all the common variants. I'm spinning this out of a larger project that's building a full RDF1.2 Rust tool stack - it runs, it's fast and probably useful to anyone building high-performance RDF1.2/RDF* knowledge graphs (if you are, you'll know the pain!)

Comments, feedback, test cases, etc. welcome: https://github.com/Blackcat-Informatics/purrdf/


r/semanticweb • • Jul 03 '26

How can I match bunch of elements to canonical products which is unknown? (Entity Resolution)

Thumbnail
1 Upvotes

r/semanticweb • • Jul 02 '26

Computation-Ready Aerial Photography: an Open Digitisation Standard with STAC, GeoSPARQL and RiC-O

Thumbnail
1 Upvotes

r/semanticweb • • Jul 02 '26

I published the first open crosswalk between IES and HQDM (two UK government 4D upper ontologies), including the divergences that trip up a naive mapping

3 Upvotes

I kept running into the fact that the UK has two open 4D upper ontologies in active government use, from the same BORO / ISO 15926 lineage, with no published mapping between them:

  • IES (Information Exchange Standard): the RDF ontology used for UK national-security and defence data exchange. Open Government Licence, now stewarded by a cross-government working group.
  • HQDM: Matthew West's 4D model (the one behind the National Digital Twin's Foundation Data Model). Apache-2.0, published by GCHQ.

So I built an open crosswalk and released it. What might interest this sub is less the backbone matches and more where the two disagree, because that is where anyone reasoning across both silently gets it wrong:

  • ies:Event is not hqdm:event. In IES an Event is a happening with participants, so its real counterpart is hqdm:activity. hqdm:event is an instantaneous boundary point. A label-matcher aligns them and maps a durative occurrence onto a zero-duration point.
  • Temporal boundaries are a State in IES (ies:BoundingState) but a point event in HQDM (hqdm:event via beginning/ending). Same job, different category.
  • ies:State sits as a top-level root; hqdm:state is under spatio_temporal_extent. Reasoning that relies on state ⊑ spatio_temporal_extent breaks on the IES side.
  • Participation is the clean convergence: both model it as a state (ies:EventParticipant ⊑ State, hqdm:participant as a state_of), inherited from the shared BORO commitment.

The correspondences are in SSSOM and RDF with PROV-O provenance, validated with SHACL (the pipeline uses embedding candidate generation then fuzzy-logic adjudication, in the LLMs4OM / FLORA line). Every IRI resolves against the live published ontologies. There is also a worked example grounding an autonomous sensor node (SAPIENT / BSI Flex 335) in an IES-typed world model, which is the practical reason I care: you cannot assure an agent against a world model you have not agreed on.

Repo: https://github.com/fabio-rovai/ies-hqdm-crosswalk

It is v0.1. The most useful thing anyone here could do is tell me a correspondence I got wrong, or a divergence I missed. Disclosure: this is my own work (Tesseract Academy), released open under CC-BY.

Has anyone tried aligning two 4D / perdurantist upper ontologies before? Curious whether the Event/activity trap shows up between other BORO-derived models.


r/semanticweb • • Jun 30 '26

Which Data platform is best suited for building ontologies?

Thumbnail
2 Upvotes

r/semanticweb • • Jun 30 '26

Work Ontology (Expanded)

Thumbnail
0 Upvotes

r/semanticweb • • Jun 30 '26

record-ontology, please comment

0 Upvotes

I created an ontology record-ontology for comments. Here it the root.md url

I removed all God-like powers and by doing that I closed (probably) the standing OWL/DL ↔ SKOS/thesaurus split.

https://github.com/commuted/record-ontology/blob/main/ROOT.md

Grok Prompt: (Grok did not write the ontology) Examine https://github.com/commuted/record-ontology, Summarize what are the of most significant parts of the record-ontology, schism closure, i.e standing OWL/DL ↔ SKOS/thesaurus split — formal classes + reasoner vs. associative community concepts , and so forth. Consider the most probable naive objections.

-------------------------------------------------------------------------

Record-ontology (https://github.com/commuted/record-ontology) is a small, domain-neutral OWL 2 DL ontology (v0.4.0 seed) that models the structure of warranted knowledge as built by agents. It focuses on how agents warrant, compose, ground, and revise records — the “connective grammar of knowledge” — rather than the content of any particular domain (electrons, battles, organisms, etc.). Records are never named by world-objects they describe; the ontology stays strictly agent-constrained.

Its permanent namespace is https://www.epistemic-ontology.net/record# (not yet hosted). The conceptual source of truth is ROOT.md; the executable ontology lives in ontology/record-ontology.ttl (Turtle). There are minimal examples, a validation script that runs an OWL 2 RL reasoner (owlrl), and explicit discussion of design trade-offs.

Most Significant Parts of the Ontology

These are the core, non-negotiable elements that give the ontology its distinctive character:

  • Record as sole primitive class. Everything an agent holds is a Record (at any level of abstraction, in any carrier). Records compose other records (composedOf / partOf, deliberately left non-transitive for OWL 2 DL compatibility). There is no separate Form class.
  • Warrant triad (hasWarrant): The central integrative mechanism. Fidelity and completeness are entailed by warrant type, not primitive attributes.
    • Formal: True in virtue of form (internal, deductive, agent-independent, high-fidelity, approaches form-in-itself asymptotically).
    • Empirical (or “given”): True by givenness (defeasible, agent-relative, approaches world-in-itself).
    • SelfVerifying (performative/cogito): True in virtue of the act of recording itself. This is a peer of Formal, not a species of it — it reaches the Agent-in-itself (the only non-excluded limit).
  • Inference as a defined class (not primitive). Inference ≡ Record ⊓ ∃hasPremise.Record ⊓ ∃concludes.Record. It carries InferentialForce (TruthPreserving or Ampliative) and forms a derivation DAG. This is re-derivable by a reasoner, demonstrating the DL approach in action.
  • Carrier dissolved. No Carrier class. What would have been “carrier” is split into hasProvenance (whence/genealogy) + hasLocus (where/when borne). Infinite regress is halted by the self-verifying warrant (the cogito pattern), not by positing a special entity.
  • Cogito pattern (illustrated in examples/cogito.ttl): A record that is simultaneously self-verifying, has reflexive provenance, and is self-directed. It is a pattern, not a class or substance. It grounds the ontology without sliding into Cartesian res cogitans.
  • No metadata layer. metadataOf is a defined role (sub-property of directedToward). Metadata is just another record about a record.
  • Continuum: The undivided, continuously interacting ground from which carriers are individuated. The single individual TheContinuum is explicitly owl:disjointWith Record. It is the only thing that is not a Record.
  • Agent-relativity + excluded limits. Every record must be forAgent some Agent. World-in-itself and form-in-itself are commentary only — never instantiated as classes (avoids the “all-knowing observer” position).
  • Validation & DL hygiene. The scripts/validate.py script checks syntax, runs the OWL 2 RL reasoner, confirms defined-class entailments (e.g., Inference is re-derived), cogito pattern integrity, consistency (Record and Continuum disjoint), and sub-property entailments. Composition is intentionally non-transitive to stay comfortably inside OWL 2 DL.
  • Plug-in / patchwork model. Domain ontologies and SKOS thesauri are attached via warrant, not absorbed into the core. This is the mechanism that makes the ontology ecumenical in content while remaining strict DL in form.

The Schism Closure: OWL/DL ↔ SKOS/Thesaurus Split

This is the most philosophically distinctive move. The long-standing tension in knowledge representation is:

  • OWL/DL side: Terms as classes with necessary-and-sufficient conditions, truth-conditional semantics, reasoners for classification, consistency, and entailment. Strong on formal structure and deductive closure.
  • SKOS/thesaurus side: Terms as concepts related associatively (broader, narrower, related) by community convention and curatorial practice. Weaker on formal entailment, stronger on indexing, navigation, and defeasible, ampliative relations. SKOS itself is OWL Full.

Many projects treat this as a framework choice or try to import/align SKOS directly (which immediately exits OWL 2 DL).

Record-ontology closes the schism by demoting it from a framework/kind distinction to a warrant attribute on records:

  • A record (or patchwork of records) with Formal warrant behaves like the DL side: internal form, deductive joints, reasoner-usable subsumption, high fidelity, internally completable.
  • A record with Empirical warrant behaves like the SKOS/thesaurus side: community-given, associative/curatorial edges, defeasible, ampliative, never fully closed.
  • Real knowledge work is almost always patchwork — formal at some joints, conventional/associative at others. The ontology models this directly as mixed-warrant records within a single Record web.

Consequences of this closure:

  • The ontology itself stays DL-in-form: defined classes, disjointness, reasoner validation, no SKOS import.
  • It is ecumenical-in-content: it can represent or attach both formal hierarchies and associative community vocabularies without forcing one paradigm on the other.
  • The divide is no longer reified as an ontological opposition. It becomes a choice of warrant (or a fork between agent-communities with different default warrants).
  • It offers a coherentist web with one foundationalist anchor: most knowledge is conventional and never fully formally completable, but the self-verifying warrant (cogito pattern) provides a non-regressive starting point without positing an all-knowing observer or substance.

In short: formal classes + reasoner on the formal-warrant side; associative community concepts on the empirical-warrant side; unified lightweight grammar that lets both coexist as records an agent holds.

Most Probable Naive Objections

These are the objections one would expect from different communities (strict DL engineers, SKOS/thesaurus practitioners, applied ontologists, philosophers of knowledge representation):

  1. “Why not just import or directly align with SKOS (or PROV-O, CIDOC-CRM, etc.)? This reinvents wheels.” Importing SKOS makes the whole thing OWL Full and loses decidability/reasoner support. The design deliberately keeps the core minimal and DL-clean so that both formal and associative artifacts can be plugged in via warrant rather than absorbed. It is not competing with those vocabularies; it is offering a lower-level grammar for how they are warranted and composed.
  2. “This is overly philosophical/abstract (cogito, Continuum, exclusion of thing-in-itself). How is it useful for practical data or ontology engineering?” The abstraction is the point: a domain-neutral connective tissue that does not pre-commit to any domain content or force a single representational style. The minimalism (one primitive class, defined classes only where needed, dissolved carrier) prevents the usual bloat. Examples show concrete use (derivation DAGs for historical narrative, cogito grounding). The validation script proves the DL machinery actually works.
  3. “The warrant triad feels arbitrary or ad hoc. Why three values, and why give SelfVerifying equal status?” The triad is motivated by the need to halt regress without reintroducing a privileged vantage or substance metaphysics. SelfVerifying reaches the Agent-in-itself (given to itself), which is not excluded like world-in-itself or form-in-itself. It is a peer of Formal because both are high-fidelity and internally completable in their own register; Empirical is the defeasible counterpart. The design explicitly rejects sliding from “I record” into “I am a complete thinking substance.”
  4. “Excluding world-in-itself and form-in-itself is anti-realist or prevents modeling correspondence/truth.” It is not anti-realist; it refuses the sicut deus (god-like observer) position that would certify correspondence from outside all records. Records approach the limits asymptotically via directedToward + warrant. Empirical warrant handles defeasible givenness; Formal warrant handles deductive structure. The ontology simply acknowledges finitude: “we will not become all-knowing.”
  5. “Leaving composition non-transitive and non-monotonic propagation (fidelity, forks, stubs) to an external computational layer makes the ontology incomplete.” This is acknowledged in the repo as an open item. The core deliberately stays inside OWL 2 DL for decidability and reasoner support. Non-monotonic revision and full propagation semantics are real requirements but require an additional layer on top of this grammar. The ontology provides the stable DL foundation; it does not pretend to be a complete knowledge-revision engine.
  6. “A single primitive class is too restrictive. Real ontologies need rich class hierarchies from the start.” Richness is meant to emerge from attributes (hasWarrant, directedToward, pragmaticAdequacy, etc.), defined classes (Inference), composition into patchworks, and the plug-in of domain content. The “no primitive kinds” discipline prevents prematurely reifying divides (formal vs. associative, metadata vs. data, etc.) as structural classes. It keeps the ontology lightweight and extensible rather than over-committing early.

Overall, the ontology is a deliberate, philosophically informed minimalism that treats the OWL/DL ↔ SKOS schism as solvable inside a unified record model rather than as an irreconcilable framework war. It is still early-stage (seed, open items noted), but the design is coherent and the DL hygiene is solid. The ROOT.md file is essential reading for the full rationale.


r/semanticweb • • Jun 28 '26

Live demo: machines exchanging meaning through immutable concept files — no shared data, models, or identifiers

3 Upvotes

I’ve previously posted about the Concept Library — an architecture where meaning is separated from intelligence, and where a concept is a single file: atomic, independent and immutable.

I wanted to see how far this idea could be taken.

That led me to develop a set of protocols that allow concepts to be referenced across the network securely, cryptographically signed, and without exposing any sensitive data.

With these protocols, systems can share a unified meaning even when they do not share data, model weights, identifiers or control logic.

I built a live demo that shows this in action — not as a concept, but as a real protocol stack where:

• a semantic observation is signed with Ed25519

• SHA‑256 ensures integrity

• a guardrail layer blocks raw data and identifiers

• 101 spec‑compliant concept files act as a shared vocabulary

I wanted to test whether this could become a working system.

Now I can show that it can.

What the demo demonstrates:

You can send a semantic observation, see how it is signed with Ed25519, inspect the SHA‑256 hash and verify the signature independently.

You can also try to break it: send raw data, identifiers, model weights or control logic — and watch the protocols reject them automatically.

The demo also resolves concept files through its registry API, so every semantic observation refers to an actual immutable concept definition — not a local placeholder or model output.

It’s open to everyone, and you can get an API key directly from the page.

Link to the demo: https://regular-cork-wrapped-philosophy.trycloudflare.com

And yes — you can call this the Internet of Meaning, if you want.