On 12/01/2017 11:33, Rob Vesse wrote:
> Why are you using literals to represent URIs?
> 
>  Most people would just use URIs since they are first-class citizens in the 
> RDF datamodel. It seems like you are forcing yourself through unnecessary 
> hoops

It's representing an endpoint to access a value in a webservice, i.e.
http://domain.com/customer/value or to modify the status of a particular
element http://domain.com/item/switch/on

Thanks.


> Rob
> 
> On 12/01/2017 10:15, "George News" <george.n...@gmx.net> wrote:
> 
>     BTW I think I found a bug:
>     
>     String b = "http://datypic.com/fraf1";;
>     Literal a = (Literal) ResourceFactory.createTypedLiteral(b, 
> XSDDatatype.XSDanyURI);
>     System.out.println(a.getDatatype());
>     System.out.println(a.getValue().getClass());
>     
>     a = (Literal) ResourceFactory.createTypedLiteral(URI.create(b));
>     System.out.println(a.getDatatype());
>     System.out.println(a.getValue().getClass());
>     
>     Output:
>     Datatype[http://www.w3.org/2001/XMLSchema#anyURI -> class java.net.URI]
>     class java.lang.String
>     Datatype[http://www.w3.org/2001/XMLSchema#anyURI -> class java.net.URI]
>     class java.net.URI
>     
>     Shouldn't both getValue() be java.net.URI? I guess this needs to be fixed 
> as in both cases the DataType indicastes it's an URI, so when casting the 
> String to URI the system complains ;)
>     
>     Regards,
>     Jorge
>     
>     
>     
>     
>     On 12/01/2017 10:48, George News wrote:
>     > 
>     > 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