Giter VIP home page Giter VIP logo

brain's Introduction

Brain - Library for biomedical knowledge manipulation

Brain helps you to quickly and easily buid OWL ontologies and knowledge bases. It aims at bridging the gap between graphical user interfaces (GUI) such as Protege and the OWL-API.

The library is useful to develop Semantic Web applications and particularly suited for the biomedical domain. Brain wraps the interaction with the OWL-API an relies on Elk for reasoning tasks.

Features

Manchester syntax support

The interaction with Brain is done with the user friendly Manchester syntax. Brain exposes a series of method to help you validate and transform strings of characters into OWL expressions.

Web Application development

Brain has been created for Semantic Web application developers. The library is thread-safe which allows you to handle ontologies in a web server setting.

Scalability

OWL is a very demanding in terms of computing, but thanks to the OWL 2 EL profile, it is possible to thread reasoning some tasks in parallel (Elk reasoner). Brain therefore supports the OWL 2 EL to help you build scalable solutions.

Query

OWL knowledge bases can be easily queried with Brain. Powerful questions can be quickly answered with the help of the Elk reasoner. Brain accepts the formulation of queries from labels as well as from class expressions.

Documentation

Read the wiki for more details: https://github.com/loopasam/Brain/wiki

brain's People

Contributors

loopasam avatar

Stargazers

 avatar  avatar  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  avatar  avatar

brain's Issues

Feature Request: Methods for adding GCIs

Could existing methods (disjointClasses, subClassOf, equivalentClasses) be extended to take class expression? Currently, doing this doesn't throw an error. It just silently fails:

(Code is Jython - but should be clear to read)

from uk.ac.ebi.brain.core import Brain
test = Brain()
test.addClass("foo")
test.addClass("bar")
test.addObjectProperty("part_of")
test.disjointClasses("part_of some bar", "part_of some foo")
test.subClassOf("part_of some bar", "part_of some foo")
test.equivalentClasses("part_of some bar", "part_of some foo")
test.save("tmp.owl")

=>

Ontology: <brain.owl>
ObjectProperty: part_of
Class: owl:Thing
Class: foo
Class: bar

Feature Request - support for axiom annotation

OBO translations of OWL ontologies use annotation of axioms for a number of purposes. Being able to retrieve, delete and add these is critical if Brain is to be useful as a scripted editing environment for these ontologies.

Getters for Top level properties

It is not possible to retrieve top level properties at the moment except for Thing. Would be cool to have too: brain.getOWLObjectPorperty("topObjectProperty");

Class error "java.beans.Introspector".

Hello.
I'm working with ontologies on android. I'm trying to use the Brain tool, however Brain requests some 'java.beans' classes. I do not have these classes. How do I get the tool to work?

The error follows.
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.beans.Introspector" on path: DexPathList[[zip file "/data/app/[my_path].teste3-1/base.apk"],nativeLibraryDirectories=[/data/app/[my_path].teste3-1/lib/x86, /system/lib, /vendor/lib]]

Feature request - web service

A brain based web service for EL queries would be extremely useful, especially if we can come up with a nice clean RESTful implementation. Returning IDs/URIs would be sufficient, but returning rdf-xml for terms would be even better.

Happy to help out in any way if you are interested in implementing this.

ShortFormIDs can't begin with number in 1.5.1 - but worked fine in 1.4.3

In 1.4.3:

test = Brain()
test.addClass("5ca4b0f0-23b3-11e4-b0bd-a8206614dd49")
<brain#5ca4b0f0-23b3-11e4-b0bd-a8206614dd49>
test.knowsClass("5ca4b0f0-23b3-11e4-b0bd-a8206614dd49")
True
test.getSubClasses("Thing", 0)
[5ca4b0f0-23b3-11e4-b0bd-a8206614dd49]

But in 1.5.1:

test = Brain()
test.addClass("5ca4b0f0-23b3-11e4-b0bd-a8206614dd49")
<brain#5ca4b0f0-23b3-11e4-b0bd-a8206614dd49>
test.knowsClass("5ca4b0f0-23b3-11e4-b0bd-a8206614dd49")
False
test.getSubClasses("Thing", 0)
[ca4b0f0-23b3-11e4-b0bd-a8206614dd49]

Note the missing first digit. Only digits seems to be affected. All leading digits are removed during class generation. No errors are thrown. The same issue is seen when loading from a file.

Queries on labels with spaces not working

According to this example queries using getSubClassesFromLabel should work for labels with spaces as long as those labels are quoted. This does not appear to be the case. A simple example:

    Brain pato = new Brain();
    pato.learn("http://purl.obolibrary.org/obo/pato.owl");

    List<String> colors = pato.getSubClassesFromLabel("color", false);  // This works
    for (String subClass : colors) {
        System.out.println("Subclass of color: " + subClass);
    }

    List<String> oqs = pato.getSubClassesFromLabel("'optical quality'", false);   // doesn't work
    for (String subClass : oqs) {
        System.out.println("Subclass of 'optical quality: " + subClass);
    }
}

Documentation request

Could you add documentation for how to convert a Brain object into one that can be used with OWL-API methods?

Add methods to allow deletion of axioms

I'm particularly keen to be able to edit annotation property axioms using Brain. A method allowing deletion would be fine for this. A deleteAnnotation method could take the same form as the annotation method:

brain.deleteAnnotation("MyEntity", "MyAnnotationProperty", "MyValue");

When combined with a modified getAnnotation that returns lists (#10 (comment)), this feature would make it easy to use Brain for scripted editing of ontologies.

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.