2016-07-26 22 views
0

データ型プロパティの値を分割するために、関数apf:strsplitを使用しようとしています。私はいくつかの例を探してそこに示されたようにしましたが、私の場合、fusekiはエラーを返します。Jenaのapf:strsplitの使い方:fuseki

マイクエリ:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dbo: <http://dbpedia.org/> 
PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX apf: <http://jena.hpl.hp.com/ARQ/property#> 
prefix xsd: <http://www.w3.org/2001/XMLSchema#> 

select ?s ?member 
where{ 
    ?s a dbo:MusicalArtist . 
    ?s dbp:hometown ?p . 
    {select ?member 
    where{ 
     ?member apf:strSplit(?p " ") . 
    } 
    } 
} 

結果:私のインスタンスの

Error 500: ?/p is not a literal node 
Fuseki - version 2.3.1 (Build date: 2015-12-08T09:24:07+0000) 

例:?

<http://example.com/resource/6> 
    rdf:type dbo:Actor ; 
    rdf:type dbo:MusicalArtist ; 
    rdf:type dbo:Person ; 
    rdf:type owl:NamedIndividual ; 
    dbo:bloodGroup "n"@en ; 
    dbo:spouse <http://example.com/resource/11> ; 
    dbo:spouseName "Angelina Jolie" ; 
    dbp:hometown "Dallas"^^xsd:string ; 
    foaf:name "Brad Pettitt" ; 
. 
<http://example.com/resource/17> 
    rdf:type dbo:MusicalArtist ; 
    rdf:type owl:NamedIndividual ; 
    dbp:hometown "El Paço"^^xsd:string ; 
    foaf:name "Harrison Ford" ; 
. 

私は "他のテキスト" でのpを変更する、それが動作し、結果:

1 <http://example.com/resource/6> "other" 
2 <http://example.com/resource/6> "text" 
3 <http://example.com/resource/3> "other" 
4 <http://example.com/resource/3> "text" 

私はstr(?p)、?p ^^ xsd:string?p ^^ xsd:literalを入れてみましたが、何も動作しませんでした。 私はインターネットを見ましたが、私が使用できるものは何も見つかりませんでした。

誰か提案があります。どのようにこのクエリを修正できますか?私は任意のヘルプ:-(ないアイデアは非常に高く評価されません。進歩で

おかげで、

よろしく、

ヴァレリア

+0

「dbp:hometown」の値は必ずしもリテラルではないと思います。 DBpediaからデータを取得した場合は、 'http:// dbpedia.org/property /'名前空間のプロパティが型付けされていない、つまりオブジェクトとデータのプロパティが区別されていないことに注意してください。値はURIとリテラルの両方になります。 – AKSW

+0

サブ選択を使用する必要がありますか、その理由は何ですか?そして 'apf:strSplit(str(?p)" ")を使うとどうなりますか? ' – AKSW

+0

strSplitを使用するときにネストされたクエリを使用する必要があると考えました。私は間違っていた。 – ValQc

答えて

2

をあなたは評価され、結果が結合されるネストされたSELECTを持っています前の部分ではSELECT ?member?pを隠します(実際には別の変数です(ARQは?/pに名前を変更しました)。

内側のSELECT:

select ?s ?member 
where{ 
    ?s a dbo:MusicalArtist . 
    ?s dbp:hometown ?p . 
    ?member apf:strSplit(?p " ") . 
    } 
} 
関連する問題