2016-05-02 13 views
1

私はオブジェクト(NamedIndividual)とその座標(X、Y)をdatatypeという形で持つオントロジーを持っています。このような 個々の表情:SPARQL結果セットからデータを取得する

Model model = FileManager.get().loadModel("/home/aidos/workspace/OntologicalFramework/files/ontologies/NewOnt.owl"); 
String queryString = "//THE QUERY I'VE WRITTEN ABOVE IN A STRING FORM" 
Query query = QueryFactory.create(queryString); 
QueryExecution qexec = QueryExecutionFactory.create(query, model); 
ResultSet results = qexec.execSelect(); 
ResultSetFormatter.out(System.out, results, query); 

これはに印刷された結果セットを私に戻っています:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX onto: <http://www.semanticweb.org/PredefinedOntology#> 

SELECT ?objects ?X ?Y 
    WHERE { 
?objects rdf:type owl:NamedIndividual 
; onto:X ?X 
; onto:Y ?Y 
FILTER regex(str(?objects),"Door1") 
} 

Eclipseでの私のクエリはこれです:

<owl:NamedIndividual rdf:about="http://www.semanticweb.org/PredefinedOntology#Door1"> 
<rdf:type rdf:resource="http://www.semanticweb.org/PredefinedOntology#Objects"/> 
<Y rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</Y> 
<X rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">33</X> 
</owl:NamedIndividual> 

私はSPARQLクエリを行います私のIDEのコンソール:

-------------------------- 
| objects  | X | Y | 
========================== 
| onto:Window1 | 56 | 28 | 
-------------------------- 

私が必要とするのは、整数を56と28にしてint xint yに格納することです。 誰かに教えてもらえますか? プロセスのデバッグ中Iはnext()方法の使用を通じてQuerySolutionとしてResultSet result

答えて

3

ResultSet各行へのアクセスを提供するブランチで呼ばDataSetImpldatasetを見つけました。次に、getLiteral(String)のようなメソッドを使用して、指定された名前の変数のリテラル値を取得できます。 GET リソースを返しRDFNode、およびのgetResource(String)を返し(文字列):あまりにも、変数の値を取得するための他のいくつかの方法があります。数字はリテラルため、RDFノードであるが、数字が上がらないので、あなたは、のgetResource()を使用することはできませんので、この場合は

、あなたは」のget()またはgetLiteral()を使用することができます(すなわち、IRIではない)。

+0

良い説明。いくつかの追加:まず、リサーラルやリソースが返ってくることを確実にすることができない場合は、 'get()'を使用して ' RDFNode'オブジェクトを変換する。次に、上記のサンプルコードの場合の問題を避けるために、結果セットを出力したら、それを再度反復することはできません。ああ、かつてないほど重要なのは、Jena ARQのドキュメントです。 – AKSW