def write_binding(self, name, val):
assert self._resultStarted
attr_vals = {
(None, u'name'): unicode(name),
}
attr_qnames = {
(None, u'name'): u'name',
}
self.writer.startElementNS(
(SPARQL_XML_NAMESPACE, u'binding'),
u'binding', AttributesNSImpl(attr_vals, attr_qnames))
if isinstance(val, URIRef):
self.writer.startElementNS(
(SPARQL_XML_NAMESPACE, u'uri'),
u'uri', AttributesNSImpl({}, {}))
self.writer.characters(val)
self.writer.endElementNS(
(SPARQL_XML_NAMESPACE, u'uri'), u'uri')
elif isinstance(val, BNode):
self.writer.startElementNS(
(SPARQL_XML_NAMESPACE, u'bnode'),
u'bnode', AttributesNSImpl({}, {}))
self.writer.characters(val)
self.writer.endElementNS(
(SPARQL_XML_NAMESPACE, u'bnode'), u'bnode')
elif isinstance(val, Literal):
attr_vals = {}
attr_qnames = {}
if val.language:
attr_vals[(XML_NAMESPACE, u'lang')] = val.language
attr_qnames[(XML_NAMESPACE, u'lang')] = u"xml:lang"
elif val.datatype:
attr_vals[(None, u'datatype')] = val.datatype
attr_qnames[(None, u'datatype')] = u'datatype'
self.writer.startElementNS(
(SPARQL_XML_NAMESPACE, u'literal'),
u'literal', AttributesNSImpl(attr_vals, attr_qnames))
self.writer.characters(val)
self.writer.endElementNS(
(SPARQL_XML_NAMESPACE, u'literal'), u'literal')
else:
raise Exception("Unsupported RDF term: %s" % val)
self.writer.endElementNS(
(SPARQL_XML_NAMESPACE, u'binding'), u'binding')
评论列表
文章目录