3

以下のコードにあるリンクからアクセスできるオントロジーを開発しました。FILTERセクションを除いてコードは正常に動作しています。FILTER で equal 演算子を使用すると、何も返されません。不等号演算子 (!=) を使用すると、何もフィルタリングされません。「owl:Brands」を使用したオントロジーの Brands クラスの参照が機能していないと思います。Webクローラーにインデックスされたくないので、URLを短くしました。コードで元の URL を使用しています。短縮されたURLで元のURLにアクセスできます。エディターでオントロジーを閲覧できます。「owl:Brands」が機能していないことは確かです。他の多くの可能性を試しましたが、機能させる方法がわかりませんでした。

FILTER ステートメントがないと、owl:Brands に一致するものがないため、「FILTER(?sub!=owl:Brands)」と同じように機能します。参考までに、私は python と rdflib を使用しています。

    plugin.register(
     'sparql', rdflib.query.Processor,
     'rdfextras.sparql.processor', 'Processor')
    plugin.register(
       'sparql', rdflib.query.Result,
           'rdfextras.sparql.query', 'SPARQLQueryResult')

       qres = g.query(
             """
                PREFIX owl: <http://goo.gl/ZwwgT>
                SELECT ?class WHERE { ?sub rdfs:subClassOf ?class .
                FILTER(?sub=owl:Brands)}

                """)

       for row in qres.result:
         print(row)
4

1 に答える 1

2

例を書き間違えたか、rdflib にバグがあるとしか思えません。オントロジーをロードし、(オントロジーの展開された URL を使用して) クエリを実行し、単一の結果 Beer を取得しました。しかし、私は RDFlib を使用していませんでした。それを 1 つのテスト ケースに抽出し、RDFlib の作成者に提供して、問題を修正したり、別のデータベースの使用を検討したりできるようにすることもできます。

于 2012-11-13T12:50:00.847 に答える