python – 在RDFLIB中使用前缀
作者:互联网
我想在rdflib中使用短前缀来指定命名空间但我遇到了麻烦.我认为答案必须非常简单.这是违规代码:
g = rdflib.parse("some_rdf.rdf")
rdf=rdflib.Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
print "Name Spaces:"
for ns in g.namespaces():
print ns
print "Matching Triples"
print "length of type full uri",len([i for i in g.triples((None,rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),None))])
print "length of type truncated uri",len([i for i in g.triples((None,rdflib.term.URIRef('rdf:type'),None))])
print "length of type , using namespace",len([i for i in g.triples((None,rdf.type,None))])
输出是:
Name Spaces:
('xml', rdflib.term.URIRef('http://www.w3.org/XML/1998/namespace'))
(u'foaf', rdflib.term.URIRef('http://xmlns.com/foaf/0.1/'))
(u'z', rdflib.term.URIRef('http://www.zotero.org/namespaces/export#'))
('rdfs', rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#'))
(u'bib', rdflib.term.URIRef('http://purl.org/net/biblio#'))
(u'dc', rdflib.term.URIRef('http://purl.org/dc/elements/1.1/'))
(u'prism', rdflib.term.URIRef('http://prismstandard.org/namespaces/1.2/basic/'))
('rdf', rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#'))
(u'dcterms', rdflib.term.URIRef('http://purl.org/dc/terms/'))
Matching Triples
length of type full uri 132
length of type truncated uri 0 !!!This is wrong should be 132
length of type , using namespace 132
我究竟做错了什么?
解决方法:
他们在第二种情况下尝试使用它的方式不受RDFLib的支持.
你可以这样做……
RDF = rdflib.Namespace( “http://www.w3.org/1999/02/22-rdf-syntax-ns#”)
和
rdflib.term.URIRef(rdf’type’)
要么
rdflib.term.URIRef(RDF [ ‘类型’])
我非常喜欢他们在你的第三种情况下表达的方式,为什么不坚持那个呢?
顺便说一句 – RDF命名空间已经在RDFLib中创建了,你可以做…
from rdflib.namespace import RDF
#RDF <-- rdf.namespace.ClosedNamespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#')
标签:python,rdf,rdflib 来源: https://codeday.me/bug/20190626/1297656.html