私は RDF をいじっています。特に、rdf ストレージに格納されている情報にアクセスする方法を考えています。従来のリレーショナル データベースとの大きな違いは、事前定義されたスキーマがないことです。リレーショナル データベースでは、テーブルにそれらの列があることがわかっており、技術的に各行をクラスのインスタンスにマップできます。このクラスには、明確に定義されたメソッドと、明確に定義された属性があります。
スキーマのないシステムでは、特定の情報にどのデータが関連付けられているかわかりません。これは、事前定義されていない任意の数の列を持つデータベース テーブルを持つようなものであり、すべての行はこれらの列の任意の数にデータを持つことができます。
ObjectRelational マッパーと同様に、オブジェクト RDF マッパーがあります。RDFAlchemy と SuRF は、私が現在プレイしている 2 つです。基本的に、それらは Resource オブジェクトを提供し、そのメソッドと属性は動的に提供されます。それは理にかなっています...しかし、それはそれほど簡単ではありません。多くの場合、適切に定義されたインターフェイスを持ち、モデル オブジェクトでデータを設定および取得するときに何が起こっているかをより詳細に制御することを好みます。このような一般的なアクセス権を持つことは、ある意味で物事を困難にします。
私が指摘したもう 1 つの (そして最も重要な) ことは、たとえ一般的に 、スキーマのないデータは、リソースに関する任意の情報を提供することが期待されています。実際には、一緒になる傾向がある「情報のクラス」を多かれ少なかれ知っています。もちろん、追加情報の存在を排除することはできませんが、これは場合によっては標準ではなく例外ですが、例外は厳密なスキーマにとっては混乱を招くほど十分に賢明ですが. 記事の rdf 表現 (たとえば、RSS/ATOM フィードなど) では、記述されたリソースの用語を知っており、それらを明確に定義されたオブジェクトにマップできます。追加情報を提供する場合は、拡張オブジェクト (基本オブジェクトから継承) を定義して、拡張情報へのアクセサーを提供できます。したがって、ある意味では、拡張可能な「スキーマ指向オブジェクト」を使用して、スキーマのないデータを処理します。関心のある特定の追加情報を見たい場合。
私の質問は、スキーマレス データ ストレージの実際の使用方法に関するあなたの経験に関連しています。それらをオブジェクト指向の世界にどのようにマッピングして、スキーマレス ストレージの「ベア メタル」に近づきすぎずに上手に使用できるようにするのでしょうか? (RelDB 用語では、あまり SQL を使用せず、テーブル構造を直接いじることはありません)
アクセスは非常に一般的なものになる運命にあるのでしょうか (たとえば、SuRF の「プラグイン属性」は、データにアクセスするために必要な最高の、最も特殊化されたレベルです)、または合意された特定の便利なスキーマに特化したクラスを持つことも良いアプローチですが、新しい予期しない関連データにアクセスするためのクラスが急増するリスクはありますか?