<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Hello Manuel,
<div class=""><br class="">
</div>
<div class="">Apologies for a late response to your question. I’ve spent some time looking at the test SKOS ontology you submitted. Please find more information inline below.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Feb 17, 2020, at 8:40 AM, Manuel Fiorelli <<a href="mailto:manuel.fiorelli@gmail.com" class="">manuel.fiorelli@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div class="">I've been doing some experiments with BioPortal using two private repositories, TESTONT (an OWL ontology) and TESTTES (a SKOS ontology).</div>
<div class=""><br class="">
</div>
<div class="">Yesterday I submitted the attached RDF data to TESTTES (please note that the description of the concept scheme is split between two tags).</div>
<div class=""><br class="">
</div>
<div class="">The file should conform to BioPortal constraints, such as the presence of a concept scheme and the use of skos:hasTopConcept.</div>
<div class=""><br class="">
</div>
<div class="">However, the page that should retrieve the concepts informs me that there was an unspecified problem retrieving classes.<br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><a href="https://bioportal.bioontology.org/ontologies/TESTTES/?p=classes&conceptid=root" target="_blank" class="">https://bioportal.bioontology.org/ontologies/TESTTES/?p=classes&conceptid=root</a>
<br class="">
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br class="">
<div><br class="">
</div>
<div><br class="">
</div>
<div>Whenever you navigate to the classes page for an ontology, BioPortal attempts to fetch the root nodes of the ontology in order to construct the class tree for display. For the ontology you submitted, BioPortal correctly detected individual classes during
 processing, which is evidenced by the following REST API call:</div>
<div><br class="">
</div>
<div><a href="http://data.bioontology.org/ontologies/TESTTES/classes" class="">http://data.bioontology.org/ontologies/TESTTES/classes</a></div>
<div><br class="">
</div>
<div><br class="">
</div>
<div><img apple-inline="yes" id="CFFFEFDD-83F2-482A-B5AE-B8799F0839B1" src="cid:376D2F4E-C104-4CAE-A9FB-9D622CAA8A32@stanford.edu" class=""></div>
<div><br class="">
</div>
<div>However, BioPortal was unable to calculate the root nodes of the ontology. The following REST API call to fetch root nodes returns an empty set:</div>
<div><br class="">
</div>
<div><a href="http://data.bioontology.org/ontologies/TESTTES/classes/roots" class="">http://data.bioontology.org/ontologies/TESTTES/classes/roots</a></div>
<div><br class="">
</div>
<div><br class="">
</div>
<div><img apple-inline="yes" id="F8B3FB66-1C83-45EA-831D-C1B09DD34F97" src="cid:11EA0AC7-B255-4DF5-954C-ACBBFE6BF1E1@stanford.edu" class=""></div>
<div><br class="">
</div>
<div>This is why you see the error message in the user interface of "The page you are looking for wasn't found. Please try again."</div>
<div><br class="">
</div>
<div>I noticed that you declared a conceptScheme (“continents”), and placed a concept within this scheme using the skos:inScheme, and skos:topConceptOf constructs. This is of course perfectly valid, however currently BioPortal only detects root nodes using
 the skos:hasTopConcept construct. You can see that in our source code here:</div>
<div><br class="">
</div>
<div><a href="https://github.com/ncbo/ontologies_linked_data/blob/master/lib/ontologies_linked_data/models/ontology_submission.rb#L1386" class="">https://github.com/ncbo/ontologies_linked_data/blob/master/lib/ontologies_linked_data/models/ontology_submission.rb#L1386</a></div>
<div><br class="">
</div>
<div>In other words, if you declare your ontology using the hasTopConcept property - something like the following:</div>
<div><br class="">
</div>
<div>
<div class="">@prefix skos: <<a href="http://www.w3.org/2004/02/skos/core#" class="">http://www.w3.org/2004/02/skos/core#</a>> .</div>
<div class="">@prefix rdf: <<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#" class="">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>> .</div>
<div class="">@prefix ex: <<a href="http://www.example.com/" class="">http://www.example.com/</a>> .</div>
<div class=""><br class="">
</div>
<div class="">ex:continents rdf:type skos:ConceptScheme;</div>
<div class="">  skos:hasTopConcept ex:Europe.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">I believe that you would no longer get an error message in the BioPortal user interface because the system will be able to detect root classes. It’s a shortcoming of the current code base that we don’t detect roots using the other methodology,
 i.e., using inScheme and topConceptOf.</div>
<div class=""><br class="">
</div>
</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div class=""><br class="">
</div>
<div class="">
<div class="">However, if I visit the URL corresponding to the detailed view of a concept, I can see the description of that concept together with the concept tree on the left side (note that the submission is a flat list of concepts).</div>
<div class=""><br class="">
</div>
<div class=""><a href="https://bioportal.bioontology.org/ontologies/TESTTES/?p=classes&conceptid=http%3A%2F%2Fexample.org%2Fc_48989b6a" target="_blank" class="">https://bioportal.bioontology.org/ontologies/TESTTES/?p=classes&conceptid=http%3A%2F%2Fexample.org%2Fc_48989b6a</a>
<br class="">
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div><br class="">
</div>
<div>This is a side effect of what I outlined above. The system can detect the individual concepts in your ontology, however it fails to detect the set of root classes it needs to properly construct the default page that displays the class tree as a whole.</div>
<br class="">
<blockquote type="cite" class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div dir="ltr" class="">
<div class="">
<div class=""><br class="">
</div>
<div class="">
<div class="">PS I should have asked  before; however, I took the opportunity to ask whether my use of private ontologies is good for experimentation, or whether there is a sandbox or other test system elsewhere. Indeed, I've just realized that there is no
 explicit delete button to remove the test ontologies.</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div><br class="">
</div>
<div>Private ontologies are fine. We don’t have the notion of a sandbox in our Stanford hosted BioPortal. If you want to delete any of your ontologies, feel free to contact us and we can do it on your behalf.</div>
<div><br class="">
</div>
<div>Kind regards,</div>
<div>Jennifer</div>
<div><br class="">
</div>
<div><br class="">
</div>
<div><br class="">
</div>
</div>
</div>
</body>
</html>