Rdflib命名空间-如何避免“无法分割URI”错误?

时间:2018-06-22 16:44:53

标签: python namespaces rdflib

我想在rdflib中定义我自己的名称空间“ http://example.org/”,但是显然不能这样做。无法弄清楚什么是正确的方法...

In [1]: import rdflib
INFO:rdflib:RDFLib Version: 4.2.2

In [2]: g = rdflib.Graph()

In [3]: from rdflib import Namespace

In [4]: n1 = Namespace("http://example.org/")

In [5]: u1 = n1['1']

In [6]: u1
Out[6]: rdflib.term.URIRef(u'http://example.org/1')

In [7]: g.bind('ex', n1)

In [8]: g.add((u1, u1, u1)
   ...: )

In [9]: g.serialize()
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-9-25a09aa9a7b5> in <module>()
----> 1 g.serialize()

/usr/local/lib/python2.7/site-packages/rdflib/graph.pyc in serialize(self, destination, format, base, encoding, **args)
    937         if destination is None:
    938             stream = BytesIO()
--> 939             serializer.serialize(stream, base=base, encoding=encoding, **args)
    940             return stream.getvalue()
    941         if hasattr(destination, "write"):

/usr/local/lib/python2.7/site-packages/rdflib/plugins/serializers/rdfxml.pyc in serialize(self, stream, base, encoding, **args)
     64         # assert(
     65         #    namespaces["http://www.w3.org/1999/02/22-rdf-syntax-ns#"]=='rdf')
---> 66         bindings = list(self.__bindings())
     67         bindings.sort()
     68

/usr/local/lib/python2.7/site-packages/rdflib/plugins/serializers/rdfxml.pyc in __bindings(self)
     31
     32         for predicate in set(store.predicates()):
---> 33             prefix, namespace, name = nm.compute_qname(predicate)
     34             bindings[prefix] = URIRef(namespace)
     35

/usr/local/lib/python2.7/site-packages/rdflib/namespace.pyc in compute_qname(self, uri, generate)
    328
    329         if not uri in self.__cache:
--> 330             namespace, name = split_uri(uri)
    331             namespace = URIRef(namespace)
    332             prefix = self.store.prefix(namespace)

/usr/local/lib/python2.7/site-packages/rdflib/namespace.pyc in split_uri(uri)
    500                     return (ns, ln)
    501             break
--> 502     raise Exception("Can't split '%s'" % uri)

Exception: Can't split 'http://example.org/1'

0 个答案:

没有答案