2016-09-28 9 views
1

私のRDF/OWLオントロジーは、通常はテキストエディタで編集するgitリポジトリのRDF/XMLファイルとしてバージョン化されていますが、手動で長すぎるリファクタリングを計画しており、正規表現だけでは不可能です。SPARQL RDF/XMLの最小差分を更新しますか?

具体的には、オブジェクトのクラスに基づいて2つのより具体的なプロパティで汎用プロパティを分割したいと考えています。

:Alice :responsibleFor :ACME. 
:Bob :responsibleFor :Cooking. 

例えば

は私だけではなく、この特定のプロパティのリファクタリングのためだけでなく、一般的なケースのための答えに興味

:Alice :responsibleForCompany :ACME. 
:Bob :responsibleForTask :Cooking. 

になるはずです。

私の考えは、ファイルをVirtuoso Triple Storeにロードし、SPARQL Updateクエリを使用してプロパティをリファクタリングし、RDF/XMLファイルとしてエクスポートすることです。問題は、これはgitを混乱させ、古いコミットを元に戻すなどの古い履歴の使用を不可能にする、順序とフォーマットを維持しないことです。

diffを最小限に抑えるために、ファイル構造を直接操作する方法はありますか?

答えて

1

マイケルの答えは優れた解決策ですが、gitの履歴を使用したい場合は、別の構文形式に切り替えることをおすすめします。 RDF/XMLは、XML(つまり複数の行にまたがるネストされた要素)であり、特にXMLを記述するツールがブロックを完全に再配置することができるため、行単位の差分では非常に面倒です(RDF/XML要素構文レベル、そしてこのようなことを強制することは非常に困難です)。

N-TriplesやN-Quadsのようなラインベースの構文形式に切り替え、Virtuosoからエクスポートするときに標準的な順序付けを行います(ORDER BY句をエクスポートメカニズムとして使用してSPARQLクエリを使用する必要があります) 。

3

SPARQL更新プログラムを使って変更を加える場合、コミットを元に戻すためのgitの履歴はあまり気にしません。それらの更新クエリはあなたの差分になります。一部のクエリは変更を元に戻すのは簡単ですが、オントロジーの基本バージョンを使用している場合は、N個の最新の更新をすべて適用するとN個のコミットが効果的に元に戻されます。

これは長年にわたり使用してきた戦略であり、うまく機能します。

関連する問題