Latest RDF parser chokes on empty namespace URI · Issue #288 · RDFLib/rdflib (original) (raw)

@gklyne

In my ongoing efforts to bring my code up to the latest rdflib, I find a new problem with the RDF/XML parser. The file concern passes the W3C RDF validator, and contains xmlns="" in its rdf:RDF element.

The full test file is:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rdf:RDF [
    <!ENTITY rdf     "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY rdfs    "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY owl     "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd     "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY xml     "http://www.w3.org/XML/1998/namespace" >
    <!ENTITY rdfg    "http://www.w3.org/2004/03/trix/rdfg-1/" >
    <!ENTITY ore     "http://www.openarchives.org/ore/terms/" >
    <!ENTITY ao      "http://purl.org/ao/" >
    <!ENTITY dcterms "http://purl.org/dc/terms/" >
    <!ENTITY foaf    "http://xmlns.com/foaf/0.1/" >
    <!ENTITY ro      "http://purl.org/wf4ever/ro#" >
    <!ENTITY wfprov  "http://purl.org/wf4ever/wfprov#" >
    <!ENTITY wfdesc  "http://purl.org/wf4ever/wfdesc#" >
]>

<rdf:RDF xmlns=""
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:rdfg="http://www.w3.org/2004/03/trix/rdfg-1/"
     xmlns:ore="http://www.openarchives.org/ore/terms/"
     xmlns:ao="http://purl.org/ao/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:foaf="http://xmlns.com/foaf/0.1/"
     xmlns:ro="http://purl.org/wf4ever/ro#"
     xmlns:wfprov="http://purl.org/wf4ever/wfprov#"
     xmlns:wfdesc="http://purl.org/wf4ever/wfdesc#"
>

  <!-- Workflow instance -->

  <wfdesc:Workflow rdf:about="docs/mkjson.sh">
    <rdfs:label>ODS to JSON</rdfs:label>
    <rdfs:comment>Converts multiple ODS files to JSON for processing by Dexy</rdfs:comment>

    <wfdesc:hasInput>
      <wfdesc:Input>
        <wfdesc:hasArtifact rdf:resource="data/UserRequirements-gen.ods" />
      </wfdesc:Input>
    </wfdesc:hasInput>
    <wfdesc:hasInput>
      <wfdesc:Input>
        <wfdesc:hasArtifact rdf:resource="data/UserRequirements-astro.ods" />
      </wfdesc:Input>
    </wfdesc:hasInput>
    <wfdesc:hasInput>
      <wfdesc:Input>
        <wfdesc:hasArtifact rdf:resource="data/UserRequirements-bio.ods" />
      </wfdesc:Input>
    </wfdesc:hasInput>

    <wfdesc:hasOutput>
      <wfdesc:Output>
        <wfdesc:hasArtifact rdf:resource="docs/UserRequirements-gen.json" />
      </wfdesc:Output>
    </wfdesc:hasOutput>
    <wfdesc:hasOutput>
      <wfdesc:Output>
        <wfdesc:hasArtifact rdf:resource="docs/UserRequirements-astro.json" />
      </wfdesc:Output>
    </wfdesc:hasOutput>
    <wfdesc:hasOutput>
      <wfdesc:Output>
        <wfdesc:hasArtifact rdf:resource="docs/UserRequirements-bio.json" />
      </wfdesc:Output>
    </wfdesc:hasOutput>

  </wfdesc:Workflow>

</rdf:RDF>