How do I implement a tag ontology for learning resources? I want to build a flashcard tool for medical trainees (medical students, residents, nursing students, etc). A card has a question, an answer, one or more associated media files (images, movies, audio), an author, one or more comments posted by users, etc. A card will also have one or more tags. Tags will be chosen from an ontology (for starters will really be a thesaurus or taxonomy but with time may contain richer relationships between tags. Obviously I want the user to be able to request cards related to a more general concept (ex. bacteria) and retrieve cards tagged with more specific tags (ex. E. coli). I have read pretty extensively now on semantic web stuff (ref, refs, owl, skis, sparql, endpoints, etc) and feel that I am pretty close to understanding how to put this all together but not quite there.

Lets assume that I run Apache Jena on my server that also serves my web application and that I am not relying on any outside data sources. A user request comes in for content related to bacteria. I run a SPARQL query on my triple store. Data in the triple store represents both my tag ontology/thesaurus/taxonomy as well as the cards (presumably as instances of a class "Card"). The query needs to identify all the tags subsumed/related to the requested tag and then find all the cards (and their properties) that have been tagged with any of these tags.

Questions in no particular order:

  1. Is this reasonable or should I focus only on representing the ontology/thesaurus in triples and use SPARQL to get all related tags and then use the list to query a relational DB that contains the cards (this card DB already exists BTW)?
  2. Either way, is skos a reasonable way to represent my tag thesaurus? I have read a lot about skos but cannot find examples of implementing a skos-based thesaurus for tagging. Will Jena allow me to use property paths or some way to gather all skos concepts that are skos:narrowerTransitive than a given concept?
  3. If skos is the way to go can I then tag a card (instance of type blech:Card) with one or more skos concepts from my thesaurus and then use SPARQL to pull all the cards tagged with the requested and any related (narrower) tags? Should I just create my own property (isAbout?) to link a skos concept to a card or should I use Dublin core dc:subject?
  4. If I use skos and I later want to add finer grained relationships between my skos concepts (maybe hasAnatomicLocation for example to connect a disease to a location) and be able to leverage these relationships to expand or refine a search using a reasoner and sparql, will this work or will using skos potentially limit me in the future?

I think the answer to much of my questions is buried in this web page but after reading it a dozen times I still can't figure out how to move forward.

BTW, I do realize that there are already numerous biomedical ontologies to pull from. However, none of them are suitable for tagging educational content in their current form. Part of what I am trying to determine is whether it will be more efficient to build an ontology designed for medical education specifically from the ground up or by modification and integration of currently available data sets.

Sorry for the long winded multi-part question. I would be happy to break it into pieces if I could figure out how to untangle some of the issues/questions.


-Mike Blechner, MD Assistant Professor of Pathology University of Connecticut Health Center

asked 22 Jun '13, 07:07

blech's gravatar image

accept rate: 0%

Just on the issue of designing a custom biomedical education ontology vs modifying currently available datasets - check out the UMLS - you might find many of the concepts there, but if you are designing your own ontology its worthwhile trying to link each concept to a UMLS CUI (Concept Unique Identifier) to facilitate integration of your ontology. ( has URIs)

(23 Jun '13, 12:11) Sweet Burlap Sweet%20Burlap's gravatar image

  1. and 2. The general plan sounds good to me. This really is what SKOS is for, and at TopQuadrant we have clients who do pretty much what you describe. Do you mean Jena in the sense of custom code using the API? SPARQL can do what you're looking for.

  2. dc:subject is a good place to start. If you have ideas for more specific relationships, I would declare them as subproperties of that. Remember, though, that you can use any relationship you want, so it might be worth researching some ontologies about education materials to see if they have anything that fits well with what you're doing.

  3. Because SKOS is an OWL ontology, it's completely extensible.

SPARQL CONSTRUCT queries can also help you automate the conversion of existing biomedical ontologies into a SKOS taxonomy more suited to your needs.


permanent link

answered 23 Jun '13, 09:00

bobdc's gravatar image

accept rate: 15%

This is truly a decent exertion of presenting and we have on hold a workshop for inspiration and Encouragement. Particularly for more youthful we need to mastermind a motivational system in which a gathering and specific work in this they demonstrate their aptitudes and upgrade their experience. Much obliged to you for posting.

permanent link

answered 07 Sep, 02:33

ronaldgary's gravatar image

accept rate: 0%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 22 Jun '13, 07:07

question was seen: 1,281 times

last updated: 07 Sep, 02:33