Package: cognipy
CogniPy for Pandas - In-memory Graph Database and Knowledge Graph with Natural Language InterfaceWhats in the boxReasoning, exploration of RDF/OWL,FluentEditorCNL files, with OWL/RL Reasoner (Jena) as well as SPARQL Graph queries (Jena) and visualization.What you can do with this:Write your graph/ontology in Controlled Natural Language or import it from RDF/OWLAdd reasoning rules/T-Box in Controlled Natural LanguageImport data using Pandas or scrap them from the InternetDraw the resulting, materialized graphUse SPARQL to execute graph queryUse output Dataframe for further processing with PandasGetting startedInstallationPrerequisites:If you are on Mac or Linux You MUST havemono installedon your system.Graph drawing based onpydotthat is dependent on GraphViz - you should try to download and install it manually. Or justconda install pydot graphvizTested with AnacondaTested on MacOS, Winows and Linux (Ubuntu)Installcognipyon your system using :pip install cognipyHello world programIn Jupyter you write:from cognipy.ontology import Ontology #the ontology processing class%%writefile hello.encnl
World says Hello.
Hello is a word.onto = Ontology("cnl/file","hello.encnl")
print(onto.select_instances_of("a thing that says a word")[["says","Instance"]])Output (Pandas DataFrame):saysInstance0HelloWorldExamplesExample Jupyter notebooks that use CogniPy in several scenarios can be found in theExamples sectionCognipy documentationCompiled documentation is stored on github pages here:Cognipy DocumentationRelated research papersSemantic rules representation in controlled natural language in FluentEditorCollaborative Editing of Ontologies Using Fluent Editor and OntorionSemantic OLAP with FluentEditor and Ontorion Semantic Excel ToolchainOntology-aided software engineeringOntology of the Design Pattern Language for Smart Cities SystemsHow to cite CogniPyWe would be grateful if scientific publications resulting from projects that make use of CogniPy would include the following sentence in the acknowledgments section: "This work was conducted using the CogniPy package, which is an open-source project maintained byCognitum Services S.A.https://www.cognitum.eu"ContributorsMaintained byCognitum Services S.A.https://www.cognitum.euContact us:office@cognitum.euCogniPy heavily depends on the contributions from its community. See  for how you may help CogniPy to become an even greater tool.Open Source Libraries this project is build onIKVMCommandLineParserNewtonsoft.JSonELK - ELK is an ontology reasoner that aims to support the OWL 2 EL profile. Seehttp://elk.semanticweb.org/for further information.HermiT - HermiT is a conformant OWL 2 DL reasoner that uses the direct semantics. It
supports all OWL2 DL constructs and the datatypes required by the OWL 2 specification.Apache Jena -   Jena is a Java framework for building semantic web applications. It provides  tools and Java libraries to help you to develop semantic web and linked-data apps, tools and servers.OWLAPIBuilding new versionnuget restore cognipy\CogniPy.sln
msbuild cognipy\CogniPy.sln /t:Rebuild /p:Configuration=Release /p:Platform="any cpu"
python setup.py bdist_wheel
python -m twine upload dist/* --verboseFAQWhy it is done this way?The software emerged as an offspring of FluentEditor and therefore it has some common parts. One of them is the .net. We are planning to move these parts to java so whole stack will be more technology consistent. Theconvert_to_javabranch already contains the project files converted automatically from .net to java. Anyway, manual crafting is now required to make it all work.