Building Something Real
Assignment for MC-4 Fall 2025 © Anatoly Scherbakov
This document synthesizes technical and business considerations for building knowledge graphs in real-world enterprise contexts.
Big Picture Understanding: Technical and Business Considerations Combined
I first found out about the Semantic Web maybe around 2013, when I was a university student. I played a little bit with RDF, SPARQL, and with a PHP triple store that supported them (I think the up to date version of that product is now known as semsol/arc2).
Since then, time to time, I returned to this topic as a detour from my software development career. I had a few ideas about what to do, did some learning, prototypes and experiments. That went rather slowly though.

Then, at one point, I read the book:
Linked Data Visualization: Techniques, Tools and Big Data by Laura Po, Nikos Bikakis, Federico Desimoni, and George Papastefanatos (Morgan & Claypool, 2020), ISBN: 9781681737256, linkeddatavisualization.com
I noticed that, even though the book analyzes a bunch of RDF visualization tools, none of them have been used to build tables, graphs, charts, lists in the book itself.
This hinted that there is a general issue with converting a piece of RDF into something a human can easily view.
Fresnel vocabulary was one attempt to solve the issue. It seems to be a little bit constraining though. Particular type of visualizations are tied to particular RDF terms from the vocabulary; Fresnel is coupled with HTML and CSS. What if we want to visualize data not in HTML but, say, in the terminal? Or in 3D?
I thought something more generic, which would allow using an arbitrary piece of code (known henceforth as a Facet) to render Linked Data in a certain fashion, would be interesting to implement. So I did; I started working on this iteration of Iolanta in January 2023.
I implemented facets, terms, and a rudimentary ontology, built a website, but… it is a frustrating experience to have a technology and search for use cases where it can be applied.
I feel the KGC Course helped me change my perspective.
Application to Work, Projects, and Real-World Situations
Going through the course was one particular use case for Iolanta — not just because its ontology was the subject matter but also because I used it to prepare the papers for the course extensively. Particular parts of the course motivated development of particular features.
-
- Mermaid rendering facet (
pkg:pypi/iolanta#mermaid-graph) SPARQLTextclass for storing SPARQL queries as Linked DataOutputDatatypeclass for defining output formats- MkDocs macros plugin integration (
as()filter,sparql()macro,path_to_uri()macro)
- Mermaid rendering facet (
-
- Graphs visualization for the textual UI (
pkg:pypi/iolanta#textual-graphs), to list all named graphs iolanta:last-loaded-timeproperty for tracking when named graphs were loadediolanta://_metaspecial named graph for metadata tracking
- Graphs visualization for the textual UI (
-
SPARQL inference system with Wikidata-specific queries:
In addition, what I feel I got from this course is this:
Use case should drive technology
I am reformatting the roadmap for the project with a distinct set of use cases for which Iolanta might be of use, and I am tying enhancements to its technology to those use cases. Primarily, these are the use cases I am interested at myself. Obviously, I will be very happy to find out what other people think.
graph LR
Be4a3407571c2("⬜ First WASM based facet")
B4d253ee0dfbf("⬜ Inference depends on alphabetical order of its CONSTRUCT queries")
Beb1b08c5a942("⬜ Render LD from IPFS")
B9c057d2f3ae9("⬜ Upper ontology not chosen for <code>roadmap</code>")
B07ccaa1978d1("⬜ Tractatus Logico-Philosophicus → LD")
B84ec2edd5546("⬜ Discovery MCP discovers LD based on free form text")
Bcab715037696("⬜ Implement YAML-LD Ontology")
Be15c0950ddf8("⬜ <code>mermaid</code> datatype from roadmap plugin does not resolve nor is documented")
Be3abb3d354c2("⬜ Generate this roadmap from LD")
https___iolanta_tech_Facet("Generate Facets list")
click https___iolanta_tech_Facet "https://iolanta.tech/Facet/"
B1e6ae5a6b6f2("⬜ Unblock Nanopubs")
B0ee61209ae30("⬜ HOWTO Make your own facet")
B14fd666dd34d("⬜ Render a Decision Matrix with Iolanta")
Ba0ae8aac00cd("⬜ Manage ADRs with Iolanta")
B8f076fe4a71f("⬜ Build roadmaps & plans with Iolanta")
https___github_com_Nanopublication_nanopub_py_pull_180("PR 180: Nanopublication/nanopub-py is merged")
click https___github_com_Nanopublication_nanopub_py_pull_180 "https://github.com/Nanopublication/nanopub-py/pull/180"
Bd49a1319bc78("⬜ <code>$type: Bug</code> does not work; maybe use some other syntax even?")
Bb100dc894980("⬜ Start jeeves-nanopublications")
B88c7ec2ec026("⬜ Roadmap <code>Unblocked</code> is a <code>Class</code>")
Bef9ef803a186("⬜ Implement a 3D view for the roadmap (because should look cool)")
B36700fb100c8("⬜ Armenian pronouns nanopub")
B6ecc998bfa9b("⬜ Write nanopublications with Iolanta")
Ba08e80a04c6b("⬜ Unable to specify if <code>Event</code> had happened")
B83935f429cbe("⬜ pyld fails on lexinfo")
B3f7a3eec2592("⬜ FOAF Title facet only reacts on foaf:Person class")
Be1fdc40e3110("⬜ Iolanta starts with a blank console")
B2227a9446397("⬜ SPARQL inference handled by sparqlspace")
Bc5ca9c7eaabb("⬜ sparqlspace has no integration tests")
B6604b9b0e383("⬜ FOAF Title facet only reacts on foaf:Person class")
B9dee75e410d3("⬜ Iolanta starts with a blank console")
B1c9e789ab6b1("⬜ SPARQL inference handled by sparqlspace")
B751c8e0c9019("⬜ sparqlspace has no integration tests")
Bdfbbeab65389("⬜ pyld fails on lexinfo")
B84ec2edd5546 --> B6ecc998bfa9b
B83935f429cbe --> B36700fb100c8
B1e6ae5a6b6f2 --> B36700fb100c8
B14fd666dd34d --> Ba0ae8aac00cd
B9c057d2f3ae9 --> Bd49a1319bc78
B9c057d2f3ae9 --> Ba08e80a04c6b
B9c057d2f3ae9 --> B88c7ec2ec026
Ba0ae8aac00cd --> B8f076fe4a71f
Be3abb3d354c2 --> B8f076fe4a71f
B8f076fe4a71f --> Bef9ef803a186
B1e6ae5a6b6f2 --> https___github_com_Nanopublication_nanopub_py_pull_180
B1e6ae5a6b6f2 --> Bb100dc894980
B1e6ae5a6b6f2 --> B84ec2edd5546
classDef predicate fill:#1f2233,stroke:transparent,color:#f8fafc,stroke-width:0px;
classDef hidden fill:transparent,stroke:transparent,color:transparent,stroke-width:0px;
classDef nanopubdot fill:#0f172a,stroke:#0f172a,color:transparent,stroke-width:2px;
classDef transparent fill:transparent,stroke:transparent,color:transparent,stroke-width:0px;
class Edge_3e98af9622e5,Edge_dc9258d70981,Edge_312cb5fd94ff,Edge_5b67e3499770,Edge_b40a5a79b84a,Edge_19518c6facf9,Edge_61086fa06849,Edge_40577eb2f76d,Edge_decbcf867e49,Edge_aacb3dbbc651,Edge_f309e06fbea3,Edge_f87107bf9781,Edge_1ee786b4bc7a predicate
classDef unblocked fill:#0a5,stroke:#063,stroke-width:2px,color:#fff;
class Be4a3407571c2 unblocked
class B4d253ee0dfbf unblocked
class Beb1b08c5a942 unblocked
class B9c057d2f3ae9 unblocked
class B07ccaa1978d1 unblocked
class Bcab715037696 unblocked
class Be15c0950ddf8 unblocked
class Be3abb3d354c2 unblocked
class https___iolanta_tech_Facet unblocked
class B1e6ae5a6b6f2 unblocked
class B0ee61209ae30 unblocked
class B14fd666dd34d unblocked
class B83935f429cbe unblocked
class B3f7a3eec2592 unblocked
class Be1fdc40e3110 unblocked
class B2227a9446397 unblocked
class Bc5ca9c7eaabb unblocked
This roadmap demonstrates how technical foundations enable higher-level usecases such as managing ADRs, building roadmaps, and writing nanopublications with Iolanta, reflecting the synthesis of technical and business considerations for real-world knowledge graph applications.
What Still Needs Clarification
- What industries might benefit from an RDF visualization tool?
- What use cases to focus on?
- Are there perspectives of self-sustainability for this project, remembering that it must always remain open source?
Conclusion
The KGC course helped me shift from building technology in search of problems to identifying usecases that drive technical development. The roadmap reflects this change: technical foundations (facets, SPARQL, inference) now enable specific usecases (nanopublications, ADRs, roadmaps) rather than existing as solutions awaiting applications.
In the purely technological sense,
- I learned a lot about ontology building as a discipline,
- Found out about foundational ontologies,
- Improved my understanding of OWL,
- Got valuable feedback.
Thanks! I greatly enjoyed the experience.