6

Notation3ファイルで表されるトリプルをどのように解析してデータベースにロードしますか?私はJenaSesameにある程度精通していますが、これらは完全なNotation3ではなく、RDFまたはTurtleを処理するように調整されているように見えました。

N3を処理するための堅牢なツールは比較的少ないことがわかりました。私が見つけたいくつかはここにリストされており、基本的なコマンドラインアクションのみを実行でき、標準のパッケージ化、配布、またはメンテナンスがないように見える大まかなPythonスクリプトのみで構成されています。デフォルトのPythonライブラリはあるように見えますnotation3.pyが、そのホームページは1つも見つかりませんでした。また、インターネット上に数十の異なるバージョンが散在していることがわかりました。

たとえば、植物分類を表す次のN3があるとします。

{
   []
       :genus "Abies" ;
       :species "alba" ;
       :name [:value "Silver Fir" ; :usage "common" ; :language "English" ] ;
       :name [:value "European Silver Fir" ; :usage "common" ; :language "English" ] ;
       :name [:value "abeto blanco" ; :usage "common" ; :language "Spanish" ] ;
       :name [:value "abeto plateado" ; :usage "common" ; :language "Spanish" ] ;
       :name [:value "Edeltanne" ; :usage "common" ; :language "German" ] ;
       :name [:value "Silbertanne" ; :usage "common" ; :language "German" ] ;
       :name [:value "Weißtanne" ; :usage "common" ; :language "German" ] ;
       :stem!:type :erect ;
       :stem!:height [ :value!:start 30.0 ; :value!:end 50.0 ; :value!:units "m" ] ;
       :bark!:color :grey ;
       :bark!:ridges :irregular ;
       :foliage!:seasonality :evergreen ;
       :foliage!:type :needle ;
       :foliage!:arrangement :alternate ;
       :foliage!:length [ :value!:start 1.0 ; :value!:end 3.0 ; :value!:units "cm" ] ;
       :foliage!:width [ :value!:start 0.2 ; :value!:end 0.3 ; :value!:units "cm" ] ;
       :foliage!:color :green ;
       :foliage!:spiney :FALSE ;
       :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :brown ] ;
       :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :yellow ] ;
       :flower [ :gender :female ; :inflorescence :catkin ; :sense :straight ; :color :pink ] ;
       :fruit [ :kind :cone ; :color :brown ; ] ;
}
:is-a :botanical-classification ;
:source [
   :uri <http://originating/site> ;
   :name "John Doe" ;
   :data-collection-date "2005-01-01" ;
] ;
:transcribed-by "Al Nonymous" ;
:transcription-date "2010-09-01" .

これ(および場合によっては数千の同様のレコード)をデータベースにロードして、「2010年に一般的なスペイン語の名前を含むレコードを誰が転記したか」などの任意のクエリを実行できるようにしたい。または「X属に関連する平均的な花の色は何ですか?」

これは現在、現在のセマンティックWebツールとN3で行うのが実用的ですか?

4

1 に答える 1

3

基本的な問題は、N3が常に実験的な表記法であったことです。つまり、完全な言語が広く実装されることはありませんでした。このドキュメントの図は非常に有益です。サンプルはグラフリテラルを使用しており、これらは広く実装されているN3サブセットのいずれの外側にもあります。名前付きグラフがより広く使用されるようになったため、入力ファイルを直接解析することによってではなく、Jenaを含むほとんどのRDFシステムで同じ情報を表現することが可能になります。

私の場合は、おそらく文字列とテンプレートに優れた言語(Rubyなど)を使用して、フロントエンドの変換ステージを作成することを検討しています。次に、入力ファイルを標準のRDFプロセッサが処理できる形式に変換できます。たとえば、「Al Nonymous」によって作成されたステートメントを示すグラフリテラルは、その分類を主張するAlのアクションを示すbNodeに変換できます。または、リテラルから各グラフを抽出し、合成されたグラフ名でファイルに保存して、現在のネストされたグラフの構造を保持することもできます。同様に、property!path表記は、少し冗長になるという犠牲を払って、標準のRDFに簡単に書き直すことができます。

または、データプロバイダーに依頼して、より簡単に処理できる形式の出力を提供してください。

于 2011-03-09T13:33:10.453 に答える