ClioPatria... a few questions regarding its state and capabilities


I am part of (and providing thought leadership to) a team designing/developing a ‘DevOps’ Semantic Web Stack for the Electric Utility/MBSE space: a cloud-based/neutral tool to:

  • Curate/extend a core ontology
  • Manage ontology representations of enterprise and partner data catalogs
  • Align (map) them contextually using Profiles and Notation 3 (N3) Rules
  • Annotate anything with anything and,
  • Git, govern and capture provenance of all by treating models as code.

The idea of ClioPatria as a platform/backend/store to support this is very compelling. We have tested it out a bit through http://, pengines, swish, etc. It ticks a LOT of boxes. As a result, we have/need the following questions/help:

  • What is its development state?
  • Is it still is use today?
  • Is there anything that has superseded it? I know there’s been some work on WebProlog, but not sure if is ready for prime-time.
  • Should we not use it? Why?
  • Reasoning: I have run across documentation that speaks about native reasoning (all the way back to dissertation), but cannot find examples on how/where to perform this (e.g., via pengines, http, etc.) with stock ClioPatria functionality. e.g., is there a full example inclusive of fact(s), rule and query for doing this with Cliopatria where the rule is persisted in the db??? Maybe I am not be looking in the right places?

  • N3 Rule Persistence and Retrieval via Pengine (Eye Reasoner): We plan on using the Eye Reasoner also written in Prolog (+1 bonus!). I do, however, have a hard requirement to persist N3 rules not as files, but graphs, individually and in sets (as named graphs).

    • There has been some great work/attempts (with Henry/SeRQL, etc.) of N3 persisistence in Cliopatria, but seem dated.

    • Has anyone successfully been able to achieve this? I haven’t come across any evidence of Eye and ClioPatria playing together.

      I have a few thoughts/ideas:

      • Eye has a great N3 parser inspired by Henry but no db storage of rules that I can find (I could have missed this?).

      • Could Eye Reasoner be integrated in as an entailment with an option to persist rules as well??? I’m not experienced enough with Prolog at this point to assess the level of effort/difficulty.

  • Python RDFLib Prolog Store using Pengines: It seems logical to me for accessibility and broader adoption of Prolog to consider a Prolog store (ala an instance of ClioPatria) for Python’s RDFlib

    • There seems to have been some great work done here, but is dated
    • Modernize the design of the store plugin to use Pengine(s) rather than locally binding in C to Prolog.
    • Analagous to providing rdflib-sqlalchemy connection string, there would be the connection string to the Pengine.
    • This could promote wider use of Prolog (even if just for it as a store/knowlege base). Any thoughts on this? I would love to work on this with some help!
  • Lastly, if N3 rules can be stored in the db, does the implementation of SPARQL or SeRQL support querying (or for that matter INSERT/UPDATE!!)

Aside from the items listed above and given our requirements, are there other options? Our big requirement is the need for N3 persistence. There are not many choices out there (that I have discovered…). We are open to suggestions.

I would like to do what I can to help reinvigorate Prolog as a language and I see a great opportunity through N3. The W3C N3 community recently published an early draft of the Notation3 specification demonstrating renewed commitment to the language.

Any and all pointers, tips, advice, help is appreciated. I am very excited about being a new member of the SWI-Prolog community and hope in some small way I can make a difference in helping to promote such a great language!


Tim Duval
github: MartyStache

1 Like