Giter Club home page Giter Club logo

ontobee's People

Contributors

e4ong1031 avatar ontoden avatar yongqunh avatar

Stargazers

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

ontobee's Issues

Document any dependence on Virtuoso as triple store

I'm aware of at least one - that the CBD pragma is used. See if SPARQL 1.1 supports that natively and use the feature if so, or document it as a virtuoso specific feature.

This will be important if someone who deploys another instance of Ontobee wants to use a different triple store.

URIs as annotation values not showing up

Example:
http://purl.obolibrary.org/obo/UBERON_0001882

The database_cross_references field shows all values of this property that are literals.

but not IRIs. Underlying OWL:

   <owl:Class rdf:about="http://purl.obolibrary.org/obo/UBERON_0001882">
...
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">nucleus accumbens</rdfs:label>
         <oboInOwl:hasDbXref rdf:resource="http://braininfo.rprc.washington.edu/centraldirectory.aspx?ID=277"/>
        <oboInOwl:hasDbXref rdf:resource="http://en.wikipedia.org/wiki/Nucleus_accumbens"/>
        <oboInOwl:hasDbXref rdf:resource="http://ncicb.nci.nih.gov/xml/owl/EVS/Accumbens_Nucleus"/>
        <oboInOwl:hasDbXref rdf:resource="http://uri.neuinfo.org/nif/nifstd/birnlex_727"/>

When ontologies that use the class don't

Currently the list of ontologies is computed by seeing whether the term is present as an (effectively) import. The ontologies should qualify, IMO, only if they are used in a nontrivial axiom (i.e. almost any axiom other than a subclass axioms where the imported term is the subclass, or where both the sub and superclass are from the same (imported) ontology.

It is possible that in application ontologies, in particular, some terms may be present and unused directly by the ontology, instead gathered because the application ontology needs to offer it to it's application or other clientele. Perhaps we can provide a method to indicate such usage. My impression on browsing for some time now is that those cases are a minority of cases where the ontology is listed with the larger proportion of cases where the term is not deliberately incorporated into the ontology, instead being pulled in by an import or MIREOT subset that is partly automatically constructed.

As a heuristic, a term should not have a listing as used in other ontologies unless the ontobee page for the term in that ontology has a non-empty "uses in this ontology" section.

Create behavior-driven tests using 'behave' framework

It would be v useful to have a set of tests for ontobee, that would check not only the UI functionality, but data integrity.

these are very easy to do using the behave framework. For each, a script search.behave would look like this:

@ui
 Scenario: "instrument" in the keyword search with a click goes to a details page
    Given I go to page "/"
     and I type "instrument" into the keyword search
     and I wait until "instrument (OBI_0000968)" appears in the autocomplete 
     and I click the autocomplete item "instrument (OBI_0000968)"
     then the title should be "device"

 @ui
 Scenario: "instrument" in the keyword search with submit goes to a search page
    Given I go to page "/"
     and I type "instrument" into the keyword search
     and I submit keyword search
     then the title should be "Search Results: instrument"
     and the document should contain "instrumentation planning"
     and the document should contain "instrument (OBI)"

For examples written by @kltm, see:
https://github.com/geneontology/amigo/tree/master/selenium/behave

Handle purls from IDO extensions or which are under control of an ontology other than the one in which they were created

IDOBRU is an extension of IDO and as such uses IRIs from the IDO namespace. The issue, then, is to have ontobee know to look for IDOBRU's ids in Ontobee's IDOBRU ontology.

Melanie made the suggestion, based on the allocation of IDO ids to IDOBRU that this be handled in the current BBOP apache redirect.

The rules are
 ## INHERIT:
## OBO Redirect from Alan
 RewriteRule ^/ontologies/(\w+)_(\d+)
http://purl.obolibrary.org/obo/$1/about/$1_$2  [R=303,L]

## Fallthough OBO catch.
   ## If the rewrite below ends back up at us, then use the stand-in
   ## page on ontobee.
   RewriteRule ^/ontologies/\S+/about/(\S+)_(\d+)
http://www.ontobee.org/browser/rdf.php?o=$1&iri=http://purl.obolibrary.org/obo/$1_$2

Could we add a rule before the OBO catch to say

   RewriteRule ^/ontologies/IDO/about/(IDO_01(\d+)
http://www.ontobee.org/browser/rdf.php?o=IDOBRU&iri=http://purl.obolibrary.org/obo/IDO_01$1

Recently Oliver asked if we should proceed using that idea.

My comment:

It should work as for this case, but isn't a favored solution for the long run because it depends on numbering convensions in the idspace, which is something we want to avoid when possible, and because there will be more cases of terms that originate in one ontology that move to be managed in another. For example it may make sense for OBI and IAO to swap management of some terms.

Recall the current scheme is:

  1. purl.org partial redirect on /obo/ for all OBO IRIs,
  2. Berkeley redirection to /obo//about/
  3. If there is a purl defined for /obo//about/ then it is used (when ontobee it sets the "o" parameter explicitly)
  4. Otherwise back to Berkeley which redirects to Ontobee (when ontobee it computes and specifies the "o" parameter)

Instead I would like to suggest we start using rdfs:isDefinedBy, initially for IDOBRU. During transition, while it is not being used in all ontologies the following protocol should work.

  • In steps 3 and 4 above, do not supply the "o" parameter when linking to ontobee. Internal links can still redirect to ontology specific versions from their imports closure, though longer term I would like to see that go away as well (another thread)
  • In rdf.php, if the "o" parameter is specified (hence this is a click from ontobee itself) then display the term in that ontology.
  • if not, do a sparql query to check if the term in question has a refs:isDefinedBy assertion (in any graph)
  • If there is a rdf:isDefinedBy value then display the term from the defining ontology
  • If not then compute the ontology from the iri parameter (everything up to but not including the last "_" in the localname - what the apache currently does) and then display the term from the defining ontology

One more change is required. When generating links back to ontobee, the check for rdfs:isDefinedBy should be done for any term in the same namespace as the source and the o parameter set as appropriate. For example, when browsing an IDOBRU term, which is in the IDO namespace, and IDO_ url could be either from IDOBRU or from IDO. If we assume "o" is computed from the IRI, then would get o=IDO, which would be correct for IDO terms, but incorrect for the IDOBRU terms. If we use o=IDOBRU then the IDOBRU terms get the right href, but the IDO terms don't.

To minimized which ontologies MUST use rdfs:isDefinedBy, I suggest that ontobee compute "o" from the IRI. In the case of IDOBRU, which will use rdfs:isDefinedBy, the SPARQL check will find it and fix "o". If we had the default the other way, then both IDO and IDOBRU would both need to implement rdfs:isDefinedBy.

If any of this isn't clear I can do a short teleconference to clarify and answer questions.

-Alan

ps. If there is any performance worry, the following optimization can be made.

do a query for all rdfs:definedBy assertions where the target is not the one that would be computed by default.
Save these in a hash
Instead of using SPARQL to probe for the refs:isDefinedBy assertion, consult that hash.

Separate current generated html into a css file and elements with css classes.

In order to make the generated HTML be more useful for other projects, and to give us more room to allow different projects more room to distinguish their page, the current HTML generation should be factored so that css controls the display of any element that is possibly can. This would allow us to provide a service for groups that want to incorporate some of the browser display, as well as allow user-customized css to work.

OBI coming up empty

Clicking on any term at http://www.ontobee.org/browser/index.php?o=OBI yields:

We are sorry that your request did not return any expected result. Here is a list of possible reasons:

Your requested term has been deprecated
The ontology that contains the term has not been updated
Whoops! Our program has an unhandled and unexpected error in processing your request.
If you think that you reached this page in error, or you have any request or concern, you may contact us by:

Raise the issue in the Ontobee-discuss Google Group (Note: Recommended if you want fastest reply):
Leave a message at https://groups.google.com/forum/#!forum/ontobee-discuss, or
Directly send an email to: [email protected]
Note: You are welcome to join the group, and it is open to everyone:-)
Submit a bug report or request a new feature at: https://sourceforge.net/p/ontobee/feature-requests/
For OBO Foundry related questions, contact: http://code.google.com/p/obo-foundry-operations-committee/
Email Oliver He at:
Thank you.

Something wrong with Ontobee

Just now search didn't work, nor access of a term (i tried several) e.g. http://purl.obolibrary.org/obo/OBI_0000094

Text given
Term Not Found

We are sorry that your request did not return any expected result. Here is a list of possible reasons:

Your requested term has been deprecated
The ontology that contains the term has not been updated
Whoops! Our program has an unhandled and unexpected error in processing your request.
If you think that you reached this page in error, or you have any request or concern, you may contact us by:

Raise the issue in the Ontobee-discuss Google Group (Note: Recommended if you want fastest reply):
Leave a message at https://groups.google.com/forum/#!forum/ontobee-discuss, or
Directly send an email to: [email protected]
Note: You are welcome to join the group, and it is open to everyone:-)
Submit a bug report or request a new feature at: https://sourceforge.net/p/ontobee/feature-requests/
For OBO Foundry related questions, contact: http://code.google.com/p/obo-foundry-operations-committee/
Email Oliver He at:
Thank you.

Show a reuse graph

Write a D3 widget that shows each prefix/ontology as a node, with edges A->B where A imports or uses a class defined in B, and the strength of edge determined by number of reused classes

coordinate with identifiers.org to

See https://sourceforge.net/p/identifiers-org/new-collection/16/

Due to the obolibrary ID scheme which replaces ':'s with '_'s, identifiers.org cannot plug in ontobee as a resolver for uberon, cl, etc which is unfortunate.

Judging by Nick's response, if ontobee can implement a resolution service such that standard colon-separated IDs are used to redirect to the purl then we can plug in ontobee.

This could be formalized via some kind of shared json-ld context file with entries like

UBERON: "http://purl.obolibrary.org/obo/UBERON_"

Making UBERON:0007225 a valid curie for http://purl.obolibrary.org/obo/UBERON_0007225

Document any requirements for triple store and update

What features does the triple store require? What happens when an ontology is updated? Are there specific indices that need to be built? Does the Ontobee server need to be shut down during update or is it safe to do updates while it is running.

search for synonyms

Could we add the ability to search for synonyms when searching ontologies in Ontobee?

Unregistered OBO namespaces appear in ontobee

The only ontologies sanctioned to use the namespace

http;//purl.obolibrary.org/obo/xxx

are those where xxx are listed in an id tag
https://code.google.com/p/obo-registry/source/browse/trunk/metadata/ontologies.txt

ontobee should generate a 404 for any request that is not using a registered namespace.
Later we will likely put in technical mechanisms that prevent these from being redirected in the first place.

This is triggered by working on https://code.google.com/p/obo-foundry-operations-committee/issues/detail?id=137 and noticing that they use ids like ARG_xxxxxx

However I notice that ICO is also doing that. It should also not appear on ontobee until the namespace is registered.

Fix error text

Term Not Found

We are sorry that your request did not return any expected result. Here is a list of possible reasons:

--> Your requested term has been deprecated
This should never happen, since OBO says we obsolete by marking not removal. However, if we say this it should only be in the case that it has been removed, which could be detected if ontobee kept track of URIs present at the release.

-> The ontology that contains the term has not been updated

How would this general an error? Do you mean that the term might be too new?

-> Whoops! Our program has an unhandled and unexpected error in processing your request.
If you think that you reached this page in error, or you have any request or concern, you may contact us by:

We ought to be able to tell the difference between a whoops and a missing term.

In the below there are too many choices, and some of the information is out of date. There should be a pointer to the Github site with a Readme.md that gives all this information and pointers, and a separate hyperlink to where to submit issues - somewhere that doesn't require a use/password. Or perhaps have a bug submission form on the error page which adds issues recorded there to the issue list.
The goal is to make it super-easy to file a report, since otherwise many people won't.

Raise the issue in the Ontobee-discuss Google Group (Note: Recommended if you want fastest reply):
Leave a message at https://groups.google.com/forum/#!forum/ontobee-discuss, or
Directly send an email to: [email protected]
Note: You are welcome to join the group, and it is open to everyone:-)
Submit a bug report or request a new feature at: https://sourceforge.net/p/ontobee/feature-requests/
-> For OBO Foundry related questions, contact: http://code.google.com/p/obo-foundry-operations-committee/

I'm not sure this belongs here specifically. It's in the banner of every page anyways.

Document expected arrangement of triple store that Ontobee code expects

The triple store, as I understand it, is arranged with a named graph for each ontology and all of its imports.

We need to document the conventions used for the naming of the graphs and any other specifics needed so that the SPARQL queries Ontobee uses will work, as setting the triple store up would be an essential piece of deploying another Ontobee installation.

Obsolete ENVO classes retrieved

Dear OntoBee team,

Some of ENVO's obsolete classes are retrieved in the general search, but it's not really made clear that they are obsolete.

For example:

`

<owl:Class rdf:about="http://purl.obolibrary.org/obo/ENVO_00002993">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Tropical humid forests</rdfs:label>
    <oboInOwl:hasOBONamespace rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ENVO</oboInOwl:hasOBONamespace>
    <oboInOwl:id rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ENVO:00002993</oboInOwl:id>
    <oboInOwl:consider rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ENVO:01000228</oboInOwl:consider>
    <owl:deprecated rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</owl:deprecated>
</owl:Class>
`

Perhaps checking for owl:deprecated boolean = true or the presence of consider or replaced by annotation properties may be a good way to filter these.

CL terms with missing labels

See http://purl.obolibrary.org/obo/CL_0000895

CL_0000624
lacks_plasma_membrane_part some PR_000001380
has_low_plasma_membrane_amount some PR_000001307
RO_0002202 some CL_0002436
RO_0002104 some PR_000001203
CL_0000898
has_high_plasma_membrane_amount some PR_000001318
RO_0002104 some PR_000001015
RO_0002104 some PR_000001869

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.