SPARQLthon33/VirtuosoBadKnowhow

提供:TogoWiki

2017年7月6日 (木) 10:07時点におけるChi (トーク | 投稿記録)による版
移動: 案内, 検索

目次

バージョン

  • stable版 (7.2.0.1) はよさそう
    • その後のdevelopment版は、評判が良くなかった
  • 追記stable版 7.2.1 が出た(6/24)
    • 要確認

VALUESのバグ

2つめ以降の変数に値をbindできない(下の例だと、変数 ?direction が空のまま) (もとの例)

PREFIX dm: <http://learningsparql.com/ns/demo#>

SELECT * WHERE {
   VALUES (?color ?direction) {
          ( dm:red  "north" )
          ( dm:blue  "west" )
   }
}

ただし、値の組が一組だけだと大丈夫

PREFIX dm: <http://learningsparql.com/ns/demo#>

SELECT * WHERE {
   VALUES (?color ?direction) {
          ( dm:red  "north" )
   }
}


  • Virtuoso 7.0 ではこのバグはなかった?
  • Virtuoso 7.1 でバグが入った?
  • Virtuoso 7.2 で直った

BINDのバグ

SPARQLのWHERE内では基本的にトリプルパターンの記述順序は結果に影響しないが、BINDの記述位置によっては結果が返ってこなかったりエラーになるケースがある。

  • OKケース
SELECT ?label2
WHERE
{
  ?s rdfs:label ?label .
  BIND (REPLACE(?label, "hoge", "") AS ?label2)
}
  • NGケース
SELECT ?label2
WHERE
{
  BIND (REPLACE(?label, "hoge", "") AS ?label2)
  ?s rdfs:label ?label .
}

デフォルトで入っているグラフについて

デフォルトで、下記の5つのグラフが入っており、計5,819トリプルある。(調査環境:Virtuoso 7.2.0.1)


  • http://localhost:8890/sparql
    • ここに収まっている情報は、エンドポイントのURLにアクセスしたときに、service descriptionとして返される。


  • http://localhost:8890/DAV/


  • http://www.w3.org/2002/07/owl#
    • OWL2ではない。OWL1?
    • ルールとして登録されている(ルール名 http://www.w3.org/2002/07/owl#)
    • このルールおよびグラフを消しても owl:sameAs や owl:SymmetricPropertyは効いた


  • http://www.openlinksw.com/schemas/virtrdf#
    • グラフを削除してみたが、再起動すると復活した


  • http://www.w3.org/ns/ldp#
    • 7.2で追加されていたグラフ
    • グラフを削除してみたが、再起動すると復活した
    • ルールとして登録されている(ルール名 ldp)
      • ルールを削除してみたが、再起動するとルールが復活していた
    • グラフの内容は、以下の3トリプルのみ
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ldb: <http://www.w2.org/ns/ldp#> .

ldb:DirectContainer     rdfs:subClassOf ldb:Container .
ldb:BasicContainer      rdfs:subClassOf ldb:Container .
ldb:IndirectContainer   rdfs:subClassOf ldb:Container .

他に気付いたこと

  • virtuoso.dbにパスワードも保存されているようだ
  • v 7.2.0.1 から v 7.2.2.1 にしてみたが、逆に応答が遅くなった
  • isqlの方がカウントが速い
  • Virtuoso 7.2で、dbディレクトリに以下のファイルが生成されていた
    • virtuoso.cpt
    • checkpoint_in_progress


  • virtuoso-temp.db や virtuoso.pxa の役割は何?
  • なぜ > を >= にしたら IF の3段入れ子が動かない?
  • HAVINGのうれしさは何なのか


グラフ名

  • グラフ名の指定で、どの程度パフォーマンスが改善するのか?
  • V6で、グラフのリストを出したときに、大文字が小文字に変わっている
  • グラフ名の最後が/でないとき、prefixを使った省略ができる


SPARQL Service Description [1]

    <div xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns="http://www.w3.org/1999/xhtml"
         xmlns:sd="http://www.w3.org/ns/sparql-service-description#"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
         style="display:none">
       <div class="description" about="" typeof="sd:Service">
          <div rel="sd:endpoint" resource="http://mbgd.genome.ad.jp:7051/sparql"/>
          <div rel="sd:feature"
               resource="http://www.w3.org/ns/sparql-service-description#UnionDefaultGraph"/>
          <div rel="sd:feature"
               resource="http://www.w3.org/ns/sparql-service-description#DereferencesURIs"/>
          <div rel="sd:resultFormat" resource="http://www.w3.org/ns/formats/RDF_XML"/>
          <div rel="sd:resultFormat" resource="http://www.w3.org/ns/formats/Turtle"/>
          <div rel="sd:resultFormat"
               resource="http://www.w3.org/ns/formats/SPARQL_Results_CSV"/>
          <div rel="sd:resultFormat" resource="http://www.w3.org/ns/formats/N-Triples"/>
          <div rel="sd:resultFormat" resource="http://www.w3.org/ns/formats/N3"/>
          <div rel="sd:resultFormat"
               resource="http://www.w3.org/ns/formats/SPARQL_Results_JSON"/>
          <div rel="sd:resultFormat" resource="http://www.w3.org/ns/formats/RDFa"/>
          <div rel="sd:resultFormat"
               resource="http://www.w3.org/ns/formats/SPARQL_Results_XML"/>
          <div rel="sd:supportedLanguage"
               resource="http://www.w3.org/ns/sparql-service-description#SPARQL10Query"/>
          <div rel="sd:url" resource="http://mbgd.genome.ad.jp:7051/sparql"/>
       </div>
    </div>
  • HTMLの一部として返すんじゃなくて、RDFのみを返すには、どうすればいいのかな。(EBI RDFみたいに)
個人用ツール