You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Martynas Jusevičius <ma...@graphity.org> on 2013/12/05 23:45:43 UTC

Alternative to org.openjena.riot.WebContent?

Hey,

I'm using constants from org.openjena.riot.WebContent, such as
WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.

After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
WebContent class is not there anymore. What can I use instead?

Thanks.

Martynas

Re: Alternative to org.openjena.riot.WebContent?

Posted by Rob Vesse <rv...@dotnetrdf.org>.
Having contentTypeToLang() return null is the designed behaviour because
its useful in a number of cases.

Where ARQ and Fuseki use it internally they typically try and convert a
Content-Type into a Lang, see if that returns null and if it does attempt
alternative means of detecting the language e.g. inspecting the file
extension.

Try searching for usages of RDFLanguages.contentTypeToLang() and looking
at the nearby code for examples of this

Rob

On 06/12/2013 14:32, "Martynas Jusevičius" <ma...@graphity.org> wrote:

>I tried supplying bogus Lang name to Model.read()/Model.write() and
>I'm getting NoReaderForLangException/NoWriterForLangException.
>
>Failing to map content type to Lang is not exactly the same situation
>however :) I cannot wrap the whole block in try/catch, still need to
>check if RDFLanguages.contentTypeToLang() returns null before calling
>read()/write().
>
>On Fri, Dec 6, 2013 at 1:39 PM, Andy Seaborne <an...@apache.org> wrote:
>> On 06/12/13 12:08, Martynas Jusevičius wrote:
>>>
>>> Thanks Andy. Yes looks like I have some upgrading to do...
>>>
>>> Can you provide more info about that FileManager adapter and how it
>>> works with OntDocumentManager?
>>
>>
>> AdapterFileManager extends FielManager.
>>
>> (But the old FileManager still works albeit old world I/O)
>>
>>
>>> Regarding static methods, I don't have a use case at hand, I was just
>>> wondering if that's a good design decision. I'm always trying to leave
>>> methods public and non-static, in case anyone needs to override them.
>>
>>
>> Pros and cons.  RDFDataMgr makes simple/common I/O simple.  You can set
>>the
>> complicated stuff if you want to.
>>
>>
>>> RDFLanguages seems useful, I was missing this functionality in the
>>> previous Jena version I used.
>>> Is there some Jena exception that would be appropriate to throw when
>>> RDFLanguages.contentTypeToLang() returns null? I.e. when the program
>>> does not support reading/writing a certain media type?
>>
>>
>> Have you tried? :-)
>>
>>         Andy
>>
>>
>>>
>>> Martynas
>>>
>>>
>>> On Fri, Dec 6, 2013 at 10:09 AM, Andy Seaborne <an...@apache.org> wrote:
>>>>
>>>> On 06/12/13 00:21, Martynas Jusevičius wrote:
>>>>>
>>>>>
>>>>> I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
>>>>> switched to SPIN API 1.3.1 that depends on Jena 2.11.0.
>>>>
>>>>
>>>>
>>>> TopQuadrant only jump in large version steps so you may well find that
>>>> many
>>>> small steps have become one large step for you.  Not a lot we can do
>>>> about
>>>> that.
>>>>
>>>>
>>>>> I found the Lang class - there seems to be some overlap in
>>>>> functionality as well?
>>>>
>>>>
>>>>
>>>> Lang is the constant symbols.  No statics.
>>>>
>>>> RDFLanguages is the system registry.  You can add languages.
>>>>
>>>>
>>>>> I also started looking at RDFDataMgr, to see wether it could replace
>>>>> my DataManager (FileManager subclass) to do content negotiation and
>>>>> stuff. FileManager did a poor job at conneg, that's true, but I think
>>>>> RDFDataMgr is not a great solution either:
>>>>> - RDFDataMgr is not a subclass of FileManager, so it cannot be used
>>>>> with OntDocumentManager?
>>>>
>>>>
>>>>
>>>> There is a FileManager adapter that is installed.
>>>>
>>>>
>>>>> - why static methods? Cannot override :(
>>>>
>>>>
>>>>
>>>> What do you want to override?
>>>>
>>>>
>>>>> - is it possible to specify qualified media types for content
>>>>> negotiation? I mean different "q" values for different media types in
>>>>> the "Accept" header. I have an example that does that (which I'm now
>>>>> upgrading to Jena's new classes):
>>>>
>>>>
>>>>
>>>> The conneg accept headers are:
>>>>
>>>>
>>>> 
>>>>text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,appli
>>>>cation/xml;q=0.7,*/*;q=0.5
>>>>
>>>>
>>>> 
>>>>application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,applicat
>>>>ion/x-trig;q=0.7,*/*;q=0.5
>>>>
>>>>
>>>> 
>>>>text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,appli
>>>>cation/xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nqua
>>>>ds;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>>>>
>>>> or add your own org.apache.jena.riot.stream.Locator.
>>>>
>>>>>
>>>>>
>>>>> 
>>>>>https://github.com/Graphity/graphity-browser/blob/master/src/main/java
>>>>>/org/graphity/client/locator/LocatorLinkedData.java
>>>>
>>>>
>>>>
>>>> Locators still exist, albeit rewritten.
>>>>
>>>> Fixed
>>>>
>>>>
>>>>> - was a separate class necessary at all, if conneg can be handled by
>>>>>a
>>>>> Locator, as the example above shows?
>>>>
>>>>
>>>>
>>>> RDFDataMgr is not just about conneg.
>>>>
>>>> All the non-XML based readers and writer have been rewritten.
>>>>
>>>> Systematic handing of triples and quads.
>>>>
>>>> model.read(url) does full conneg.
>>>>
>>>> RDFDataMgr is the "one stop shop" for I/O.
>>>>
>>>>
>>>>> The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
>>>>> it doesn't look like it can be simply used as a replacement?
>>>>
>>>>
>>>>
>>>> No.
>>>>
>>>>>
>>>>>
>>>>> 
>>>>>http://jena.apache.org/documentation/io/rdf-input.html#example-2-using
>>>>>-the-rdfdatamgr
>>>>
>>>>
>>>>
>>>> and a few lines lower down:
>>>>
>>>> 
>>>>http://jena.apache.org/documentation/io/rdf-input.html#streammanager-an
>>>>d-locationmapper
>>>>
>>>>>
>>>>> Martynas
>>>>
>>>>
>>>>
>>>> You could submit a patch.
>>>>
>>>>          Andy
>>>>
>>>>
>>>>>
>>>>> On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org>
>>>>>wrote:
>>>>>>
>>>>>>
>>>>>> Which version were you using?
>>>>>>
>>>>>> org.apache.jena.riot.WebContent
>>>>>> WebContent.contentTypeToLang
>>>>>>
>>>>>> but better:
>>>>>>
>>>>>> RDFLanguages.contentTypeToLang(String)
>>>>>>
>>>>>> and use constants not Strings.
>>>>>>
>>>>>>           Andy
>>>>>>
>>>>>>
>>>>>> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Or rather, what functionality can replace langFromContentType()
>>>>>>>that I
>>>>>>> was using to convert media type to Jena syntax name:
>>>>>>>
>>>>>>>        String syntax = langFromContentType(in.getMimeType());
>>>>>>>        model.read(in.getInput(), filenameOrURI, syntax);
>>>>>>>
>>>>>>>
>>>>>>>        public static String langFromContentType(String mimeType)
>>>>>>>        {
>>>>>>>            if ( mimeType == null )
>>>>>>>                return null ;
>>>>>>>            return LANGS.get(mimeType.toLowerCase()) ;
>>>>>>>        }
>>>>>>>
>>>>>>>       public static final Map<String, String> LANGS = new
>>>>>>>HashMap<>()
>>>>>>> ;
>>>>>>>        static
>>>>>>>        {
>>>>>>>            LANGS.put(WebContent.contentTypeRDFXML,
>>>>>>> WebContent.langRDFXML);
>>>>>>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>>>>>>          // snip
>>>>>>>        }
>>>>>>>
>>>>>>>
>>>>>>> Martynas
>>>>>>>
>>>>>>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>>>>>>> <ma...@graphity.org> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hey,
>>>>>>>>
>>>>>>>> I'm using constants from org.openjena.riot.WebContent, such as
>>>>>>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>>>>>>
>>>>>>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>>>>>>> WebContent class is not there anymore. What can I use instead?
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> Martynas
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>





Re: Alternative to org.openjena.riot.WebContent?

Posted by Martynas Jusevičius <ma...@graphity.org>.
I tried supplying bogus Lang name to Model.read()/Model.write() and
I'm getting NoReaderForLangException/NoWriterForLangException.

Failing to map content type to Lang is not exactly the same situation
however :) I cannot wrap the whole block in try/catch, still need to
check if RDFLanguages.contentTypeToLang() returns null before calling
read()/write().

On Fri, Dec 6, 2013 at 1:39 PM, Andy Seaborne <an...@apache.org> wrote:
> On 06/12/13 12:08, Martynas Jusevičius wrote:
>>
>> Thanks Andy. Yes looks like I have some upgrading to do...
>>
>> Can you provide more info about that FileManager adapter and how it
>> works with OntDocumentManager?
>
>
> AdapterFileManager extends FielManager.
>
> (But the old FileManager still works albeit old world I/O)
>
>
>> Regarding static methods, I don't have a use case at hand, I was just
>> wondering if that's a good design decision. I'm always trying to leave
>> methods public and non-static, in case anyone needs to override them.
>
>
> Pros and cons.  RDFDataMgr makes simple/common I/O simple.  You can set the
> complicated stuff if you want to.
>
>
>> RDFLanguages seems useful, I was missing this functionality in the
>> previous Jena version I used.
>> Is there some Jena exception that would be appropriate to throw when
>> RDFLanguages.contentTypeToLang() returns null? I.e. when the program
>> does not support reading/writing a certain media type?
>
>
> Have you tried? :-)
>
>         Andy
>
>
>>
>> Martynas
>>
>>
>> On Fri, Dec 6, 2013 at 10:09 AM, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> On 06/12/13 00:21, Martynas Jusevičius wrote:
>>>>
>>>>
>>>> I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
>>>> switched to SPIN API 1.3.1 that depends on Jena 2.11.0.
>>>
>>>
>>>
>>> TopQuadrant only jump in large version steps so you may well find that
>>> many
>>> small steps have become one large step for you.  Not a lot we can do
>>> about
>>> that.
>>>
>>>
>>>> I found the Lang class - there seems to be some overlap in
>>>> functionality as well?
>>>
>>>
>>>
>>> Lang is the constant symbols.  No statics.
>>>
>>> RDFLanguages is the system registry.  You can add languages.
>>>
>>>
>>>> I also started looking at RDFDataMgr, to see wether it could replace
>>>> my DataManager (FileManager subclass) to do content negotiation and
>>>> stuff. FileManager did a poor job at conneg, that's true, but I think
>>>> RDFDataMgr is not a great solution either:
>>>> - RDFDataMgr is not a subclass of FileManager, so it cannot be used
>>>> with OntDocumentManager?
>>>
>>>
>>>
>>> There is a FileManager adapter that is installed.
>>>
>>>
>>>> - why static methods? Cannot override :(
>>>
>>>
>>>
>>> What do you want to override?
>>>
>>>
>>>> - is it possible to specify qualified media types for content
>>>> negotiation? I mean different "q" values for different media types in
>>>> the "Accept" header. I have an example that does that (which I'm now
>>>> upgrading to Jena's new classes):
>>>
>>>
>>>
>>> The conneg accept headers are:
>>>
>>>
>>> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,*/*;q=0.5
>>>
>>>
>>> application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>>>
>>>
>>> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>>>
>>> or add your own org.apache.jena.riot.stream.Locator.
>>>
>>>>
>>>>
>>>> https://github.com/Graphity/graphity-browser/blob/master/src/main/java/org/graphity/client/locator/LocatorLinkedData.java
>>>
>>>
>>>
>>> Locators still exist, albeit rewritten.
>>>
>>> Fixed
>>>
>>>
>>>> - was a separate class necessary at all, if conneg can be handled by a
>>>> Locator, as the example above shows?
>>>
>>>
>>>
>>> RDFDataMgr is not just about conneg.
>>>
>>> All the non-XML based readers and writer have been rewritten.
>>>
>>> Systematic handing of triples and quads.
>>>
>>> model.read(url) does full conneg.
>>>
>>> RDFDataMgr is the "one stop shop" for I/O.
>>>
>>>
>>>> The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
>>>> it doesn't look like it can be simply used as a replacement?
>>>
>>>
>>>
>>> No.
>>>
>>>>
>>>>
>>>> http://jena.apache.org/documentation/io/rdf-input.html#example-2-using-the-rdfdatamgr
>>>
>>>
>>>
>>> and a few lines lower down:
>>>
>>> http://jena.apache.org/documentation/io/rdf-input.html#streammanager-and-locationmapper
>>>
>>>>
>>>> Martynas
>>>
>>>
>>>
>>> You could submit a patch.
>>>
>>>          Andy
>>>
>>>
>>>>
>>>> On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org> wrote:
>>>>>
>>>>>
>>>>> Which version were you using?
>>>>>
>>>>> org.apache.jena.riot.WebContent
>>>>> WebContent.contentTypeToLang
>>>>>
>>>>> but better:
>>>>>
>>>>> RDFLanguages.contentTypeToLang(String)
>>>>>
>>>>> and use constants not Strings.
>>>>>
>>>>>           Andy
>>>>>
>>>>>
>>>>> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Or rather, what functionality can replace langFromContentType() that I
>>>>>> was using to convert media type to Jena syntax name:
>>>>>>
>>>>>>        String syntax = langFromContentType(in.getMimeType());
>>>>>>        model.read(in.getInput(), filenameOrURI, syntax);
>>>>>>
>>>>>>
>>>>>>        public static String langFromContentType(String mimeType)
>>>>>>        {
>>>>>>            if ( mimeType == null )
>>>>>>                return null ;
>>>>>>            return LANGS.get(mimeType.toLowerCase()) ;
>>>>>>        }
>>>>>>
>>>>>>       public static final Map<String, String> LANGS = new HashMap<>()
>>>>>> ;
>>>>>>        static
>>>>>>        {
>>>>>>            LANGS.put(WebContent.contentTypeRDFXML,
>>>>>> WebContent.langRDFXML);
>>>>>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>>>>>          // snip
>>>>>>        }
>>>>>>
>>>>>>
>>>>>> Martynas
>>>>>>
>>>>>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>>>>>> <ma...@graphity.org> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Hey,
>>>>>>>
>>>>>>> I'm using constants from org.openjena.riot.WebContent, such as
>>>>>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>>>>>
>>>>>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>>>>>> WebContent class is not there anymore. What can I use instead?
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Martynas
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>

Re: Alternative to org.openjena.riot.WebContent?

Posted by Andy Seaborne <an...@apache.org>.
On 06/12/13 12:08, Martynas Jusevičius wrote:
> Thanks Andy. Yes looks like I have some upgrading to do...
>
> Can you provide more info about that FileManager adapter and how it
> works with OntDocumentManager?

AdapterFileManager extends FielManager.

(But the old FileManager still works albeit old world I/O)

> Regarding static methods, I don't have a use case at hand, I was just
> wondering if that's a good design decision. I'm always trying to leave
> methods public and non-static, in case anyone needs to override them.

Pros and cons.  RDFDataMgr makes simple/common I/O simple.  You can set 
the complicated stuff if you want to.

> RDFLanguages seems useful, I was missing this functionality in the
> previous Jena version I used.
> Is there some Jena exception that would be appropriate to throw when
> RDFLanguages.contentTypeToLang() returns null? I.e. when the program
> does not support reading/writing a certain media type?

Have you tried? :-)

	Andy

>
> Martynas
>
>
> On Fri, Dec 6, 2013 at 10:09 AM, Andy Seaborne <an...@apache.org> wrote:
>> On 06/12/13 00:21, Martynas Jusevičius wrote:
>>>
>>> I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
>>> switched to SPIN API 1.3.1 that depends on Jena 2.11.0.
>>
>>
>> TopQuadrant only jump in large version steps so you may well find that many
>> small steps have become one large step for you.  Not a lot we can do about
>> that.
>>
>>
>>> I found the Lang class - there seems to be some overlap in
>>> functionality as well?
>>
>>
>> Lang is the constant symbols.  No statics.
>>
>> RDFLanguages is the system registry.  You can add languages.
>>
>>
>>> I also started looking at RDFDataMgr, to see wether it could replace
>>> my DataManager (FileManager subclass) to do content negotiation and
>>> stuff. FileManager did a poor job at conneg, that's true, but I think
>>> RDFDataMgr is not a great solution either:
>>> - RDFDataMgr is not a subclass of FileManager, so it cannot be used
>>> with OntDocumentManager?
>>
>>
>> There is a FileManager adapter that is installed.
>>
>>
>>> - why static methods? Cannot override :(
>>
>>
>> What do you want to override?
>>
>>
>>> - is it possible to specify qualified media types for content
>>> negotiation? I mean different "q" values for different media types in
>>> the "Accept" header. I have an example that does that (which I'm now
>>> upgrading to Jena's new classes):
>>
>>
>> The conneg accept headers are:
>>
>> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,*/*;q=0.5
>>
>> application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>>
>> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>>
>> or add your own org.apache.jena.riot.stream.Locator.
>>
>>>
>>> https://github.com/Graphity/graphity-browser/blob/master/src/main/java/org/graphity/client/locator/LocatorLinkedData.java
>>
>>
>> Locators still exist, albeit rewritten.
>>
>> Fixed
>>
>>
>>> - was a separate class necessary at all, if conneg can be handled by a
>>> Locator, as the example above shows?
>>
>>
>> RDFDataMgr is not just about conneg.
>>
>> All the non-XML based readers and writer have been rewritten.
>>
>> Systematic handing of triples and quads.
>>
>> model.read(url) does full conneg.
>>
>> RDFDataMgr is the "one stop shop" for I/O.
>>
>>
>>> The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
>>> it doesn't look like it can be simply used as a replacement?
>>
>>
>> No.
>>
>>>
>>> http://jena.apache.org/documentation/io/rdf-input.html#example-2-using-the-rdfdatamgr
>>
>>
>> and a few lines lower down:
>> http://jena.apache.org/documentation/io/rdf-input.html#streammanager-and-locationmapper
>>
>>>
>>> Martynas
>>
>>
>> You could submit a patch.
>>
>>          Andy
>>
>>
>>>
>>> On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org> wrote:
>>>>
>>>> Which version were you using?
>>>>
>>>> org.apache.jena.riot.WebContent
>>>> WebContent.contentTypeToLang
>>>>
>>>> but better:
>>>>
>>>> RDFLanguages.contentTypeToLang(String)
>>>>
>>>> and use constants not Strings.
>>>>
>>>>           Andy
>>>>
>>>>
>>>> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>>>>
>>>>>
>>>>> Or rather, what functionality can replace langFromContentType() that I
>>>>> was using to convert media type to Jena syntax name:
>>>>>
>>>>>        String syntax = langFromContentType(in.getMimeType());
>>>>>        model.read(in.getInput(), filenameOrURI, syntax);
>>>>>
>>>>>
>>>>>        public static String langFromContentType(String mimeType)
>>>>>        {
>>>>>            if ( mimeType == null )
>>>>>                return null ;
>>>>>            return LANGS.get(mimeType.toLowerCase()) ;
>>>>>        }
>>>>>
>>>>>       public static final Map<String, String> LANGS = new HashMap<>() ;
>>>>>        static
>>>>>        {
>>>>>            LANGS.put(WebContent.contentTypeRDFXML,
>>>>> WebContent.langRDFXML);
>>>>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>>>>          // snip
>>>>>        }
>>>>>
>>>>>
>>>>> Martynas
>>>>>
>>>>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>>>>> <ma...@graphity.org> wrote:
>>>>>>
>>>>>>
>>>>>> Hey,
>>>>>>
>>>>>> I'm using constants from org.openjena.riot.WebContent, such as
>>>>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>>>>
>>>>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>>>>> WebContent class is not there anymore. What can I use instead?
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> Martynas
>>>>
>>>>
>>>>
>>


Re: Alternative to org.openjena.riot.WebContent?

Posted by Martynas Jusevičius <ma...@graphity.org>.
Thanks Andy. Yes looks like I have some upgrading to do...

Can you provide more info about that FileManager adapter and how it
works with OntDocumentManager?

Regarding static methods, I don't have a use case at hand, I was just
wondering if that's a good design decision. I'm always trying to leave
methods public and non-static, in case anyone needs to override them.

RDFLanguages seems useful, I was missing this functionality in the
previous Jena version I used.
Is there some Jena exception that would be appropriate to throw when
RDFLanguages.contentTypeToLang() returns null? I.e. when the program
does not support reading/writing a certain media type?

Martynas


On Fri, Dec 6, 2013 at 10:09 AM, Andy Seaborne <an...@apache.org> wrote:
> On 06/12/13 00:21, Martynas Jusevičius wrote:
>>
>> I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
>> switched to SPIN API 1.3.1 that depends on Jena 2.11.0.
>
>
> TopQuadrant only jump in large version steps so you may well find that many
> small steps have become one large step for you.  Not a lot we can do about
> that.
>
>
>> I found the Lang class - there seems to be some overlap in
>> functionality as well?
>
>
> Lang is the constant symbols.  No statics.
>
> RDFLanguages is the system registry.  You can add languages.
>
>
>> I also started looking at RDFDataMgr, to see wether it could replace
>> my DataManager (FileManager subclass) to do content negotiation and
>> stuff. FileManager did a poor job at conneg, that's true, but I think
>> RDFDataMgr is not a great solution either:
>> - RDFDataMgr is not a subclass of FileManager, so it cannot be used
>> with OntDocumentManager?
>
>
> There is a FileManager adapter that is installed.
>
>
>> - why static methods? Cannot override :(
>
>
> What do you want to override?
>
>
>> - is it possible to specify qualified media types for content
>> negotiation? I mean different "q" values for different media types in
>> the "Accept" header. I have an example that does that (which I'm now
>> upgrading to Jena's new classes):
>
>
> The conneg accept headers are:
>
> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,*/*;q=0.5
>
> application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>
> text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5
>
> or add your own org.apache.jena.riot.stream.Locator.
>
>>
>> https://github.com/Graphity/graphity-browser/blob/master/src/main/java/org/graphity/client/locator/LocatorLinkedData.java
>
>
> Locators still exist, albeit rewritten.
>
> Fixed
>
>
>> - was a separate class necessary at all, if conneg can be handled by a
>> Locator, as the example above shows?
>
>
> RDFDataMgr is not just about conneg.
>
> All the non-XML based readers and writer have been rewritten.
>
> Systematic handing of triples and quads.
>
> model.read(url) does full conneg.
>
> RDFDataMgr is the "one stop shop" for I/O.
>
>
>> The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
>> it doesn't look like it can be simply used as a replacement?
>
>
> No.
>
>>
>> http://jena.apache.org/documentation/io/rdf-input.html#example-2-using-the-rdfdatamgr
>
>
> and a few lines lower down:
> http://jena.apache.org/documentation/io/rdf-input.html#streammanager-and-locationmapper
>
>>
>> Martynas
>
>
> You could submit a patch.
>
>         Andy
>
>
>>
>> On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> Which version were you using?
>>>
>>> org.apache.jena.riot.WebContent
>>> WebContent.contentTypeToLang
>>>
>>> but better:
>>>
>>> RDFLanguages.contentTypeToLang(String)
>>>
>>> and use constants not Strings.
>>>
>>>          Andy
>>>
>>>
>>> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>>>
>>>>
>>>> Or rather, what functionality can replace langFromContentType() that I
>>>> was using to convert media type to Jena syntax name:
>>>>
>>>>       String syntax = langFromContentType(in.getMimeType());
>>>>       model.read(in.getInput(), filenameOrURI, syntax);
>>>>
>>>>
>>>>       public static String langFromContentType(String mimeType)
>>>>       {
>>>>           if ( mimeType == null )
>>>>               return null ;
>>>>           return LANGS.get(mimeType.toLowerCase()) ;
>>>>       }
>>>>
>>>>      public static final Map<String, String> LANGS = new HashMap<>() ;
>>>>       static
>>>>       {
>>>>           LANGS.put(WebContent.contentTypeRDFXML,
>>>> WebContent.langRDFXML);
>>>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>>>         // snip
>>>>       }
>>>>
>>>>
>>>> Martynas
>>>>
>>>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>>>> <ma...@graphity.org> wrote:
>>>>>
>>>>>
>>>>> Hey,
>>>>>
>>>>> I'm using constants from org.openjena.riot.WebContent, such as
>>>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>>>
>>>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>>>> WebContent class is not there anymore. What can I use instead?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> Martynas
>>>
>>>
>>>
>

Re: Alternative to org.openjena.riot.WebContent?

Posted by Andy Seaborne <an...@apache.org>.
On 06/12/13 00:21, Martynas Jusevičius wrote:
> I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
> switched to SPIN API 1.3.1 that depends on Jena 2.11.0.

TopQuadrant only jump in large version steps so you may well find that 
many small steps have become one large step for you.  Not a lot we can 
do about that.

> I found the Lang class - there seems to be some overlap in
> functionality as well?

Lang is the constant symbols.  No statics.

RDFLanguages is the system registry.  You can add languages.

> I also started looking at RDFDataMgr, to see wether it could replace
> my DataManager (FileManager subclass) to do content negotiation and
> stuff. FileManager did a poor job at conneg, that's true, but I think
> RDFDataMgr is not a great solution either:
> - RDFDataMgr is not a subclass of FileManager, so it cannot be used
> with OntDocumentManager?

There is a FileManager adapter that is installed.

> - why static methods? Cannot override :(

What do you want to override?

> - is it possible to specify qualified media types for content
> negotiation? I mean different "q" values for different media types in
> the "Accept" header. I have an example that does that (which I'm now
> upgrading to Jena's new classes):

The conneg accept headers are:

text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,*/*;q=0.5

application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5

text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,*/*;q=0.5

or add your own org.apache.jena.riot.stream.Locator.

> https://github.com/Graphity/graphity-browser/blob/master/src/main/java/org/graphity/client/locator/LocatorLinkedData.java

Locators still exist, albeit rewritten.

Fixed

> - was a separate class necessary at all, if conneg can be handled by a
> Locator, as the example above shows?

RDFDataMgr is not just about conneg.

All the non-XML based readers and writer have been rewritten.

Systematic handing of triples and quads.

model.read(url) does full conneg.

RDFDataMgr is the "one stop shop" for I/O.

> The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
> it doesn't look like it can be simply used as a replacement?

No.

> http://jena.apache.org/documentation/io/rdf-input.html#example-2-using-the-rdfdatamgr

and a few lines lower down:
http://jena.apache.org/documentation/io/rdf-input.html#streammanager-and-locationmapper

>
> Martynas

You could submit a patch.

	Andy

>
> On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org> wrote:
>> Which version were you using?
>>
>> org.apache.jena.riot.WebContent
>> WebContent.contentTypeToLang
>>
>> but better:
>>
>> RDFLanguages.contentTypeToLang(String)
>>
>> and use constants not Strings.
>>
>>          Andy
>>
>>
>> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>>
>>> Or rather, what functionality can replace langFromContentType() that I
>>> was using to convert media type to Jena syntax name:
>>>
>>>       String syntax = langFromContentType(in.getMimeType());
>>>       model.read(in.getInput(), filenameOrURI, syntax);
>>>
>>>
>>>       public static String langFromContentType(String mimeType)
>>>       {
>>>           if ( mimeType == null )
>>>               return null ;
>>>           return LANGS.get(mimeType.toLowerCase()) ;
>>>       }
>>>
>>>      public static final Map<String, String> LANGS = new HashMap<>() ;
>>>       static
>>>       {
>>>           LANGS.put(WebContent.contentTypeRDFXML, WebContent.langRDFXML);
>>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>>         // snip
>>>       }
>>>
>>>
>>> Martynas
>>>
>>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>>> <ma...@graphity.org> wrote:
>>>>
>>>> Hey,
>>>>
>>>> I'm using constants from org.openjena.riot.WebContent, such as
>>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>>
>>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>>> WebContent class is not there anymore. What can I use instead?
>>>>
>>>> Thanks.
>>>>
>>>> Martynas
>>
>>


Re: Alternative to org.openjena.riot.WebContent?

Posted by Martynas Jusevičius <ma...@graphity.org>.
I was using SPIN API 1.3.0, I think it depends on ARQ 2.9.2. Now I
switched to SPIN API 1.3.1 that depends on Jena 2.11.0.

I found the Lang class - there seems to be some overlap in
functionality as well?

I also started looking at RDFDataMgr, to see wether it could replace
my DataManager (FileManager subclass) to do content negotiation and
stuff. FileManager did a poor job at conneg, that's true, but I think
RDFDataMgr is not a great solution either:
- RDFDataMgr is not a subclass of FileManager, so it cannot be used
with OntDocumentManager?
- why static methods? Cannot override :(
- is it possible to specify qualified media types for content
negotiation? I mean different "q" values for different media types in
the "Accept" header. I have an example that does that (which I'm now
upgrading to Jena's new classes):
https://github.com/Graphity/graphity-browser/blob/master/src/main/java/org/graphity/client/locator/LocatorLinkedData.java
- was a separate class necessary at all, if conneg can be handled by a
Locator, as the example above shows?

The JavaDoc states that "RDFDataMgr superceeds the FileManager" - but
it doesn't look like it can be simply used as a replacement?
http://jena.apache.org/documentation/io/rdf-input.html#example-2-using-the-rdfdatamgr

Martynas

On Fri, Dec 6, 2013 at 1:01 AM, Andy Seaborne <an...@apache.org> wrote:
> Which version were you using?
>
> org.apache.jena.riot.WebContent
> WebContent.contentTypeToLang
>
> but better:
>
> RDFLanguages.contentTypeToLang(String)
>
> and use constants not Strings.
>
>         Andy
>
>
> On 05/12/13 22:57, Martynas Jusevičius wrote:
>>
>> Or rather, what functionality can replace langFromContentType() that I
>> was using to convert media type to Jena syntax name:
>>
>>      String syntax = langFromContentType(in.getMimeType());
>>      model.read(in.getInput(), filenameOrURI, syntax);
>>
>>
>>      public static String langFromContentType(String mimeType)
>>      {
>>          if ( mimeType == null )
>>              return null ;
>>          return LANGS.get(mimeType.toLowerCase()) ;
>>      }
>>
>>     public static final Map<String, String> LANGS = new HashMap<>() ;
>>      static
>>      {
>>          LANGS.put(WebContent.contentTypeRDFXML, WebContent.langRDFXML);
>> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>>        // snip
>>      }
>>
>>
>> Martynas
>>
>> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
>> <ma...@graphity.org> wrote:
>>>
>>> Hey,
>>>
>>> I'm using constants from org.openjena.riot.WebContent, such as
>>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>>
>>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>>> WebContent class is not there anymore. What can I use instead?
>>>
>>> Thanks.
>>>
>>> Martynas
>
>

Re: Alternative to org.openjena.riot.WebContent?

Posted by Andy Seaborne <an...@apache.org>.
Which version were you using?

org.apache.jena.riot.WebContent
WebContent.contentTypeToLang

but better:

RDFLanguages.contentTypeToLang(String)

and use constants not Strings.

	Andy

On 05/12/13 22:57, Martynas Jusevičius wrote:
> Or rather, what functionality can replace langFromContentType() that I
> was using to convert media type to Jena syntax name:
>
>      String syntax = langFromContentType(in.getMimeType());
>      model.read(in.getInput(), filenameOrURI, syntax);
>
>
>      public static String langFromContentType(String mimeType)
>      {
>          if ( mimeType == null )
>              return null ;
>          return LANGS.get(mimeType.toLowerCase()) ;
>      }
>
>     public static final Map<String, String> LANGS = new HashMap<>() ;
>      static
>      {
>          LANGS.put(WebContent.contentTypeRDFXML, WebContent.langRDFXML);
> LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
>        // snip
>      }
>
>
> Martynas
>
> On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
> <ma...@graphity.org> wrote:
>> Hey,
>>
>> I'm using constants from org.openjena.riot.WebContent, such as
>> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>>
>> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
>> WebContent class is not there anymore. What can I use instead?
>>
>> Thanks.
>>
>> Martynas


Re: Alternative to org.openjena.riot.WebContent?

Posted by Martynas Jusevičius <ma...@graphity.org>.
Or rather, what functionality can replace langFromContentType() that I
was using to convert media type to Jena syntax name:

    String syntax = langFromContentType(in.getMimeType());
    model.read(in.getInput(), filenameOrURI, syntax);


    public static String langFromContentType(String mimeType)
    {
        if ( mimeType == null )
            return null ;
        return LANGS.get(mimeType.toLowerCase()) ;
    }

   public static final Map<String, String> LANGS = new HashMap<>() ;
    static
    {
        LANGS.put(WebContent.contentTypeRDFXML, WebContent.langRDFXML);
LANGS.put(WebContent.contentTypeTurtle, WebContent.langTurtle);
      // snip
    }


Martynas

On Thu, Dec 5, 2013 at 11:45 PM, Martynas Jusevičius
<ma...@graphity.org> wrote:
> Hey,
>
> I'm using constants from org.openjena.riot.WebContent, such as
> WebContent.contentTypeRDFXML, WebContent.langRDFXML etc.
>
> After upgrading to Jena 2.11.0 (as part of SPIN API 1.3.1), the
> WebContent class is not there anymore. What can I use instead?
>
> Thanks.
>
> Martynas