2016-08-05 11 views
0

私のクエリは、2つのsparql OPTIONS句のどれが最初に画像のリストに来るかによって結果を返します。この時点ではJena ARQを使用することはできませんが、これを純粋なSPARQLクエリで解決したいと思いますが、それでもJenaを使って解決できる方法を知りたいと思います。 私のデータプレゼンテーションは以下に添付されていますが、データには画像のリストが含まれている場合があります。私のイメージ表現も下にあります。私は自分のクエリも添付しています。 イメージリストが存在する場合、sprqlクエリには2つの変数urlXとurlYが2 OPTIONSブロックで宣言されています。 OPTIONSのどちらが最初に来るかによって、その1つの変数の値が得られますが、もう1つは到達しません。問題はOPTIONS句の使用と関係しているようです。私は代わりに何を試すことができるか分からない、私はsparqlクエリの専門家ではない。画像のコレクションが存在する場合、両方の画像サイズ(dc:conformsTo)が存在するかどうかを調べ、urlXとurlYの両方の値を取得するか、存在するものを取得します。多くのあなたの時間を感謝します。 sparqlクエリ:リストからいくつかの値を取得

マイデータ表現:

@prefix dc: <http://purl.org/dc/terms/> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix lews: <http://lews.com/content/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 

lews:26331340 lews:name "the Human Good Luck Charm is Back"^^xsd:token ; 
     dc:created "2014-10-20T17:14:55.357-07:00"^^xsd:dateTime ; 
     dc:identifier "26331340"^^xsd:int ; 
     dc:modified "2016-08-04T13:43:00.897-07:00"^^xsd:dateTime ; 
     dc:title "the Human Good Luck Charm is Back" ; 
     dc:hasPart <http://lews.com/content/26331340#Images> ; 
     dc:abstract "As the World Series gets underway..." ; 
     dc:description "The super fan who rooted for the Royals is back to boost morale." ; 
     dc:subject "hoping for a World Series victory". 

<http://lews.com/content/26331340#Images> dc:identifier "Images"^^xsd:token ; 
     rdf:first lews:26331375 ; 
     rdf:rest _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331376 ; 
     rdf:li <http://lews.com/content/26331340#Images> , _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331376 , _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331377 , _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331378 , _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331379 , _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331380 ; 
     a rdf:List . 

_:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331376 rdf:first lews:26331376 ; 
     rdf:rest _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331377 . 

_:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331377 rdf:first lews:26331377 ; 
     rdf:rest _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331378 . 

_:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331378 rdf:first lews:26331378 ; 
     rdf:rest _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331379 . 

_:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331379 rdf:first lews:26331379 ; 
     rdf:rest _:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331380 . 

_:genid-15e530b0195547d9ac3f8e5e6785a747-x26331340Images26331380 rdf:first lews:26331380 ; 
     rdf:rest rdf:nil . 

マイ画像表現:

@prefix dc: <http://purl.org/dc/terms/> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix lews: <http://abcnews.com/content/> . 
@prefix mrss: <http://search.yahoo.com/mrss/> . 

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 

lews:26331376 lews:name "141020_wn_donvan0_704x396.jpg"^^xsd:token ; 
     lews:section "wnt"^^xsd:token ; 
     lews:type "Image"^^xsd:token ; 
     dc:conformsTo "704x396"^^xsd:token ; 
     dc:created "2014-10-20T17:15:09.637-07:00"^^xsd:dateTime ; 
     dc:hasFormat <http://lews.go.com/images/WNT/141020_wn_donvan0_704x396.jpg> ; 
     dc:identifier "26331376"^^xsd:int ; 
     dc:isPartOf <http://lews.go.com/WNT> ; 
     dc:modified "2014-10-20T17:15:09.947-07:00"^^xsd:dateTime ; 
     dc:type "StillImage"^^xsd:token ; 
     mrss:height "396"^^xsd:int ; 
     mrss:width "704"^^xsd:int ; 
     xsd:date "2014-10-20"^^xsd:date ; 
     xsd:gMonthDay "--10-20"^^xsd:gMonthDay ; 
     xsd:gYear "2014"^^xsd:gYear ; 
     xsd:gYearMonth "2014-10"^^xsd:gYearMonth . 

マイクエリ:

PREFIX dc:  <http://purl.org/dc/terms/> 
PREFIX mrss: <http://search.yahoo.com/mrss/> 
PREFIX search: <http://www.openrdf.org/contrib/lucenesail#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX lews: <http://abcnews.com/content/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT ?id ?title ?description ?urlX ?urlY ?section ?imgName 
    ?subject dc:identifier ?id. 

    OPTIONAL {?subject dc:title ?title.} 
    OPTIONAL {?subject dc:description ?description.} 
    OPTIONAL {?subject dc:isPartOf ?section.} 

    OPTIONAL { 
       ?subject dc:hasPart ?imageCol. 
       ?imageCol dc:identifier "Images"^^xsd:token. 

       OPTIONAL{ 
        ?imageCol rdf:li ?bnode. 
        ?bnode rdf:first ?image. 
        ?image lews:name ?imgName;        
          dc:conformsTo "4x3"; 
          dc:hasFormat ?urlX.         
       }   
       OPTIONAL{ 
        ?imageCol rdf:li ?bnode. 
        ?bnode rdf:first ?image. 
        ?image lews:name ?imgName;        
          dc:conformsTo "16x9"; 
          dc:hasFormat ?urlY.         
       }   

    } 

} 
LIMIT ${limit} 
+1

データアイテムによって集計とグループ化を使用し、次に「サンプル」を使用して画像サンプルを選択できます。しかし、最初は、たとえば、説明されているような面白いSPARQL 1.1プロパティパスを使用して、サブセレクトのリストを解決する必要があると思います。ここに:http://stackoverflow.com/questions/17523804/is-it-possible-to-get-the-position-of-an-element-in-an-rdf-collection-in-sparql – AKSW

+0

私は見た集計では、私のデータでどのように動作するのかわかりません。 – user2917629

答えて

1

私はそれはあなたが望む何であるかを正しく理解している場合は、あなただけに必要オプションを別々にグループ化する:

PREFIX dc:  <http://purl.org/dc/terms/> 
PREFIX mrss: <http://search.yahoo.com/mrss/> 
PREFIX search: <http://www.openrdf.org/contrib/lucenesail#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX lews: <http://abcnews.com/content/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT ?id ?title ?description ?urlX ?urlY ?section ?imgName { 
    ?subject dc:identifier ?id. 

    OPTIONAL { ?subject dc:title ?title. } 
    OPTIONAL { ?subject dc:description ?description. } 
    OPTIONAL { ?subject dc:isPartOf ?section. } 

    OPTIONAL { 
     ?subject dc:hasPart ?imageCol. 
     ?imageCol dc:identifier "Images"^^xsd:token. 

     OPTIONAL { 
      ?imageCol rdf:li ?bnode. 
      ?bnode rdf:first ?image. 
      ?image lews:name ?imgName; 
      # Here we optionally bind ?urlX and/or ?urlY 
      OPTIONAL { 
       ?image dc:conformsTo "4x3"; 
        dc:hasFormat ?urlX. 
      } 
      OPTIONAL { 
       ?image dc:conformsTo "16x9"; 
        dc:hasFormat ?urlY. 
      } 
     } 
    } 
} 
関連する問題