2011-01-10 9 views
4

短いプレフィックスを使用して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 

私が間違って何をしているのですか?

答えて

4

2番目のケースで使用しようとしている方法は、RDFLibではサポートされていません。 あなたはなぜ、私はかなり彼らは道それはあなたの三番目のケースで表現されますように...のような

rdf=rdflib.Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#")

rdflib.term.URIRef(rdf+'type')

または

rdflib.term.URIRef(rdf['type'])

を行うことができますそれに固執しない?ところで

-

from rdflib.namespace import RDF 
#RDF <-- rdf.namespace.ClosedNamespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#') 
+0

RDF名前空間がすでにあなたが行うことができますRDFLibに作成されますが...ありがとう、これは動作します。私は第三の方法がいいことに同意し、今から使うつもりです。 – tjb

関連する問題