You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by Andy Seaborne <an...@apache.org> on 2013/11/02 00:56:10 UTC

Re: Replacing FileManager (WAS use of recent features from httpclient)

On 31/10/13 16:14, Andy Seaborne wrote:
> On 31/10/13 14:37, Altmann, Michael wrote:
>>
>> Here are three tests that show that altEntries in the global
>> FileManager are not honored by the StreamManager.
>> I have a file called myontology.ttl that looks like
>
> Thanks - I've created JENA-580 for this.
>
> A temporary workaround is to call "RIOT.init() ;" before anything else.
>
>      Andy

Fixed in svn.

FileManager initializes RIOT (if available) before you can get the 
global reference.

	Andy

>
>>
>>
>> # imports: http://www.mckesson.com/life/snomed-ct.ontology.owl
>>
>> @prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>> @prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
>> @prefix owl:     <http://www.w3.org/2002/07/owl#> .
>>
>> @prefix sct:     <http://www.mckesson.com/life/snomed-ct.ontology.owl#> .
>> @prefix ex:        <http://www.example.com#> .
>>
>> <http://www.example.com>
>>        rdf:type owl:Ontology ;
>>        owl:imports
>> <http://www.mckesson.com/life/snomed-ct.ontology.owl> .
>>
>>
>>
>> The SNOMED ontology is available on the classpath with the path
>> FactRepository/Common/models/snomed-ct.ttl .
>>
>>
>> The three test methods are shown below.  The key observation is that
>> in the third one the
>> StreamsManager does not honor the altEntry and tries to resolve over
>> the internet.
>>
>>
>>      /**
>>       * Proves that setting an AltEntry in FileManager is honored by
>> FileManager
>>       */
>>      public void testLoadWithFileManagerFromAltEntry()
>>      {
>>         FileManager  mgr = FileManager.get();
>>         mgr.getLocationMapper().addAltEntry
>>         ("http://www.mckesson.com/life/snomed-ct.ontology.owl",
>>         "FactRepository/Common/models/snomed-ct.ttl");
>>
>>         Model m = FileManager.get().loadModel(
>>                 "http://www.mckesson.com/life/snomed-ct.ontology.owl");
>>         assertNotNull("Model should be non null", m);
>>         assertTrue("Model should be non empty", m.size()>0);
>>
>>      }
>>
>>      /**
>>       * Shows that setting up an AltEntry in StreamManager does get
>> honored by
>>       * the StreamManager
>>       */
>>      public void testLoadOntologyWithStreamManagerFromAltEntry()
>>      {
>>         FileManager  fileMgr = FileManager.get();
>>         fileMgr.getLocationMapper().addAltEntry
>>         ("http://www.mckesson.com/life/snomed-ct.ontology.owl",
>>         "FactRepository/Common/models/snomed-ct.ttl");
>>
>>         Model model = ModelFactory.createDefaultModel();
>>
>>         InputStream stream =
>> getClass().getResourceAsStream("myontology.ttl");
>>         model.read(stream, null, "TTL");
>>
>>         StreamManager streamMgr =
>> StreamManager.makeDefaultStreamManager();
>>         streamMgr.getLocationMapper().addAltEntry
>>         ("http://www.mckesson.com/life/snomed-ct.ontology.owl",
>>         "FactRepository/Common/models/snomed-ct.ttl");
>>         StreamManager.setGlobal(streamMgr);
>>
>> /*
>>   * No error is logged from OntDocumentManager
>>   */
>>         OntModel ont =
>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_TRANS_INF, model);
>>
>>      }
>>
>>      /**
>>       * Shows that setting up an AltEntry in FileManager does not get
>> honored by
>>       * the StreamManager
>>       */
>>      public void testLoadOntologyWithFileManagerFromAltEntry()
>>      {
>>         FileManager  fileMgr = FileManager.get();
>>         fileMgr.getLocationMapper().addAltEntry
>>         ("http://www.mckesson.com/life/snomed-ct.ontology.owl",
>>         "FactRepository/Common/models/snomed-ct.ttl");
>>
>>         Model model = ModelFactory.createDefaultModel();
>>
>>         InputStream stream =
>> getClass().getResourceAsStream("myontology.ttl");
>>         model.read(stream, null, "TTL");
>> /*
>>   Logs
>>   WARN OntDocumentManager:1077 - An error occurred while attempting to
>> read from http://www.mckesson.com/life/snomed-ct.ontology.owl. Msg was
>> '404 - not found'.
>> org.apache.jena.atlas.web.HttpException: 404 - not found
>>   */
>>         OntModel ont =
>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_TRANS_INF, model);
>>
>>      }
>>
>>
>>
>>
>>
>> -----Original Message-----
>> From: Andy Seaborne [mailto:andy@apache.org]
>> Sent: Wednesday, October 30, 2013 4:11 PM
>> To: dev@jena.apache.org
>> Subject: Re: Replacing FileManager (WAS use of recent features from
>> httpclient)
>>
>> On 24/10/13 15:59, Altmann, Michael wrote:
>>> Thanks,  I was not aware of the change.  I have code that configures
>>> the global FileManager.  It sets the locators, locations and
>>> prefixes.  Should I change that code to only manipulate the global
>>> StreamManager or manipulate it in addition to the FileManager?  I
>>> looked around in the documentation a bit, but I still see this page
>>> http://jena.apache.org/documentation/notes/file-manager.html , which
>>> focuses on the FileManager.
>>>
>>
>> At what point do you reconfigure the global FileManager? Before any
>> read/write atall?  Maybe the reset is being doen after you changed it.
>> I've just looked at the code and I can believe the you can set the
>> global FileManager configuration, then cause RIOT to kick in and so
>> loose the configuration.
>>
>> If you call:
>>
>>     IO_Jena.wireIntoJena()
>>
>> it explicitly forces the reconfiguration.  It starts:
>>
>>     FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
>>
>> If that wortks, it'll confirm my suspicion and I can put in a
>> automatic kickstart.
>>
>>   > http://jena.apache.org/documentation/notes/file-manager.html
>>
>> That could do with rewriting but it should be compatible.
>>
>>     Andy
>>
>>>
>>> [This thread is probably evolving to something that ought to be on the
>>> users list.  Should we move it? ]
>>
>>
>>>
>>>
>>> -----Original Message-----
>>> From: Rob Vesse [mailto:rvesse@dotnetrdf.org]
>>> Sent: Thursday, October 24, 2013 9:26 AM
>>> To: dev@jena.apache.org
>>> Subject: Re: Replacing FileManager (WAS use of recent features from
>>> httpclient)
>>>
>>> Michael
>>>
>>> The issue is that recent versions of Jena delegate IO to ARQs RIOT
>>> subsystem which has a separate StreamManager which manages how
>>> resources are opened.
>>>
>>> You can replace this like so:
>>>
>>> StreamManager mgr = StreamManager.makeDefaultStreamManager();
>>> // Clear out default setup
>>> mgr.clearLocators();
>>> // Add back ability to read from files mgr.addLocator(new
>>> LocatorFile(null)); // Optionally add back ability to read from class
>>> path mgr.addLocator(new
>>> LocatorClassLoader(StreamManager.getClass().getClassLoader()));
>>>         StreamManager.setGlobal(mgr);
>>>
>>> Hope this helps,
>>>
>>> Rob
>>>
>>>
>>>
>>> On 24/10/2013 14:45, "Altmann, Michael" <Mi...@McKesson.com>
>>> wrote:
>>>
>>>> [Altmann, Michael] ...
>>>
>>>
>>>
>>>
>>
>