Hi Mike,

On 19/11/2019 12:21, UscholdM wrote:
I was having problems with ontology import.  So I did some experiments.  In Protégé, I created a simple ontology that does nothing other than import another ontology, which is available on the web. I saved it, and when I opened it in Protégé, it behaved as expected. When I try to do so in TBC Free Edition 6.0.1 it does not work.

I did further experimenting by downloading the imported ontology directly from the web and put the file in the TBCFE workspace. That also did not work. I then read the several paragraphs of TBC documention on working with imported ontologies. It seems like the base uri of an ontology plays a prominent role.  That seemed odd, since the ontology URI or ontology Version URI is what matters. Nevertheless, I tried manually inserting a base statement into the ontology to be imported setting it to the ontology URI and that also did not work. When I set the base URI to the Version IRI that was being explicitly imported, it worked.

The downloads page indicates that 6.0.1 is the latest stable free version. I asked my colleague to try it on his version, and it worked. I saw that he has the free edition, but his version was 6.1.1. How can that be? I asked other colleagues to try the same experiment and the importing was not working on their then-current version of TBCME, but when they installed the latest version it did work.

 1. Attached is a very explicit set of things that I did, and that I
    sent to colleagues to report back on. It also includes screenshots
    of errors.
 2. The tiny ontology that imports another ontology.


Punch line:
* Is there a free version of TBC that I can currently download that will import ontologies on the web that do not have a base statement?
Not that I know of.
* Is there any reason to give prominence to the base statement? It seems that what really matters is the IRI or VersionIRI of the imported ontology.

The reason why we don't use the owl:versionIRI is that this would require loading the graph first, just to detect the URI. With large files this is not feasible. Also, the web import needs to start somewhere. From the owl:imports statement we only have the physical URL, so we try to resolve the graph from there. If the versionIRI was different from the physical URI, how could a web import possibly work?

(In your example the versionIRI is identical to the physical location so I don't understand why this topic is relevant).

* Is there something else that could be causing the problem that adding a base statement solves by accident?

I installed 6.0.1 and can reproduce that it cannot directly import from the web. Maybe that particular version had a bug, or the server response (HTTP headers/mime type?) from this particular location is a problem for this version. It works fine in later versions, and I can also do Web imports for other URLs with 6.0.1 with no problem.

In any case, here is a work-around:

1) Right-click on some project and select Import RDF file from the Web

2) Fill in as shown

This produces a local file starting with

# baseURI: https://ontologies.semanticarts.com/o/gistTop9.0.0

which is our usual convention to recognize graph URIs. This line is saved at the beginning of each TTL file so that the system doesn't need to first scan the whole file for its owl:Ontology or owl:versionInfo or whatever. It improves start-up time and is the only scalable solution for very large files.

We generally recommend using local files over web imports as the latter may be unstable (server down, changing data etc).

HTH
Holger


--
You received this message because you are subscribed to the Google Groups "TopBraid 
Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/fee9ee92-fd93-fa98-0f6c-957b1b4dfd53%40topquadrant.com.

Reply via email to