Andy - done.

On Wed, Mar 4, 2020 at 12:25 PM Andy Seaborne <a...@apache.org> wrote:

> java.net.URI is not perfect and it is also a mixture of RFC2396, RFC3896
> and some pragmatics.
>
> Jena's own jena-iri gets it right.
>
>    // NB The argument order can catch you out.
>    IRI iri = IRIResolver.resolve("picture.jpg", "http://mysite.net"; );
>    System.out.println(iri);
>
> but jsonld-java uses java.net.URI.
>
> Erich - please could you raise an issue with jsonld-java?
>
>      Andy
>
> Or https://github.com/afs/iri4ld
>
> On 04/03/2020 16:57, Erich Bremer wrote:
> > Thanks for the reference Martynas!  According to the section referenced,
> > the following two URLs are equivalent.
> >
> >        http://example.com
> >        http://example.com/
> >
> > I can modify my own code to do the check and fix it for myself, but I
> > would think URI.resolve should treat them as equivalents and not
> > mindlessly concatenate them.  How the jsonld-java people or the Jena
> > community, which uses jsonld-java, will have to make the call on how
> > to handle it.  - Erich
> >
> >
> > On Wed, Mar 4, 2020 at 11:24 AM Martynas Jusevičius <
> marty...@atomgraph.com>
> > wrote:
> >
> >> URI.resolve() will not assume anything.
> >>
> >> Base URI normally ends with a /. Don’t know if this is the best
> reference,
> >> but close:
> >> https://tools.ietf.org/html/rfc3986#section-6.2.3
> >>
> >> You need to check the URI RFC and its resolution algorithm.
> >>
> >> On Wed, 4 Mar 2020 at 16.57, Erich Bremer <er...@ebremer.com> wrote:
> >>
> >>> This also works:
> >>>
> >>>          URI uri = new URI("http://mysite.net";);
> >>>          System.out.println(uri.resolve("/picture.jpg"));
> >>>
> >>> but if no trailing "/" and no leading "/" on path will yield the
> >>> concatenated http://mysite.netpicture.jpg which then gets tossed and a
> >>> blank node is formed.
> >>>
> >>> Should URI.resolve assume a "/" if no trailing nor leading "/" is
> >> present?
> >>> - Erich
> >>>
> >>> On Wed, Mar 4, 2020 at 10:52 AM Erich Bremer <er...@ebremer.com>
> wrote:
> >>>
> >>>> The program works if I specify the base with a trailing slash as "
> >>>> http://mysite.net/";
> >>>> I ran through the code and the problem appears to be here:
> >>>>
> >>>>
> >>>
> >>
> https://github.com/jsonld-java/jsonld-java/blob/66012db2f53b009cedeae50c83b5594b9dd05e11/core/src/main/java/com/github/jsonldjava/utils/JsonLdUrl.java#L283
> >>>>
> >>>> In the short code segment here, you can see:
> >>>>          URI uri = new URI("http://mysite.net";);
> >>>>          System.out.println(uri.resolve("picture.jpg"));
> >>>>
> >>>> Output:
> >>>> http://mysite.netpicture.jpg
> >>>>
> >>>>
> >>>> On Wed, Mar 4, 2020 at 10:05 AM Erich Bremer <er...@ebremer.com>
> >> wrote:
> >>>>
> >>>>> Same thing:
> >>>>> Source JSONLD
> >>>>> {
> >>>>>      "@context": [
> >>>>>          "http://schema.org";
> >>>>>      ],
> >>>>>      "@graph": [
> >>>>>          {
> >>>>>              "@type": "CreativeWork",
> >>>>>              "@id": "picture.jpg"
> >>>>>          },
> >>>>>          {
> >>>>>              "@id": "./",
> >>>>>              "@type": "DataSet"
> >>>>>          }
> >>>>>      ]
> >>>>> }
> >>>>> AFTER loading
> >>> ============================================================
> >>>>> Base : http://mysite.net
> >>>>> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> >>>>> SLF4J: Defaulting to no-operation (NOP) logger implementation
> >>>>> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
> >>>>> further details.
> >>>>> [ {
> >>>>>    "@type" : [ "http://schema.org/CreativeWork"; ]
> >>>>> }, {
> >>>>>    "@id" : "http://mysite.net";,
> >>>>>    "@type" : [ "http://schema.org/DataSet"; ]
> >>>>> } ]
> >>>>>
> >>>>>
> >>>>> CODE ====================================
> >>>>> package com.mycompany.tesjsonld;
> >>>>>
> >>>>> import com.github.jsonldjava.core.JsonLdOptions;
> >>>>> import com.github.jsonldjava.core.JsonLdProcessor;
> >>>>> import com.github.jsonldjava.utils.JsonUtils;
> >>>>> import java.io.ByteArrayInputStream;
> >>>>> import java.io.FileNotFoundException;
> >>>>> import java.io.IOException;
> >>>>> import java.io.InputStream;
> >>>>> import java.nio.charset.Charset;
> >>>>>
> >>>>> /**
> >>>>>   *
> >>>>>   * @author erich
> >>>>>   */
> >>>>> public class tryme {
> >>>>>
> >>>>>      public static void main(String[] args) throws
> >> FileNotFoundException,
> >>>>> IOException {
> >>>>>          String json = "{\n" +
> >>>>>              "    \"@context\": [\n" +
> >>>>>              "        \"http://schema.org\"\n"; +
> >>>>>              "    ],\n" +
> >>>>>              "    \"@graph\": [\n" +
> >>>>>              "        {\n" +
> >>>>>              "            \"@type\": \"CreativeWork\",\n" +
> >>>>>              "            \"@id\": \"picture.jpg\"\n" +
> >>>>>              "        },\n" +
> >>>>>              "        {\n" +
> >>>>>              "            \"@id\": \"./\",\n" +
> >>>>>              "            \"@type\": \"DataSet\"\n" +
> >>>>>              "        }\n" +
> >>>>>              "    ]\n" +
> >>>>>              "}";
> >>>>>
> >>>>>          System.out.println(json);
> >>>>>
> >>>>>
> >>>
> >>
> System.out.println("============================================================");
> >>>>>          InputStream inputStream = new
> >>>>> ByteArrayInputStream(json.getBytes(Charset.forName("UTF-8")));
> >>>>>          Object jsonObject = JsonUtils.fromInputStream(inputStream);
> >>>>>          JsonLdOptions options = new JsonLdOptions("
> http://mysite.net
> >> ");
> >>>>>          System.out.println("Base : "+options.getBase());
> >>>>>          //Object compact = JsonLdProcessor.compact(jsonObject, null,
> >>>>> options);
> >>>>>          Object compact = JsonLdProcessor.expand(jsonObject,
> options);
> >>>>>          System.out.println(JsonUtils.toPrettyString(compact));
> >>>>>      }
> >>>>> }
> >>>>>
> >>>>> On Wed, Mar 4, 2020 at 9:44 AM Erich Bremer <er...@ebremer.com>
> >> wrote:
> >>>>>
> >>>>>> I will try with the other library to check.
> >>>>>>
> >>>>>> On Wed, Mar 4, 2020 at 4:29 AM Rob Vesse <rve...@dotnetrdf.org>
> >> wrote:
> >>>>>>
> >>>>>>> This may be an upstream bug or it could be a bug in how we
> configure
> >>>>>>> the underlying parser
> >>>>>>>
> >>>>>>> Jena's JSON-LD support is based upon the
> >>>>>>> https://github.com/jsonld-java/jsonld-java library so you could
> try
> >>>>>>> and reproduce your test case just using their library directly
> which
> >>> would
> >>>>>>> determine if it is their bug or our bug
> >>>>>>>
> >>>>>>> Rob
> >>>>>>>
> >>>>>>> On 04/03/2020, 00:11, "Erich Bremer" <er...@ebremer.com> wrote:
> >>>>>>>
> >>>>>>>      I'm trying to use a "@id": "./" in a jsonld file and in
> another
> >>>>>>> triple
> >>>>>>>      "@id": "picture.jpg".  The "./" will be correctly changed to
> the
> >>>>>>> base URL,
> >>>>>>>      but the "@id": "picture.jpg" just gets dropped and a blank
> node
> >> is
> >>>>>>>      created.  Below is the code segment that I used to generate
> this
> >>>>>>> output:
> >>>>>>>      {
> >>>>>>>          "@context": [
> >>>>>>>              "http://schema.org";
> >>>>>>>          ],
> >>>>>>>          "@graph": [
> >>>>>>>              {
> >>>>>>>                  "@type": "CreativeWork",
> >>>>>>>                  "@id": "picture.jpg"
> >>>>>>>              },
> >>>>>>>              {
> >>>>>>>                  "@id": "./",
> >>>>>>>                  "@type": "DataSet"
> >>>>>>>              }
> >>>>>>>          ]
> >>>>>>>      }
> >>>>>>>      _:Bd42dbcf4e4ffb76e199766bf5e4c1e4b <
> >>>>>>>      http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <
> >>>>>>>      http://schema.org/CreativeWork> .
> >>>>>>>      <http://mydomain.com> <
> >>>>>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <
> >>>>>>>      http://schema.org/DataSet> .
> >>>>>>>
> >>>>>>>      If I use https://json-ld.org/playground/ on the same jsonld,
> I
> >>> get:
> >>>>>>>
> >>>>>>>      <https://json-ld.org/playground/> <
> >>>>>>>      http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <
> >>>>>>> http://schema.org/DataSet>
> >>>>>>>      .
> >>>>>>>      <https://json-ld.org/playground/picture.jpg> <
> >>>>>>>      http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <
> >>>>>>>      http://schema.org/CreativeWork> .
> >>>>>>>
> >>>>>>>      which is what I expected.  Am I missing something here?  -
> Erich
> >>>>>>>
> >>>>>>>          String json = "{\n" +
> >>>>>>>      "    \"@context\": [\n" +
> >>>>>>>      "        \"http://schema.org\"\n"; +
> >>>>>>>      "    ],\n" +
> >>>>>>>      "    \"@graph\": [\n" +
> >>>>>>>      "        {\n" +
> >>>>>>>      "            \"@type\": \"CreativeWork\",\n" +
> >>>>>>>      "            \"@id\": \"picture.jpg\"\n" +
> >>>>>>>      "        },\n" +
> >>>>>>>      "        {\n" +
> >>>>>>>      "            \"@id\": \"./\",\n" +
> >>>>>>>      "            \"@type\": \"DataSet\"\n" +
> >>>>>>>      "        }\n" +
> >>>>>>>      "    ]\n" +
> >>>>>>>      "}";
> >>>>>>>          System.out.println(json);
> >>>>>>>          Model m = ModelFactory.createDefaultModel();
> >>>>>>>          InputStream inputStream = new
> >>>>>>>      ByteArrayInputStream(json.getBytes(Charset.forName("UTF-8")));
> >>>>>>>          RDFParser.create()
> >>>>>>>              .base("http://mydomain.com";)
> >>>>>>>              .source(inputStream)
> >>>>>>>              .lang(RDFLanguages.JSONLD)
> >>>>>>>              .parse(m);
> >>>>>>>          RDFDataMgr.write(System.out, m, RDFFormat.NQUADS) ;
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>
> >>
> >
>

Reply via email to