Skip to content
This repository has been archived by the owner on Sep 28, 2022. It is now read-only.

browse 2+ vocabularies #1

Open
jaygray0919 opened this issue Feb 15, 2016 · 9 comments
Open

browse 2+ vocabularies #1

jaygray0919 opened this issue Feb 15, 2016 · 9 comments

Comments

@jaygray0919
Copy link

We have the need to browse terms defined by two-to-many Controlled Vocabularies. Our need is similar to the application here:
http://mmisw.org/orr/
Is such a feature possible with vbrowser?
We have experience with Parrot (http://ontorule-project.eu/parrot/parrot) and LODE (http://www.essepuntato.it/lode). These services process one OWL file at a time.
Our need is to list terms, their definition, and the ontology where the term is defined (provenance).
We have examples of a single term, such as marine organism (a fish, etc.), that is defined by several ontologies (e.g. DBpedia, UN FAO Fisheries, ITIS, EOL). We would like to have a single term (in 'column 1' of vbrowser) and then the definition from each Authority.
Our data source is an OWL or RDF file.
We are prepared to export the terms and their definition and then used SKOS to set the proper underlying structure for vbrowser (if such a process is required to run vbrowser).
Please advise.
/jay gray

@graybeal
Copy link
Member

I think this would be a really great view for vbrowser, or equivalent, to be able to present. It is a high-value view of the many terms that relate to the term.

Ideally the terms used by vbrowser could be set by the user, to use with existing ontologies and mappings. But we could use close match as the default for now, and it would be very serviceable.

Jay, can you email me (jbgraybeal - mainspring.com) offline?

@carueda
Copy link
Member

carueda commented Mar 7, 2016

@jaygray0919 Apologies for the delay to respond. It's been already a year since I last worked on vbrowser !

I'll have to remind myself how things are structured (starting by looking at the current example configurations) to then see whether this "multi-vocab browsing" could be accommodated. I'll report here as soon as I have a better sense. Thanks for your interest and patience.

@jaygray0919
Copy link
Author

@graybeal I tried to send private email but delivery failed. Here is my email:

Hello John - following up per your Github request.
TY for the xref to http://ccv.bioontology.org
It's a more refined service than http://sameas.org/about.php.
Tip-of-the-hat to the folks who have the skills to create something like that in 29 hours.
For our 'term-viewer' needs, SKOS seems to be the appropriate ontology with verbs such as exactMatch, closeMatch, similarTo, etc.
In the absence of a vbrowser solution, we plan to use MIT's Exhibit (http://simile-widgets.org/exhibit3/).
Our approach would be to make each term an item and then map it to different trees (e.g. NALT - http://agclass.nal.usda.gov/dne/newde.shtml), to other terms according to SKOS concepts, and to provenance.
IMHO, an RDF/SPARQL solution - as I understand is used by vbrowser - is a better general purpose approach.
However, we know Exhibit and could implement a solution in HTML (but probably not in 29 hours).
What might be next-steps?

@jaygray0919
Copy link
Author

@carueda Hello Carlos and thanks for follow-up.
Per earlier comment, we have analyzed several possible solutions for documenting terms from multiple Controlled Vocabularies. Several do one-vocab-at-a-time. But none has the SPARQL/RDF architecture (where documentation of several different vocabs is the 'semantic application' itself) that you implemented. IMHO, you are a good example of "eat your own dog food" (https://en.wikipedia.org/wiki/Eating_your_own_dog_food).
I appreciate that this effort may not be your day job and may require significant marginal effort to 'commercialize' the update. We would help if we could, but probably can't.
Our 'Plan B' (where 'Plan A' is to use your updated approach) is to roll-our-own solution using MIT's Exhibit. It is not a SPARQL/RDF solution, but it's a close approximation and a tool we know how to use.
We have not started our Exhibit-vocab-project yet, so would like to know your plans for vbrowser.
If we used a vbrowser update, it invariably will take longer than an equivalent Exhibit implementation. But we would do it because it's the right way to do it.
So please share your thinking so we can adapt accordingly.
/jay

@carueda
Copy link
Member

carueda commented Mar 14, 2016

Jay:

Thanks for the nice words and encouragement.

Yes, unfortunately time is rather limited these days. But, by reading again your original entry, perhaps vbrowser is actually very close to provide what you need.

You say:

Our need is similar to the application here: http://mmisw.org/orr/

Our data source is an OWL or RDF file. We are prepared to export the terms and their definition and then used SKOS to set the proper underlying structure for vbrowser ...

Does this mean you would be capturing all needed definitions in a new vocabulary/ontology?

For example, and just with a single term, this could be something like the following vocabulary/ontology (in N3 format):

@prefix :        <http://mmisw.org/ont/test/jayvocab/> .
@prefix dbp:     <http://dbpedia.org/resource/> .
@prefix eol:     <http://eol.org/data_objects/> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .

:Red-bellied_piranha
      rdfs:label   "Red-bellied piranha" ;
      :dbpediaRef  dbp:Red-bellied_piranha ;
      :dbpediaDef  "The red-bellied piranha or red piranha (Pygocentrus nattereri) is a species of piranha ..." ;
      :eolRef      eol:24743947 .
      :eolDef      "The red-bellied piranha or red piranha (Pygocentrus nattereri) is a species of piranha  ..." .

The example show definitions from Dbpedia and EOL. For each of these, I'm including a link to the definition and the explicit definition text just for illustration (there's is no requirement that both should be there at all).

(Note: I'm not very familiar with DBPEdia and EOL myself; I just did some googleing to find those URL prefixes, which may be incorrect.)

The overall procedure:

  • Generate your ontology with some tool that automates the extraction from your data source, assuming that data source contains all needed information for a structure like the above. A tool like Protégé could be considered but this would involve a more manual process.
  • Register your ontology in some semantic repository that also provides a SPARQL endpoint (like the ORR!)
  • Then, for vbrowser, define a configuration like the following (note: manually written, not tested at all):
module.exports = {

  voc: {
    uri:     'http://mmisw.org/ont/test/jayvocab',
    prefix:  'http://mmisw.org/ont/test/jayvocab/'
  },

  termList: {
    fields: [{
      name: 'term'
    }, {
      name: 'DBPedia'
    }, {
      name: 'EOL'
    }]
  },

  orr: {
    name:           'MMI ORR',
    website:        'https://mmisw.org/',
    sparqlEndpoint: 'https://mmisw.org/sparql',

    generalInfoQuery:
      "prefix omvmmi: <http://mmisw.org/ont/mmi/20081020/ontologyMetadata/>\n" +
      "prefix omv: <http://omv.ontoware.org/2005/05/ontology#>\n" +
      "select distinct ?name ?version\n" +
      "where {\n" +
      "  OPTIONAL { <{{voc.uri}}> omv:name      ?name}\n" +
      "  OPTIONAL { <{{voc.uri}}> omv:version   ?version}\n" +
      "}",

    termListQuery:
      "prefix vocb: <{{voc.prefix}}>\n" +
      "prefix skos: <http://www.w3.org/2004/02/skos/core#>\n" +
      "select distinct ?term ?DBPedia ?EOL\n" +
      "from <{{voc.uri}}>\n" +
      "where {\n" +
      "  OPTIONAL { ?term vocb:dbpediaDef  ?DBPedia }\n" +
      "  OPTIONAL { ?term vocb:eolDef      ?EOL }\n" +
      "} order by ?term",

    termQueryTemplate:
      "prefix vocb: <{{voc.prefix}}>\n" +
      "select distinct ?term ?DBPedia ?EOL\n" +
      "from <{{voc.uri}}>\n" +
      "where {\n" +
      "  OPTIONAL { {{name}} vocb:dbpediaDef  ?DBPedia }\n" +
      "  OPTIONAL { {{name}} vocb:eolDef      ?eolDef }\n" +
      "}"
  }
};
  • then follow the rest of the instructions on the README.

If you think this approach may work, can you give it a try? I'd try to do some adjustments as needed and as time permits.

@jaygray0919
Copy link
Author

TY for a considered response. Give me a couple of days to think about this and I'll be back to you with a more informed answer.
/jay

@graybeal
Copy link
Member

graybeal commented Mar 15, 2016

Wow. Seriously, if that would work, pretty awesome.

Sent from my iPhone

@carueda
Copy link
Member

carueda commented Mar 17, 2016

Jay,

I've just pushed two files to illustrate the approach suggested above:

  • fish.n3 - the small vocabulary indicated previously (with some minor adjustments), and now registered at the ORR: http://mmisw.org/ont/test/fish
  • fish.js as the configuration for vbrowser with the 1+4 columns (term itself, and the ref and def from each of DBPedia and EOL)

I created a vbrowser instance with this vocabulary with:

$ gulp dist --config  ./config/fish/fish.js

and deployed it at https://mmisw.org/experimental/vbrowser/fish/

Looks like this (please ignore for the moment the minor glitch in the display of the column headers):

image

@jaygray0919
Copy link
Author

Very interesting. May I get back to you over the coming weekend on this? Am working a project that is almost complete. Will then re-focus on your work and comment appropriately.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants