# FuXi: Reborn Semantic Web Reasoner & Interlocutor > A knowledge graph meshup connecting the [FuXi origin story](https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7#this) on Medium with the [semantic-web-reasoner-skill](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23swrSkill) MCP tool collection — bridging theoretical reasoning concepts with a practical LLM-assisted ontology toolkit. **View infographic:** [fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.html](fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.html) **RDF source:** [fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl](../rdf/fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl) **JSON-LD:** [fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.jsonld](../rdf/fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.jsonld) --- ## Key Theoretical Concepts ### [Forward Chaining](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23forwardChaining) A data-driven inference method that starts with available data and uses inference rules to derive new facts (extract more data) until a goal is reached. Used in FuXi's RETE-UL evaluation engine. ### [Backward Chaining](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23backwardChaining) A goal-driven inference method that works backward from a goal, identifying rules whose conclusion matches and recursively satisfying their premises. Implemented in FuXi via the Backward Fixpoint Procedure. ### [Meta-Interpretation](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23metaInterpretation) A logic programming technique where an interpreter for a language is written in that same language. In FuXi, the meta-interpreter compiles a ruleset and goal into RETE-UL meta-interpretation rules that drive query evaluation. ### [RETE-UL](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23reteUL) A modification of the original RETE production rule algorithm (Doorenbos 1995) that limits fact syntax to 3-item tuples, naturally mapping to RDF trip ### [Backward Fixpoint Procedure (BFP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23bfp) A meta-interpreter defined by Francois Bry (1990) for reconciling bottom-up and top-down query evaluation in recursive databases. Asserts query and ev ### [SPARQL Interlocution](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlInterlocution) An extension of Bry's BFP meta-interpreter that incorporates SPARQL service evaluation into the reasoning loop. Generates open queries and intermediat ### [Description Logic Programs (DLP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23dlp) A technique from Grosof et al. (2003) providing a direct mapping from a subset of OWL Description Logic into equivalent Horn rules (logic programs). U ### [Open World Assumption (OWA)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23openWorldAssumption) The semantic principle of OWL and RDF stating that the absence of a stated fact does not imply its falsehood. A reasoning-aware application can assume ### [Sideways Information Passing (SIP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sip) Query evaluation strategies that pass variable binding information (bound/free adornments) sideways between rule body terms. Originating from relation ### [TBox (Terminological Box)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23tbox) In Description Logic, the TBox contains terminological statements: class names, property descriptions, restrictions, and their hierarchies. Defines th ### [ABox (Assertional Box)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23abox) In Description Logic, the ABox contains grounded individual statements: class memberships, object relationships, and data property values for specific --- ## Core Tool Ecosystem Software stack surrounding FuXi — from RDF I/O to OWL verbalization. ### [FuXi](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23fuxi) A Python bi-directional reasoning engine (forward/bottom-up + backward/top-down) companion to RDFLib. Handles OWL 1.1/2.0, RDF, RDFS, RIF, N3. Impleme ### [owl_dsl](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23owlDsl) A Python tool for verbalizing OWL ontologies into Controlled Natural Language. Renders OWL classes and properties as Manchester Syntax phrases. Used b ### [ROBOT](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23robot) A command-line tool for OBO Foundry ontology development. Validates OWL 2 profiles (RL, DL). Used by the skill's check-ontology tool for running struc ### [riot (Apache Jena)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23riot) Apache Jena's RDF I/O Technology CLI. Parses, converts, and validates RDF in multiple serialization formats. Used by the semantic-web-reasoner-skill f ### [owlready2](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23owlready2) A Python module for manipulating OWL 2.0 ontologies using SQLite persistence. Used by the skill's ontology management tools (create-ontology, list-ont ### [Pychinko](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23pychinko) An early Python N3 reasoner using the original RETE algorithm. FuXi (circa 2006) initially continued in Pychinko's footsteps before evolving to the RE ### [CWM (Closed World Machine)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23cwm) W3C's Notation 3 reasoner. One of the first N3 reasoners used in the CVIR project before FuXi was created. ### [Euler](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23euler) An N3 reasoner supporting backward reasoning. One of the early reasoners (alongside CWM and Pychinko) used before FuXi was created to handle larger sc --- ## FuXi CLI Subcommands `schema:SoftwareSourceCode` instances — command-line examples from the knowledge graph. ### [fuxi.core](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23fuxiCoreTool) *Python / CLI* FuXi CLI subcommand for forward chaining evaluation and RETE network diagnostics. ```bash fuxi.core facts.n3 ``` ### [fuxi.owl](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23fuxiOWLTool) *Python / CLI* FuXi CLI subcommand for OWL reasoning, DLP compilation, and BFP query answering. Supports --dlp, --hybrid, --method=bfp, --why (SPARQL goal), --output. ```bash fuxi.owl --method=bfp --dlp --hybrid --ns eg=http://example.net/vocab# --why "ASK { eg:bob your:isBrotherOf eg:joe }" --output proof-graph-svg test/OWL/inverseOf/premises001.rdf > proof.svg ``` ### [fuxi.proof](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23fuxiProofTool) *Python / CLI* FuXi CLI subcommand for proof and SIP graph generation. Output formats: rete-network-svg, sip-collection-svg, adornment, pml, proof-graph-svg, proof-graph-png. ```bash fuxi.proof --method=bfp --dlp --hybrid --ns eg=http://example.net/vocab# --why "ASK { eg:bob your:isBrotherOf eg:joe }" --output rete-network-svg test/OWL/inverseOf/premises001.rdf > rete_network.svg ``` --- ## Skill Tool Inventory [semantic-web-reasoner-skill](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23swrSkill) — 10 tool definitions for LLM-assisted OWL reasoning. - **[list-ontologies](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23listOntologiesTool)** — Lists OWL ontologies saved as owlready2 SQLite files in a working directory. - **[verbalize-ontology-class](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23verbalizeOntologyClassTool)** — Verbalizes an OWL class into Controlled Natural Language using owlready2 and owl_dsl. Input: ontologyUri, sqliteFile, ba - **[find-ontology-property](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23findOntologyPropertyTool)** — Finds OWL properties by label and URL pattern in an ontology SQLite file. - **[create-ontology](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23createOntologyTool)** — Creates an owlready2 SQLite ontology and archives provenance for later use. Input: ontologyUri, baseUri, owlFile, workin - **[find-ontology-class](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23findOntologyClassTool)** — Finds OWL classes by label pattern (string or regex) in an ontology SQLite file. - **[dir-ontology](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23dirOntologyTool)** — Lists ontology terms in Manchester OWL Syntax from an owlready2 SQLite file. - **[check-ontology](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23checkOntologyTool)** — Runs a ROBOT-powered structural and quality report on all issues with an OWL ontology file. - **[extract-class](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23extractClassTool)** — Extracts a class and its dependencies from an OWL ontology. Input: owlFile, term, outputOwl. - **[ontology-report](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23ontologyReportTool)** — Exports details about ontology entities as a tabular report file. - **[ontology-measure-essentials](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23ontologyMeasureTool)** — Computes quantitative and structural metrics about an OWL ontology: class count, property count, complexity, coverage, a --- ## HowTo: Run FuXi BFP Reasoning ### 1. [Step 1](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step1) Use uv to install FuXi and owl_dsl into your Python environment: 'uv pip install fuxi owl_dsl'. Alternatively use 'uv pip install -e ".[dev]"' for development mode. uv is preferred for environment isolation and reproducibility. ### 2. [Step 2](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step2) Use the create-ontology tool with ontologyUri, baseUri, and owlFile parameters to create an owlready2 SQLite ontology. Use list-ontologies to enumerate existing ontologies. Use dir-ontology to list terms in Manchester OWL Syntax. ### 3. [Step 3](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step3) Use verbalize-ontology-class providing the ontology URI, SQLite file, base URI, and class reference. The tool renders OWL classes in Controlled Natural Language using owl_dsl, enabling LLM-assisted ontology Q&A and annotation suggestion workflows. ### 4. [Step 4](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step4) Use check-ontology or invoke ROBOT directly: 'robot validate-profile --profile DL --input ontology.owl'. Use '--profile RL' for the OWL 2 RL profile. Structural errors and profile violations are reported in the output. ### 5. [Step 5](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step5) Invoke fuxi.owl with --method=bfp --dlp --hybrid flags to compile OWL axioms into Horn rules and run Backward Fixpoint Procedure reasoning. Use --why 'SPARQL GOAL' to specify the entailment query, --ns for namespace prefixes, and --output proof-graph-svg to visualize the proof trace. ### 6. [Step 6](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step6) Use fuxi.proof with --output rete-network-svg to render the meta-interpreter RETE-UL network as SVG. Use --output sip-collection-svg to show Sideways Information Passing binding adornments (b=bound, f=free) flowing through rule evaluation. Both outputs can be refined in Inkscape. ### 7. [Step 7](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23step7) Use fuxi.proof with --output pml to serialize the reasoning proof in Provenance Markup Language. The generated RDF proof can be uploaded to a Virtuoso SPARQL endpoint (e.g., via the Virtuoso example at linkeddata.uriburner.com) for exploration using SPARQL queries. --- ## Frequently Asked Questions ### [What is FuXi and why is it called a 'reborn' reasoner?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) FuXi is a Python bi-directional reasoning engine companion to RDFLib, supporting forward-chaining (RETE-UL) and backward-chaining (Backward Fixpoint Procedure). It is called 'reborn' because version 2.0.1 (2026) is a major modernisation restoring its OWL 1.1/2.0, RDF/RDFS, RIF, and SPARQL Entailment capabilities after years of dormancy, adapting to Python and rdflib changes in the interim. ### [How does FuXi's proof visualisation work?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) FuXi's fuxi.proof command generates: proof-graph-svg/png (the full SPARQL interlocution proof trace); rete-network-svg/png (the RETE-UL meta-interpreter network used for evaluation); sip-collection-svg/png (SIP binding adornments showing b=bound / f=free variables); adornment (adorned rule text); and pml (Provenance Markup Language RDF serialisation of the full proof). SVG outputs can be refined in Inkscape for publication. ### [What is the 'meshup' relationship between the article and the skill?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) A meshup creates a semantic mesh where entities from both sources share IRIs and are interconnected rather than merely mixed. The Medium article provides the theoretical and historical layer: RETE-UL, BFP, SPARQL interlocution, DLP, and OWA. The GitHub skill provides the tool layer: fuxi.owl, fuxi.proof, verbalize-ontology-class, robot, owl_dsl, riot. FuXi is the central connecting entity. Together they form an integrated knowledge graph where every theoretical concept links to its implementation and every tool links to its reasoning foundations. ### [What is the vision for generative expert systems?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) Chimezie Ogbuji envisions FuXi as part of a suite for building generative expert systems — systems combining traditional expert system techniques (OWL ontologies, logic rules, backward-chaining proof, PML provenance) with modern transformer-based LLMs. The FuXi series has three parts: (1) origin story and SPARQL interlocution theory (this article); (2) FuXi as SPARQL service endpoint for high-performance ontology reasoning; (3) verbalizing OWL ontologies, rules, and proofs with owl_dsl for LLM-guided expert reasoning workflows. ### [What is RETE-UL and how does it relate to RDF?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) RETE-UL (from Doorenbos 1995) modifies the original RETE algorithm by limiting fact syntax to 3-item tuples, which correspond naturally to RDF triples (subject, predicate, object). It uses hash tables to improve the efficiency of alpha and beta network nodes. FuXi implements RETE-UL as its production rule evaluation engine for both forward-chaining fact derivation and meta-interpretation rule evaluation. ### [What is the Backward Fixpoint Procedure and how does FuXi use it?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) The BFP (Bry 1990) is a meta-interpreter that compiles a ruleset and a goal into meta-interpretation rules: evaluate-k terms trigger rule body evaluation; query-p terms assert new sub-goals; fact assertions trigger new queries. A forward-chaining RETE-UL network evaluates these rules, simulating backward-chaining SLD resolution. Chimezie Ogbuji adapted BFP for RDF, RDFS, OWL, and N3 in 2011. ### [What is SPARQL interlocution?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) SPARQL interlocution extends Bry's BFP meta-interpreter by incorporating SPARQL service evaluation into the reasoning loop. It generates only relevant facts and sub-queries in response to intermediate bindings, enabling complete, sound, safely memoized bottom-up simulation of SLD resolution. It solves the problem of dynamically inferring logically entailed RDF triples under SPARQL Entailment Regimes without pre-materialising the full inference closure — analogous to how SQL views are computed on demand rather than stored. ### [What tools does the semantic-web-reasoner-skill provide?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) The skill provides 10 tool definitions: list-ontologies, verbalize-ontology-class, find-ontology-property, create-ontology, find-ontology-class, dir-ontology, check-ontology, extract-class, ontology-report, and ontology-measure-essentials. It also exposes three FuXi CLI subcommands (fuxi.core for RETE diagnostics; fuxi.owl for OWL/DLP/BFP reasoning; fuxi.proof for proof and SIP graph generation) and ROBOT validation commands. ### [How does the skill use LLMs for ontology verbalization?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) The skill uses owl_dsl via owlready2 to render OWL classes and properties as Controlled Natural Language phrases in Manchester Syntax. These are injected into the LLM context, enabling the agent to suggest annotation property values (e.g., IAO definition annotations), check Q&A accuracy, and generate human-readable descriptions. The verbalize-ontology-class workflow was demonstrated using the open-weight Qwen3.6-35B model on commodity hardware. ### [What is the Open World Assumption and why does it matter for SPARQL?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) The OWA states that absence of a stated fact does not imply its falsehood. For SPARQL, this means a reasoning-aware implementation should return results for patterns that are logically entailed — not only those explicitly stored. Section 1.3 of the SPARQL 1.1 Entailment Regimes recommendation defines this declaratively: it specifies required answers without mandating any specific reasoning strategy (forward or backward chaining). ### [What is DLP and how does FuXi compile OWL axioms?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) DLP (Grosof et al. 2003) provides a direct mapping from OWL Description Logic subsets to equivalent Horn rules. FuXi uses DLP to compile OWL axioms such as owl:inverseOf and owl:TransitiveProperty into N3 Horn rules — for example, owl:inverseOf(hasBrother, isBrotherOf) compiles to two bidirectional Horn rules. These rules are then evaluated by the RETE-UL engine, operationally analogous to how meta-interpreters compile rules into equivalent Horn clauses for SPARQL interlocution. ### [What are Sideways Information Passing strategies?](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23faq) SIP strategies pass variable binding information (bound/free adornments) between rule body terms, directing search toward known access patterns. They originate from relational database research: Magic Sets (Bancilhon et al. 1985) and the power of magic (Beeri & Ramakrishnan 1987). FuXi uses SIP through its BFP meta-interpreter to efficiently evaluate recursive SPARQL queries, and fuxi.proof can render SIP collection graphs and adorned rules showing b/f adornments. --- ## Glossary ### [ABox (Assertional Box)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23abox) In Description Logic, the ABox contains grounded individual statements: class memberships, object relationships, and data property values for specific named individuals. Uses the vocabulary defined in the TBox. ### [Backward Fixpoint Procedure (BFP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23bfp) A meta-interpreter defined by Francois Bry (1990) for reconciling bottom-up and top-down query evaluation in recursive databases. Asserts query and evaluate terms that trigger goal-directed fact generation, enabling a forward-chaining network to simulate SLD resolution. ### [Description Logic Programs (DLP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23dlp) A technique from Grosof et al. (2003) providing a direct mapping from a subset of OWL Description Logic into equivalent Horn rules (logic programs). Used in FuXi to compile OWL axioms (inverseOf, TransitiveProperty) into N3 Horn rules for RETE-UL evaluation. ### [Meta-Interpreter](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23termMetaInterpreter) An interpreter for a language written in the language itself. In FuXi, the meta-interpreter compiles N3/RIF rules and a SPARQL goal into RETE-UL meta-interpretation rules (evaluate-k and query-p terms) that drive backward-reasoning simulation via a forward-chaining network. ### [Notation 3 (N3)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23termN3) A W3C Semantic Web rule language extending RDF with quantified variables, formula contexts, and rule notation. Supported by early reasoners CWM, Euler, Pychinko, and FuXi. N3 rules use left-to-right infix notation with { premise } => { conclusion } syntax. ### [Open World Assumption (OWA)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23openWorldAssumption) The semantic principle of OWL and RDF stating that the absence of a stated fact does not imply its falsehood. A reasoning-aware application can assume a logically entailed statement is present even if not explicitly in the knowledge base. SPARQL 1.1 Entailment Regimes formalise this declaratively. ### [Production Rule Matching](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23productionRuleMatching) The process of matching facts in working memory against conditions (left-hand sides) of production rules to determine which rules can fire. RETE and RETE-UL networks implement this efficiently using discriminating network nodes. ### [RETE-UL](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23reteUL) A modification of the original RETE production rule algorithm (Doorenbos 1995) that limits fact syntax to 3-item tuples, naturally mapping to RDF triples (subject, predicate, object). Uses hash tables for efficient alpha and beta network node evaluation. ### [Rule Interchange Format (RIF)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23termRIF) A W3C standard for exchanging rules among rule systems. FuXi adopts the RIF Basic Logic Dialect (BLD) as its abstract syntax and API for representing and serializing Horn rules. FuXi can output rules in both BLD and N3 format. ### [SLD Resolution](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sldResolution) Selective Linear Definite clause resolution — the inference mechanism underlying logic programming. Implemented in FuXi via backward-chaining simulation using the Backward Fixpoint Procedure over a forward-chaining RETE-UL network. ### [SPARQL Interlocution](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlInterlocution) An extension of Bry's BFP meta-interpreter that incorporates SPARQL service evaluation into the reasoning loop. Generates open queries and intermediate bindings, enabling complete, sound, memoized bottom-up simulation of SLD resolution even over recursive rules. Enables declarative SPARQL Entailment Regime evaluation without pre-materializing the full inference closure. ### [Sideways Information Passing (SIP)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sip) Query evaluation strategies that pass variable binding information (bound/free adornments) sideways between rule body terms. Originating from relational database Magic Sets research (Beeri & Ramakrishnan 1987; Bancilhon et al. 1985), SIP enables efficient evaluation of recursive queries by directing search toward relevant facts. ### [TBox (Terminological Box)](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23tbox) In Description Logic, the TBox contains terminological statements: class names, property descriptions, restrictions, and their hierarchies. Defines the vocabulary (schema) used to describe a domain. ### [TBox / ABox](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23termTBoxABox) In Description Logic: TBox (Terminological Box) defines the vocabulary — class names, property descriptions, restrictions, and hierarchies. ABox (Assertional Box) contains grounded individual statements using that vocabulary. Together they constitute an OWL knowledge base. --- ## Explore the Knowledge Graph via SPARQL Named graph (Turtle): `https://linkeddata.uriburner.com/DAV/demos/daas/fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl` Named graph (JSON-LD): `https://linkeddata.uriburner.com/DAV/demos/daas/fuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.jsonld` ### Entity Types Overview ```sparql PREFIX rdf: PREFIX rdfs: SELECT ?type (SAMPLE(?s) AS ?sampleEntity) (SAMPLE(?label) AS ?sampleLabel) (COUNT(?s) AS ?entityCount) WHERE { GRAPH { ?s rdf:type ?type . OPTIONAL { ?s rdfs:label ?label } } } GROUP BY ?type ORDER BY DESC(?entityCount) ``` [Run live entity-types query on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20rdf%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0APREFIX%20rdfs%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0A%0ASELECT%0A%20%20%20%20%3Ftype%0A%20%20%20%20%28SAMPLE%28%3Fs%29%20AS%20%3FsampleEntity%29%0A%20%20%20%20%28SAMPLE%28%3Flabel%29%20AS%20%3FsampleLabel%29%0A%20%20%20%20%28COUNT%28%3Fs%29%20AS%20%3FentityCount%29%0AWHERE%20%7B%0A%20%20%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20%20%20%20%20%3Fs%20rdf%3Atype%20%3Ftype%20.%0A%20%20%20%20%20%20%20%20OPTIONAL%20%7B%20%3Fs%20rdfs%3Alabel%20%3Flabel%20%7D%0A%20%20%20%20%7D%0A%7D%0AGROUP%20BY%20%3Ftype%0AORDER%20BY%20DESC%28%3FentityCount%29&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ## FuXi Reasoning → SPARQL Entailment Examples Each example traces the full chain: **ABox facts** + **TBox axioms** → **FuXi BFP or RETE-UL reasoning** → **the entailment produced** → **a live SPARQL query that retrieves or materialises that entailment** from the FuXi named graph on URIBurner. Examples 1–2 are from the article's OWL test case 7.1.24 (`owl:inverseOf`); 3 is SPARQL Interlocution; 4–5 are RETE-UL superproperty; 6 is BFP `owl:intersectionOf`. --- ### 1. [BFP owl:inverseOf → CONSTRUCT Entailment](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlBFPConstruct) *SPARQL CONSTRUCT · BFP entailment* · [Source: FuXi test/OWL/inverseOf/](https://github.com/RDFLib/FuXi/tree/master/test/OWL/inverseOf/) OWL test case 7.1.24: *"if (x,y) is an instance of P, then (y,x) is an instance of the named property."* FuXi's **Backward Fixpoint Procedure** evaluates the goal `ASK { eg:bob your:isBrotherOf eg:joe }`. DLP compiles `owl:inverseOf` into bidirectional Horn rules; BFP rewrites the goal to the sub-goal `ASK { eg:joe your:isBrotherOf eg:bob }`, dispatches it to the EDB — which confirms the ABox fact — and the goal is proved. This CONSTRUCT materialises that BFP-derived entailment. **[Sample Dataset: inverseOf](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetInverseOf)** [ABox — asserted fact](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetInverseOfABox): ```turtle @prefix your: . @prefix eg: . eg:joe your:isBrotherOf eg:bob . # ABox asserted fact ``` [TBox — ontology axiom](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetInverseOfTBox): ```turtle @prefix your: . @prefix owl: . your:isBrotherOf owl:inverseOf your:isBrotherOf . # DLP compiles this to bidirectional N3 Horn rules: # { ?X your:isBrotherOf ?Y } => { ?Y your:isBrotherOf ?X } . ``` > ⇒ *eg:bob your:isBrotherOf eg:joe* ← BFP proves via owl:inverseOf backward chaining **SPARQL expressing this entailment:** ```sparql PREFIX your: PREFIX eg: PREFIX owl: # BFP goal: ASK { eg:bob your:isBrotherOf eg:joe } # DLP Horn rule: {?X your:isBrotherOf ?Y} => {?Y your:isBrotherOf ?X} # BFP sub-goal: ASK { eg:joe your:isBrotherOf eg:bob } → true in EDB → goal proved # CONSTRUCT materialises the BFP-derived entailment: CONSTRUCT { eg:bob your:isBrotherOf eg:joe . } WHERE { GRAPH { eg:joe your:isBrotherOf eg:bob . your:isBrotherOf owl:inverseOf your:isBrotherOf . } } ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20your%3A%20%3Chttp%3A%2F%2Fexample.net%2Fvocab%23%3E%0APREFIX%20eg%3A%20%20%20%3Chttp%3A%2F%2Fexample.net%2F%3E%0APREFIX%20owl%3A%20%20%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E%0A%0A%23%20BFP%20goal%3A%20ASK%20%7B%20eg%3Abob%20your%3AisBrotherOf%20eg%3Ajoe%20%7D%0A%23%20DLP%20Horn%20rule%3A%20%7B%3FX%20your%3AisBrotherOf%20%3FY%7D%20%3D%3E%20%7B%3FY%20your%3AisBrotherOf%20%3FX%7D%0A%23%20BFP%20sub-goal%3A%20%20ASK%20%7B%20eg%3Ajoe%20your%3AisBrotherOf%20eg%3Abob%20%7D%20%E2%86%92%20true%20in%20EDB%20%E2%86%92%20goal%20proved%0A%23%20CONSTRUCT%20materialises%20the%20BFP-derived%20entailment%3A%0ACONSTRUCT%20%7B%20eg%3Abob%20your%3AisBrotherOf%20eg%3Ajoe%20.%20%7D%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20eg%3Ajoe%20your%3AisBrotherOf%20eg%3Abob%20.%0A%20%20%20%20your%3AisBrotherOf%20owl%3AinverseOf%20your%3AisBrotherOf%20.%0A%20%20%7D%0A%7D&format=text%2Fx-html-nice-turtle&timeout=0&debug=on&run=+Run+Query+) --- ### 2. [BFP + SIP → SELECT ?brother](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlBFPSelect) *SPARQL SELECT · BFP + Sideways Information Passing* · [Source: FuXi test/OWL/inverseOf/](https://github.com/RDFLib/FuXi/tree/master/test/OWL/inverseOf/) From the article: *"SIP adornments tell FuXi which arguments are bound (b) vs free (f)."* The SIP adorned BFP rule is: `Forall ?X ?_:3 ( :isBrotherOf_bf(?X ?_:3) :- your:isBrotherOf(?_:3 ?X) )`. FuXi runs `--why "SELECT ?brother { eg:bob your:isBrotherOf ?brother }"` — `eg:bob` is bound (b), `?brother` is free (f). SIP propagates the `eg:bob` binding to derive `?brother = eg:joe` without a full table scan. **[Sample Dataset: inverseOf ABox](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetInverseOfABox):** ```turtle @prefix your: . @prefix eg: . eg:joe your:isBrotherOf eg:bob . # ABox fact ``` ``` # SIP adornments: b=bound, f=free # Forall ?X ?_:3 ( :isBrotherOf_bf(?X ?_:3) :- your:isBrotherOf(?_:3 ?X) ) # Forall ?X ?_:4 ( :isBrotherOf_bf(?X ?_:4) :- your:isBrotherOf(?_:4 ?X) ) # # fuxi.owl --method=bfp --dlp --hybrid # --why "SELECT ?brother { eg:bob your:isBrotherOf ?brother }" # --output adornment test/OWL/inverseOf/premises001.rdf ``` > ⇒ *?brother = eg:joe* — BFP with SIP efficiently binds the free variable **SPARQL expressing this SIP-guided entailment:** ```sparql PREFIX your: PREFIX eg: # SIP SELECT: eg:bob is bound (b), ?brother is free (f) # FuXi adorns BFP rules as isBrotherOf_bf and propagates the eg:bob binding # to efficiently derive ?brother = eg:joe without full table scan SELECT ?brother WHERE { GRAPH { eg:joe your:isBrotherOf eg:bob . eg:bob ?p ?brother . FILTER(?p = your:isBrotherOf && ?brother != eg:bob) } } ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20your%3A%20%3Chttp%3A%2F%2Fexample.net%2Fvocab%23%3E%0APREFIX%20eg%3A%20%20%20%3Chttp%3A%2F%2Fexample.net%2F%3E%0A%0A%23%20SIP%20SELECT%3A%20eg%3Abob%20is%20bound%20%28b%29%2C%20%3Fbrother%20is%20free%20%28f%29%0A%23%20FuXi%20adorns%20BFP%20rules%20as%20isBrotherOf_bf%20and%20propagates%20the%20eg%3Abob%20binding%0A%23%20to%20efficiently%20derive%20%3Fbrother%20%3D%20eg%3Ajoe%20without%20full%20table%20scan%0ASELECT%20%3Fbrother%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20eg%3Ajoe%20your%3AisBrotherOf%20eg%3Abob%20.%0A%20%20%20%20eg%3Abob%20%3Fp%20%3Fbrother%20.%0A%20%20%20%20FILTER%28%3Fp%20%3D%20your%3AisBrotherOf%20%26%26%20%3Fbrother%20%21%3D%20eg%3Abob%29%0A%20%20%7D%0A%7D&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ### 3. [SPARQL Interlocution: EDB ASK Sub-Query](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlEDBSubQuery) *SPARQL ASK · FuXi-generated EDB sub-query* · [Source: testBFPQueryMemoization.py](https://github.com/RDFLib/FuXi/blob/master/test/testBFPQueryMemoization.py) FuXi's SPARQL Interlocution generates and dispatches this ASK to the EDB during BFP reasoning, before deciding whether to apply Functional/InverseFunctional Horn rules. If the EDB returns false (no such properties exist), FuXi skips those Horn rules. **[Sample Dataset: intersectionOf](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetIntersectionOf):** ```turtle @prefix first: . @prefix owl: . first:C owl:intersectionOf ( first:Employee first:Student ) . first:B owl:intersectionOf ( first:Student first:Employee ) . first:John a first:B . ``` > ⇒ EDB returns false → no functional properties → FuXi skips those Horn rules **SPARQL sub-query FuXi generates internally:** ```sparql PREFIX owl: # FuXi generates and dispatches this ASK to the EDB during SPARQL Interlocution # before deciding whether to apply Functional/InverseFunctional Horn rules ASK { [] a ?KIND FILTER( ?KIND = owl:InverseFunctionalProperty || ?KIND = owl:FunctionalProperty ) } ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20owl%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E%0A%0A%23%20FuXi%20generates%20and%20dispatches%20this%20ASK%20to%20the%20EDB%20during%20SPARQL%20Interlocution%0A%23%20before%20deciding%20whether%20to%20apply%20Functional%2FInverseFunctional%20Horn%20rules%0AASK%20%7B%0A%20%20%5B%5D%20a%20%3FKIND%0A%20%20FILTER%28%0A%20%20%20%20%3FKIND%20%3D%20owl%3AInverseFunctionalProperty%20%7C%7C%0A%20%20%20%20%3FKIND%20%3D%20owl%3AFunctionalProperty%0A%20%20%29%0A%7D&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ### 4. [RETE-UL subPropertyOf → SELECT has_sibling](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlRETEHasSibling) *SPARQL SELECT · RETE-UL forward-chain entailment* · [Source: test_superproperty_entailment.py](https://github.com/RDFLib/FuXi/blob/master/test/test_superproperty_entailment.py) RETE-UL fires: `john has_brother jack` + `has_brother rdfs:subPropertyOf has_sibling` → derives and stores `john has_sibling jack` in the named graph. This SELECT retrieves the entailed triple. **[Sample Dataset: Superproperty](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetSuperproperty)** [ABox](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetSuperpropertyABox): ```turtle @prefix exterms: . @prefix exind: . exind:john exterms:has_brother exind:jack . exind:jack exterms:brother exind:john . ``` [TBox](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetSuperpropertyTBox): ```turtle @prefix exterms: . @prefix rdfs: . @prefix owl: . exterms:has_brother rdfs:subPropertyOf exterms:has_sibling . exterms:brother owl:equivalentProperty exterms:has_brother . ``` > ⇒ *exind:john exterms:has_sibling exind:jack* — RETE-UL forward-chained and stored in named graph **SPARQL retrieving the RETE-UL entailed triple:** ```sparql PREFIX exterms: # RETE-UL fires: john has_brother jack + has_brother subPropertyOf has_sibling # → derives and materialises: john has_sibling jack (stored in named graph) SELECT ?subject ?object WHERE { GRAPH { ?subject exterms:has_sibling ?object . } } ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20exterms%3A%20%3Chttp%3A%2F%2Fexample.org%2Fterms%2F%3E%0A%0A%23%20RETE-UL%20fires%3A%20john%20has_brother%20jack%20%2B%20has_brother%20subPropertyOf%20has_sibling%0A%23%20%E2%86%92%20derives%20and%20materialises%3A%20john%20has_sibling%20jack%20%20%28stored%20in%20named%20graph%29%0ASELECT%20%3Fsubject%20%3Fobject%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20%3Fsubject%20exterms%3Ahas_sibling%20%3Fobject%20.%0A%20%20%7D%0A%7D&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ### 5. [RETE-UL Full Closure SELECT](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlRETEClosure) *SPARQL SELECT · full RETE-UL forward-chain closure* · [Source: test_superproperty_entailment.py](https://github.com/RDFLib/FuXi/blob/master/test/test_superproperty_entailment.py) Returns all triples in the superproperty dataset namespace: 2 ABox asserted triples + the 1 RETE-UL entailed triple (`john has_sibling jack`). **Expected closure (ABox + RETE-UL entailment):** ``` # ABox facts: exind:john exterms:has_brother exind:jack exind:jack exterms:brother exind:john # RETE-UL entailed (rdfs:subPropertyOf): exind:john exterms:has_sibling exind:jack ``` [TBox axioms used by RETE-UL](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetSuperpropertyTBox): ```turtle exterms:has_brother rdfs:subPropertyOf exterms:has_sibling . exterms:brother owl:equivalentProperty exterms:has_brother . ``` > ⇒ Full closure: 3 triples (2 ABox + 1 RETE-UL entailment) **SPARQL for full RETE-UL closure:** ```sparql PREFIX exterms: PREFIX exind: # Full RETE-UL closure over the superproperty dataset # Returns: john has_brother jack (ABox) # jack brother john (ABox) # john has_sibling jack (RETE-UL: subPropertyOf entailment) SELECT ?subject ?predicate ?object WHERE { GRAPH { ?subject ?predicate ?object . FILTER( STRSTARTS(STR(?subject), 'http://example.org/') && STRSTARTS(STR(?predicate), 'http://example.org/terms/') ) } } ORDER BY ?subject ?predicate ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20exterms%3A%20%3Chttp%3A%2F%2Fexample.org%2Fterms%2F%3E%0APREFIX%20exind%3A%20%20%20%3Chttp%3A%2F%2Fexample.org%2F%3E%0A%0A%23%20Full%20RETE-UL%20closure%20over%20the%20superproperty%20dataset%0A%23%20Returns%3A%20john%20has_brother%20jack%20%28ABox%29%0A%23%20%20%20%20%20%20%20%20%20%20jack%20brother%20%20%20%20%20%20john%20%28ABox%29%0A%23%20%20%20%20%20%20%20%20%20%20john%20has_sibling%20%20jack%20%28RETE-UL%3A%20subPropertyOf%20entailment%29%0ASELECT%20%3Fsubject%20%3Fpredicate%20%3Fobject%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20%3Fsubject%20%3Fpredicate%20%3Fobject%20.%0A%20%20%20%20FILTER%28%0A%20%20%20%20%20%20STRSTARTS%28STR%28%3Fsubject%29%2C%20%20%20%27http%3A%2F%2Fexample.org%2F%27%29%20%26%26%0A%20%20%20%20%20%20STRSTARTS%28STR%28%3Fpredicate%29%2C%20%27http%3A%2F%2Fexample.org%2Fterms%2F%27%29%0A%20%20%20%20%29%0A%20%20%7D%0A%7D%0AORDER%20BY%20%3Fsubject%20%3Fpredicate&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ### 6. [BFP owl:intersectionOf → SELECT Class Memberships](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23sparqlBFPIntersectionOf) *SPARQL SELECT · BFP intersectionOf class membership* · [Source: OWL test/intersectionOf/](https://github.com/RDFLib/FuXi/tree/master/test/OWL/) FuXi BFP reasoning: `first:John a first:B` + `first:B owl:intersectionOf (first:Student first:Employee)` → FuXi derives `first:John a first:Student` and `first:John a first:Employee`. This SELECT retrieves all class assertions entailed from the intersectionOf dataset. **[Sample Dataset: intersectionOf](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetIntersectionOf)** [ABox + TBox](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23datasetIntersectionOfOnt): ```turtle @prefix first: . @prefix owl: . # ABox first:John a first:B . # TBox first:B owl:intersectionOf ( first:Student first:Employee ) . first:C owl:intersectionOf ( first:Employee first:Student ) . ``` > ⇒ BFP derives: `first:John a first:Student` and `first:John a first:Employee` **SPARQL retrieving all BFP-entailed class memberships:** ```sparql PREFIX first: PREFIX rdf: # BFP: John a B + B intersectionOf(Student,Employee) → John a Student, John a Employee # This SELECT retrieves all class assertions from the intersectionOf dataset SELECT ?individual ?class WHERE { GRAPH { ?individual rdf:type ?class . FILTER(STRSTARTS(STR(?individual), 'http://www.w3.org/2002/03owlt/')) } } ``` [Run live on URIBurner ↗](https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20first%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F03owlt%2FintersectionOf%2Fpremises001%23%3E%0APREFIX%20rdf%3A%20%20%20%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0A%0A%23%20BFP%3A%20John%20a%20B%20%2B%20B%20intersectionOf%28Student%2CEmployee%29%20%E2%86%92%20John%20a%20Student%2C%20John%20a%20Employee%0A%23%20This%20SELECT%20retrieves%20all%20class%20assertions%20from%20the%20intersectionOf%20dataset%0ASELECT%20%3Findividual%20%3Fclass%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ffuxi-semantic-web-reasoner-meshup-claude_sonnet4-1.ttl%3E%20%7B%0A%20%20%20%20%3Findividual%20rdf%3Atype%20%3Fclass%20.%0A%20%20%20%20FILTER%28STRSTARTS%28STR%28%3Findividual%29%2C%20%27http%3A%2F%2Fwww.w3.org%2F2002%2F03owlt%2F%27%29%29%0A%20%20%7D%0A%7D&format=text%2Fx-html%2Btr&timeout=0&debug=on&run=+Run+Query+) --- ## FuXi: Origin & Timeline From Cleveland Clinic healthcare data management to a reborn Semantic Web reasoner — two decades of reasoning infrastructure. | Period | Milestone | Detail | |--------|-----------|--------| | Early 2000s | [CVIR at Cleveland Clinic](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23cvir) | Chimezie Ogbuji works in the Advanced Database department of Cardiothoracic Surgery Research. The Cardiovascular Information Registry requires OWL-based domain reasoning to auto-generate XSLT, XForms, and validation documents — the seed requirement for a custom reasoner. | | ~2005 | Early Semantic Web Stack: [CWM](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23cwm), [Euler](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23euler), [Pychinko](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23pychinko) | Early N3 reasoners handle CVIR domain reasoning but cannot scale to hundreds of thousands of patients, motivating a purpose-built solution. | | Late 2006 | [FuXi Created — RETE-UL](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23fuxi) | FuXi begins as a successor to Pychinko. Ogbuji adapts Robert Doorenbos' 1995 thesis, producing RETE-UL: a 3-tuple variant of the RETE network mapping naturally to RDF triples. OWL axioms compiled to Horn rules via Description Logic Programs (DLP). | | 2008 | [Extensible Database Patent + InfixOWL Paper](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23milestone2008) | Patent US7836097B2 documents the CVIR domain interpreter. Ogbuji publishes the InfixOWL paper at OWLED, describing DLP as a direct mapping from OWL Description Logic to Horn-clause logic programs. | | 2011 | [Leaves Cleveland Clinic → BFP + SPARQL Interlocution](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23milestone2011) | Ogbuji becomes a PhD student and Medical Informatics fellow at Case Western Reserve. He adapts Bry's 1990 Backward Fixpoint Procedure (BFP) meta-interpreter for SPARQL interlocution, generating SPARQL sub-queries during reasoning. | | 2012–2013 | [Sherlock Project + Graham Higgins](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23milestone2013) | Working on Sherlock (translating Cell Biology textbooks to formal logic). Contributor Graham Higgins describes SPARQL Interlocution: *"FuXi is a meta-interpreter of OWL written in Python using RDFLib that uses Sideways Information Passing."* | | ~2015 | [FuXi Goes Dormant](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23milestone2015) | Python 2→3 transition and breaking RDFLib API changes render FuXi incompatible. OWL 1.1/2.0, RIF, RDFS, and SPARQL Entailment capabilities lie dormant for roughly a decade. | | 2026 | [FuXi 2.0.1 Reborn](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fchimezie.medium.com%2Fthe-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23milestone2026) | Major modernisation restores OWL 1.1/2.0, RDF/RDFS, RIF, and N3 reasoning with full Python 3 / modern RDFLib compatibility. Ogbuji publishes the origin story and the semantic web reasoner meshup knowledge graph. | ## Attribution & Provenance - **Source article:** [FuXi Origin Story](https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7#this) — Chimezie Ogbuji, Medium - **Skill:** [semantic-web-reasoner-skill](https://linkeddata.uriburner.com/describe/?url=https://chimezie.medium.com/the-origin-story-of-a-reborn-semantic-web-reasoner-and-query-mediator-9185bc1e55e7%23swrSkill) - **Infographic generator:** [rdf-infographic-skill](https://github.com/openlink/rdf-infographic-skill) - **Knowledge graph resolver:** [URIBurner](https://linkeddata.uriburner.com/) - **RDF runtime:** [OpenLink Virtuoso](https://virtuoso.openlinksw.com/) - **Generated:** May 2026 · Model: Claude Sonnet 4