Giter Site home page Giter Site logo

lambdamikel / ontolisp Goto Github PK

View Code? Open in Web Editor NEW
20.0 4.0 3.0 576 KB

A Common Lisp Framework for the Semantic Web

Home Page: https://www.michael-wessel.info/

License: GNU General Public License v3.0

Common Lisp 100.00%
semantic-web semantic-web-language owlapi lisp common-lisp description-logics ontologies owllink

ontolisp's Introduction

OntoLisp

A Common Lisp Framework for the Semantic Web

Contributors

Tom Gillespi - thanks for the QuickLisp and ASDF changes!

Loading OntoLisp using ql:quickload

OntoLisp uses Quicklisp to load dependencies.

Add the following block to your ~/.sbclrc file or equivalent or ~/.config/common-lisp/source-registry.conf.

(asdf:initialize-source-registry
 '(:source-registry
   (:tree #p"/path/to/OntoLisp/")
   :inherit-configuration))

From a repl you can then run

(ql:quickload :ontolisp)
(owlapi::owlapi-test)
(owl-syntaxes::owl-syntaxes-test)

If compilation is trigger on multiple calls to ql:quickload you can call (asdf:compile-system :ontolisp) which should prevent the need to compile the system on each load.

About

(Old README.TXT)

OntoLisp (NOSA): A Semantic Web Framework for OWL 2 and OWLlink in Common Lisp

by Michael Wessel 

Version 0.9 

OntoLisp (NOSA) is a Common Lisp library providing:

- an ontology management framework inspired by the Java OWLAPI (v2.2)

  http://owlapi.sourceforge.net/

- OWl 2 parsers for OWL 2 functional and OWL 2 XML syntax
  
  http://www.w3.org/TR/owl2-syntax/

- OWL 2 renderers for OWL 2 functional, OWL 2 XML, and OWL 2 RDF syntax

- an OWLlink implementation 

  http://www.owllink.org/
   
  featuring the OWLlink XML, OWLlink functional, 
  and OWLlink S-Exression syntax, as well as a converter for these
  different syntaxes.   

OntoLisp has been tested with Allegro Common Lisp (ACL) 8.2, Lispworks
(LW) 5.2, and Steel Bank Common Lisp (SBCL) 1.0.40, using Linux and
Mac OS-X.


OntoLisp is under the Lisp Lesser GNU Public License

http://opensource.franz.com/preamble.html


OntoLisp uses the following third-party libraries / files: 

- ASDF - Another System Definition Facility by Daniel Barlow et al.

  http://common-lisp.net/project/asdf/

  as the system definition facility (ontolisp:ontolisp.asd)

- Wilbur2 by Ora Lassila

  http://www.lassila.org/

  is currently used only for the XML parsing
  (soon for RDF as well, when OWL 2 RDF support will be added in a 
  future version)

  I have made some changes to Wilbur2, please consult 
  wilbur2:wilbur.asd. 

- S-HTTP-Client by Sven Van Caekenberghe

  http://homepage.mac.com/svc/s-http-client/

  is used for s-http-client:do-http-request 

  Alternatively, CL-HTTP (http://www.cl-http.org:8001/cl-http/)
  or AllegroServe (http://allegroserve.sourceforge.net/) could 
  be used (see ontolisp:http-stream.lisp)

- the other included systems (puri, s-utils, s-sysdeps, s-base64)
  are required by S-HTTP-Client and are included here for
  convenience (if you don't use S-HTTP-CLIENT, these directories
  can be deleted) 

- the ontolisp:test; library contains (original and modified version) of
  the OWL 2 primer in different syntaxes for testing purposes, 
  
  http://www.w3.org/TR/owl2-primer/

  as well as the famous people & pets ontology in functional syntax
  by Sean Bechhofer . These ontologies are public and can be found 
  in various ontology repositories on the web, e.g.,
  
  http://owl.cs.manchester.ac.uk/repository/



In order to load OntoLisp, simply evaluate

(load "/home/<yourhomedir>/ontolisp/ontolisp.lisp") 

Please note that "~" will not work under SBCL, and evaluating the
ontolisp.lisp buffer from emacs will not work - the file has to be
loaded, due to the utilized *load-pathname*. If loading doesn't work
for you, simply edit ontolisp.lisp (at the position of the break).

Sourcecode / API documentation is currently not provided. Please work
through the provided examples in order to see what OntoLisp can do for
you. Start inspecting ontolisp:owlapi-test.lisp and evaluate

(owlapi::owlapi-test)

in your Listener to become familiar with the OWLAPI of OntoLisp.

Then, to learn about the OWL 2 parsing and rendering facilities as
well as the OWLlink processor and converter, inspect
ontolisp:owl-syntaxes-test.lisp and evaluate

(owl-syntaxes::owl-syntaxes-test)

in your Listener.

Please note that OntoLisp currently does not come with a DL reasoner
and hence cannot really perform reasoning. Rather. a set of dummy
functions is provided as the bridge to the reasoner which produce some
output.  I will add a DL reasoner in a future version of OntoLisp.

Hence, the framework currently only addresses the syntactic aspects /
management of OWL 2 and OWL ontologies. It is rather straight-forward
to connect OntoLisp to an existing KRSS-compliant DL reasoner. Please
consult the file ontolisp:dummy-functions.lisp. These bridge functions
have to be implemented in order to attach a real DL reasoner to
OntoLisp. For illustration purposes, I have provided the reasoner
bridge implementation of RacerPro with the files
ontolisp:reasoner-bridge-for-owlapi.lisp and
ontolisp:owllink-reasoner-bridge.lisp. Of course, this can only give
you some hints on how these functions would look like for a different
KRSS-compliant reasoner.

OntoLisp was designed in a way to depend as less as possible on
third-party libraries. Consequently, aspects like URI representation
and handling may seem impoverished int he code, compared to, say,
PURI. Also the OWL 2 functional parsers etc. are hand written. But I
prefer to have things under my control and work out things for myself
rather than relying / depending on some library that I don't fully
understand. I would argue that the provided solutions are "good
enough" for what OntoLisp is trying to do, but of course, things could
be improved quite a bit. Still I hope the library contains useful
functionality and code fragments to get your OWL 2 or OWLlink project
started. The provided examples should give some hints and contain more
explanations on how to go on. Otherwise drop me a mail if you have
specific questions / problems.

Future plans:

- add OWL 2 RDF parser using Wilbur2 
- add the MiDeLoRa DL system 


Regards,

Michael Wessel, Hamburg / Germany, 2010-07-03 

mailto:[email protected]
mailto:wessel@racer-systems-com 
http://www.michael-wessel.info
http://www.racer-systems.com

ontolisp's People

Contributors

lambdamikel avatar tgbugs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

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.