Code Monkey home page Code Monkey logo

Comments (10)

IvanoBilenchi avatar IvanoBilenchi commented on June 7, 2024 1

There's nothing improper about using quad stores as the underlying storage. With "proper" I meant "adherent to the structural specification", abstraction-wise. The OWL API implements an OWL 2 structural data model just as Cowl does (i.e. you have model objects for "ontologies", "axioms", "class expressions" and other OWL constructs), while most RDF-based frameworks I know of can parse OWL 2 to RDF and mostly leave it at that, meaning one is left working with triples and SPARQL queries. I don't have enough experience with owlready2 to know if this applies to it as well.

I will point out we are pretty off-topic from the subject of the issue. If you require further assistance with Cowl feel free to open separate issues, however please note that my time is very limited these days so further inquiries will have to be focused on Cowl itself for me to be able to reply.

from cowl.

wbraswell avatar wbraswell commented on June 7, 2024

My team has been investigating this very issue recently, and we have come to the tentative conclusion that Redland/Raptor is now too outdated for our technical needs. We are in the process of putting together a comprehensive Perl-and-C based approach for working with RDF/OWL ontologies.

Fortunately, the Attean project by @kasei seems to provide most or all of our desired RDF and SPARQL functionality.
https://github.com/kasei/attean
https://metacpan.org/dist/Attean

@IvanoBilenchi will you please review the Attean project and let us know if you find it to be a potential complement to Cowl?

from cowl.

IvanoBilenchi avatar IvanoBilenchi commented on June 7, 2024

In order for a RDF toolkit to be suitable as a backend for Cowl it needs to be implemented in a sufficiently low-level language, with the (strongly) preferred option being C. It is a strict requirement for us as Cowl must be able to run on the widest possible range of platforms, including embedded devices (for which C/C++ is currently the only reasonable option). With regards to the original issue, we do now have support for selecting readers at compile time, though there's no timeframe on RDF/SPARQL support other than "it will eventually come", as it keeps popping up as a requirement in our research as well.

On the other hand, Attean may serve -your- purpose. I know nothing about C-Perl interoperability, but if it is anything like the Java Native Interface or the C API for Python, then you may be able to make it work. The effort is of course non-negligible, as a Perl implementation of the OWL-RDF mapping would be needed, together with bridging to Cowl data structures and any necessary glue.

from cowl.

wbraswell avatar wbraswell commented on June 7, 2024

Thanks @IvanoBilenchi for the great info, especially the need for an OWL-to-RDF mapping component.
I totally agree with your requirement of C/C++ for any Cowl extensions.

I also agree with the sentiment that Attean may work for our Perl-centric needs at this time. (I have already asked the Attean people if they have started work on such a mapping: kasei/attean#161)

Have you considered the possibility of utilizing the owlcpp code related to "Converting RDF triples to DL axioms" as your RDF-to-OWL mapping?
https://owl-cpp.sourceforge.net/tutorial_cpp.html

from cowl.

IvanoBilenchi avatar IvanoBilenchi commented on June 7, 2024

Despite its name, owlcpp is more of a RDF library, as anything related to OWL semantics is delegated to the Fact++ reasoner. We assessed owlcpp long before starting the Cowl project, and its mapping to OWL axioms was one of the things I specifically did not like, as it is done by spawning an instance of Fact++ over the RDF triple store. Resorting to a full-blown OWL reasoner for a syntactical mapping is both overkill (w.r.t. code size, performance, memory, etc.) and a huge overlap of responsibilities.

from cowl.

wbraswell avatar wbraswell commented on June 7, 2024

Thanks for the info about owlcpp, we have decided to go with Cowl and will be moving forward with plans to create a Perl API for Cowl in the near future.

Meanwhile, we still need to figure out how to implement the OWL-to-RDF mapping component. We do potentially plan to use Attean as well, and the Attean folks have indicated that they have not yet worked on the OWL-to-RDF mapping.

Looking into Fact++, I have found the following BitBucket as the latest source code:
https://bitbucket.org/dtsarkov/factplusplus/src/master/

Can you please tell me, where exactly in the Fact++ source code is the OWL-to-RDF mapping contained?

from cowl.

IvanoBilenchi avatar IvanoBilenchi commented on June 7, 2024

I believe part of the logic is implemented in adaptor_triple.cpp, though it looks incomplete (some types of triples are ignored) and it seems to rely on the Fact++ library for quite a bit of stuff.

from cowl.

wbraswell avatar wbraswell commented on June 7, 2024

Thanks for helping us locate owlcpp's adapter_triple.cpp file, we have briefly reviewed the C++ source code and agree with your assessment that it relies on Fact++ and is probably not of any practical use to us at this time. We will go ahead and move forward with our plans to create a Perl API for Cowl, and will keep you informed as we make progress. I'm sure we will have many questions for you as we go along! :-)

Meanwhile, we are looking at the owlready2 Python API as a potential template or guide for implementing our Perl wrapper around Cowl. Can you please tell us, what (if any) are the significant design and functionality differences between the Cowl API and the owlready2 API?

https://bitbucket.org/jibalamy/owlready2/src/master/

from cowl.

IvanoBilenchi avatar IvanoBilenchi commented on June 7, 2024

I'm not confident enough with owlready2 to be able to answer that, however it looks like it's using an RDF quad store as its core data model. This likely entails it is pretty different from Cowl architecture-wise, as its data model reflects that of the OWL 2 functional specification.

If you're looking for architecture guidance and specifically require something that's similar to Cowl, the OWL API is certainly a much closer candidate, as it implements a proper OWL 2 structural data model rather than just relying on logical views over RDF.

from cowl.

wbraswell avatar wbraswell commented on June 7, 2024

Hello and happy new year!
Can you please explain in more detail why you consider Cowl and OWL API to contain the "proper OWL 2 structural data model", and also why owlready2's usage of RDF quad stores would thus be considered "improper"?
In other words, what are the practical differences between the proper and improper implementations?

from cowl.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.