代わりの解決法は、物事をより明示的に定義できる関係を辿ることです。たとえば、
関係を定義するには、相互の関係のコンテキストを提供する役割を定義することから始めます。たとえば:
insert
thing-on-top-of-table sub role;
table-with-thing-on-top sub role;
あなたは、これらの役割が関係するとエンティティにリンクする方法と言う:
insert
sits-on sub relation
relates thing-on-top-of-table
relates table-with-thing-on-top;
table plays table-with-thing-on-top;
book plays thing-on-top-of-table;
上記はかなりあなたの簡単な知識ベースのスキーマです。
ここでデータを追加できます。一部の書籍が一部の表の上にあるとします。
insert
$book isa book;
$table isa table;
(thing-on-top-of-table: $book, table-with-thing-on-top: $table) isa sits-on
もちろん、ここから拡張することができます。たとえば、リソースを介して書籍にタイトルを付けることができます。
側注:リソース対エンティティ
リソースとして、または別のエンティティとして何かを関連付けるための親指の基本的なルールは、あなたがモデルで表現するだけでなく、したいどのくらいの情報に依存して何かをすることができた場合データリテラル(例えばString、Int、Longなど)によって定義されます。
たとえば、書籍は、書籍の識別に役立つ複数のリソースで構成されているため、エンティティです。私。タイトル、isbnなど。 。一方、それらのリソースは単純なデータ値です。タイトルは文字列に過ぎないので、タイトルをエンティティにする理由はありません。単なるリソースとしては問題ありません。
"複雑な概念として本を持っている"という意味を指定してください。あなたが達成しようとしていることは何ですか?あなたは本が一種のテーブルとして返されるようにしたいのですか、あるいは本をテーブルの一部にしたいのですか、あるいはテーブルと本を他の種類の関係にしたいですか? – MiKo