On 12/01/2017 9:58, Chris Dollin wrote:
> 
> 
> On 12/01/17 08:41, George News wrote:
>>
>>
>> On 11/01/2017 18:17, A. Soroka wrote:
>>> And I and Chris Dollin answered your question. Again,
>>>
>>> ResourceFactory.createTypedLiteral("http://hola^^http://www.w3.org/2001/XMSchema#anyURI";,
>>> XSDDatatype.XSDanyURI)
>>>
>>> Don't do a bunch of string processing.
>>
>> As I said there is no way of getting only "http://hola"; which is the
>> value. I don't know what I'm doing wrong but cannot get it.
>>
>> Example with all possible functions:
>> String b = "http://hola^^http://www.w3.org/2001/XMLSchema#anyURI";;
> 
>> Literal a = (Literal) ResourceFactory.createTypedLiteral(b,
>> XSDDatatype.XSDanyURI);
> 
> The literal's lexical form had a type in it.
> 
>> System.out.println(a.getDatatype());
>> System.out.println(a.getLexicalForm());
> 
> And so when you ask for the lexical form, the type comes out with it.

Fully understand it but if you check the toString() output it
concatenates both ;) Which from what you later explain I understand.

>> System.out.println(a.getDatatypeURI());
>> System.out.println(a.getString());
>> System.out.println(a.getValue());
>> System.out.println(a.toString());
>>
>> Output:
>> Datatype[http://www.w3.org/2001/XMLSchema#anyURI -> class java.net.URI]
>> http://datypic.com/fraf1^^http://www.w3.org/2001/XMLSchema#anyURI
>> http://www.w3.org/2001/XMLSchema#anyURI
>> http://datypic.com/fraf1^^http://www.w3.org/2001/XMLSchema#anyURI
>> http://datypic.com/fraf1^^http://www.w3.org/2001/XMLSchema#anyURI
>> http://datypic.com/fraf1^^http://www.w3.org/2001/XMLSchema#anyURI^^http://www.w3.org/2001/XMLSchema#anyURI
>>
>>
>> If I run the same code using a integer:
>> a =
>> ResourceFactory.createTypedLiteral("\"5\"^^http://www.w3.org/2001/XMLSchema#int";,
>> XSDDatatype.XSDint);
>>
>> I get an exception: org.apache.jena.datatypes.DatatypeFormatException.
> 
> Because the xsd:int datatype checks the lexical form of the literal
> (and it looks like either xsd:anyURI doesn't, or b's value is in
> fact a legal URI).
> 
>> I'm suggesting there should be a function like
>> createTypedLiteral(String literal) where
>> literal is a well-formatted literal. Then using the parsing from ^^
> internally will be
>> able to extract the type and somehow obtain the same outcome as the
> createTypedLiteral(String, Datatype) function.
>>
>> I guess that internally there should be such a function.
> 
> Maybe there should be but I don't know if there is one. Code for
> parsing Turtle literals is probably embedded in the Turtle
> parser rather than being exposed, but it might be available.

That's what I meant ;) I finally explained myself

> WHat bigger problem are you trying ro solve that led you to
> try and construct an anyURI literal from a lexicalForm^^typeName string?

I'm getting this data from a Webservice and I wanted to parse it. But I
have just realized that maybe it is the webservice the one that should
be doing it by properly returning the URI. In the webservice is where
the model is managed.

> 
> Chris
> 

Reply via email to