Как сохранить XSD.float с INF в rdflib

#python #python-2.7 #rdflib

Вопрос:

Может ли кто-нибудь сказать мне, как сохранить XSD.float значение Infinite a в качестве литерала в rdflib?

XSD.float допускает бесконечное значение и требует, чтобы оно хранилось как INF (см. Здесь).

Но оба интуитивных метода возвращаются inf вместо INF этого , что приводит к сбою с некоторыми другими анализаторами RDF:

 from rdflib import Graph, URIRef, Literal, Namespace
from rdflib.namespace import XSD

NS = Namespace("http://example.com/")

g = Graph()

attempt1 = Literal(float('inf'), datatype=XSD.float) # using a Python representation of an infinite float
g.add((NS.a, NS.b, attempt1))

attempt2 = Literal("INF", datatype=XSD.float) # directly inserting the desired output
g.add((NS.e, NS.f, attempt2))

print g.serialize()
 

должно привести к:

 <?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:ns1="http://example.com/"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>
  <rdf:Description rdf:about="http://example.com/a">
    <ns1:b rdf:datatype="http://www.w3.org/2001/XMLSchema#float">INF</ns1:b>
  </rdf:Description>
  <rdf:Description rdf:about="http://example.com/e">
    <ns1:f rdf:datatype="http://www.w3.org/2001/XMLSchema#float">INF</ns1:f>
  </rdf:Description>
</rdf:RDF>
 

но на самом деле приводит к

 <?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:ns1="http://example.com/"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>
  <rdf:Description rdf:about="http://example.com/a">
    <ns1:b rdf:datatype="http://www.w3.org/2001/XMLSchema#float">inf</ns1:b>
  </rdf:Description>
  <rdf:Description rdf:about="http://example.com/e">
    <ns1:f rdf:datatype="http://www.w3.org/2001/XMLSchema#float">inf</ns1:f>
  </rdf:Description>
</rdf:RDF>
 

Кто-нибудь знает, что я делаю неправильно или как создать обходной путь?

Для справки: я использую Python 2.7 и нет, я не могу переключиться на Python 3.x