rdfjs/rdfxml-streaming-parser.js

Relative IRIs containing a forward slash and a colon

wouterbeek opened this issue · 0 comments

Files that contain rdf:about="{x}/{y}:{z}" are incorrectly parsed ATM.

Example dataset:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="https://example.com/default/"
         xml:base="https://example.com/base/">
  <C rdf:about="x/y:z">
  </C>
</rdf:RDF>

The expected behavior / reproducible with Rapper is to parse the above as:

<https://example.com/base/x/y:z> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://example.com/default/C>.

Maybe x/y:z is considered a full IRI by the parser. If so, this is incorrect because the scheme component is not allowed to contain a forward slash (/). Therefore, x/y:z should be considered a relative IRI which must be made absolute.