2

Jena SPARQL クエリの結果から .txt または .xls ファイル出力を作成する方法を知りたいです。誰でも助けることができますか?

ここにコードの一部

InputStream in = new FileInputStream(new File("./src/myfile.owl"));

                Model model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, null);
                model.read(in, null);
                in.close();

                String queryString = 
                        "prefix : <http://www.semanticweb.org/thato/ontologies/2012/10/9/thesis_ontology_1try#> "  +    
                        "prefix rdfs: <" + RDFS.getURI() + "> "           +
                        "prefix owl: <" + OWL.getURI() + "> "             +
                        "prefix rdf: <" + RDF.getURI() + "> "             +
                        "select  ?Model  " +
                        "where {" +
                        "{?Model rdf:type :ApplicationModel. "      +
                        "?Model :hasDomain ?domain.    "                  +
                        "?domain :domainCode ?domaincode. "               +
                        "FILTER (?domaincode =" + "'"+ domainElement.getAttribute(attrDomain) + "'"+ ")"               +
                        "?Model :hasPhase ?phase." +
                        "?phase :name ?phasecode. "               +
                        "FILTER (?phasecode = "+ "'"+ phaseElement.getAttribute(attrPhase)+"'"+")"  +
                        "?Model :hasLevelOfDetail ?lod." +
                        "?lod :name ?lodcode."               +
                        "FILTER (?lodcode = "+ lodElement.getAttribute(attrLOD) +")"    +
                        "}"
                        ;
                Query query = QueryFactory.create(queryString);
                QueryExecution qe = QueryExecutionFactory.create(query, model);
                ResultSet results = qe.execSelect();
                ResultSetFormatter.out(System.out, results, query);
                qe.close();

        }
    }
4

1 に答える 1

6

出力の形式をどのように見せたいかについては実際には説明していませんが、とにかく答えるのに苦労します。

Jena は、ASCII テーブル スタイルである結果のテキスト ベースのシリアル化を生成します。これは次のように取得できます。

ResultSetFormatter.out(System.out, results, query);

これはあなたのコードが既に行っていることなので、この形式はあなたにとって満足のいくものではないと思いますか?

Excel スプレッドシートを直接生成することはできませんが、もちろん Excel にインポートできる CSV を生成できます。

ResultSetFormatter.outputAsCSV(System.out, results);

ただし、CSV シリアライゼーションは不可逆シリアライゼーションであり、URI を省略形に短縮しません。この仕様については、SPARQL 1.1 Query Results CSV and TSVを参照してください。

実際のファイルに書き込みたい場合System.outは、適切なOutputStream実装に切り替えるだけです。FileOutputStream

于 2013-01-30T10:34:49.710 に答える