2012-02-07 5 views

答えて

2

あなたは猛禽との2つのオプションがあります。

オプション1:が、これは超高速で、rapperコマンドラインを使用します。以下の関数は、コマンドを包むためのpythonの例です。 -cオプションは、トリプルの数を数えるだけです。パラメータlangは、RDF形式ntriples、rdfxml、turtle、...を指定するための単なるオプションです。関数は戻りコードをチェックし、何か問題が生じた場合に例外をスローします。

def rapper_count(f,lang): 
    p=subprocess.Popen(["rapper","-i",lang,"-c",f],stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
    output, err = p.communicate() 
    ret = p.poll() 
    if ret <> 0: 
     raise Exception, "Error parsing with rapper\n%s"%err 
    return int(err.split()[-2]) 

オプション2:レッドランドPython language bindingsを使用してください。次のような何かが働くだろう:

import RDF 

test_file = "/some/file" 

uri=RDF.Uri(string="file:"+test_file) 

parser=RDF.Parser(name="turtle") 
if parser is None: 
    raise Exception("Failed to create RDF.Parser raptor") 

count=0 
for s in parser.parse_as_stream(uri,uri): 
    count=count+1 

print "Parsing added",count,"statements" 

このコードはそれをチェックアウトし、example.pyから抽出された、あなたはより多くの例が表示されます。

+0

私は実際にあなたがサブプロセスで何をしているのか理解していません。あなたはマニュエルを精緻化できますか? – madCode

+0

subprocessはコマンドを実行するためのPythonルーチンです。基本的に私はラッパーユーティリティを呼び出しています。私のコードで 'rapper -c -i rdfxml some_file'を実行していたようです。関数は戻りコードをテストし、0でなければ例外をスローします。通常ラッパーは、解析が有効でないときに、0ではなく、ある値を返します。 –

関連する問題