Apache Jena Textが rdf ファイルで動作する公式の例を作成しようとしています。公式の例はここに示されています。
正直なところ、ドキュメントが少なすぎて、例が一般的すぎると思います。例として提供される実際のrdfファイルは提供されておらず、構成する必要のあるものがたくさんあります。この RDF ファイルを分析しようとしています。
- アップデート -
この質問へのコメントに記載されているように、公式の例で使用されているファイルを見つけました。
したがって、元の例と foaf.rdf ファイルを組み合わせて、次の ttl ファイルを定義しました。今、私はファイルを持っていますfoaf.ttl
:
@prefix : <http://localhost/jena_example/#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:T1 rdfs:label "X0 X1 X2" .
:T2 rdfs:label "X10 X11 X12" .
:B1 rdfs:label "X1" .
:B2 foaf:name "X1" .
:B3 foaf:name "Sean" .
:Sean
a foaf:Person ;
foaf:name "Sean Palmer" .
:Tim_Bray
a foaf:Person ;
foaf:name "X1" .
:me
foaf:name "Oshani Seneviratne" .
:John_Gage
a foaf:Person ;
foaf:img <http://upload.wikimedia.org/wikipedia/commons/d/de/John_Gage.jpg> ;
foaf:name "John Gage" .
したがって、これまでに述べた元の Java ファイルに関して、メインに次のように設定しました。
public static void main(String [] args){
TextQuery.init();
Dataset ds = createCode();
//Dataset ds = createAssembler() ;
loadData(ds, "foaf.ttl") ;
queryData(ds) ;
}
私が持っているqueryData
方法では:
String pre = StrUtils.strjoinNL
( "PREFIX : <http://localhost/jena_example/#>"
, "PREFIX dc: <http://purl.org/dc/elements/1.1/>"
, "PREFIX con: <http://www.w3.org/2000/10/swap/pim/contact#>"
, "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>"
, "PREFIX foaf: <http://xmlns.com/foaf/0.1/>"
, "PREFIX s: <http://www.w3.org/2000/01/rdf-schema#>"
, "PREFIX owl: <http://www.w3.org/2002/07/owl#>"
, "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>"
, "PREFIX cc: <http://creativecommons.org/ns#>"
, "PREFIX text: <http://jena.apache.org/text#>"
, "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>") ;
String qs = StrUtils.strjoinNL
( "SELECT * "
, " { ?res text:query ('X*' 10) ;"
, " rdfs:label ?label"
, " }") ;
そしてcreateCode()
私は持っています:
// Define the index mapping
EntityDefinition entDef = new EntityDefinition("uri", "text", RDFS.label.asNode()) ;
結果は次のとおりです。
-----------------------
| res | label |
=======================
| :T1 | "X0 X1 X2" |
| :T2 | "X10 X11 X12" |
| :B1 | "X1" |
-----------------------
ただし、X1 はトリプルにも含まれていたと報告しています。
:B2 foaf:name "X1" .
しかしB2
、結果セットにはありません。「インデックスを定義する必要があります」と言う人もいるかもしれません。さて、非常に奇妙なことは、私が設定した場合createCode()
:
// Define the index mapping
EntityDefinition entDef = new EntityDefinition("blablabla", "blablabla", RDFS.label.asNode()) ;
結果は変わりません!
では、の役割はEntityDefinition
何ですか?私は何を間違っていますか?