私は XML データベースの初心者で、特に Marklogic の仕組みを学ぼうとしています。これらの質問があまりにも素朴または明白である場合は、お詫び申し上げます。
私がやりたいのは、MongoDB スタイルのドキュメント参照を Marklogic に実装することです。これは、それ自体がドキュメント指向のデータベースである後者にパターンが非常にうまく適用されると思うからです。
これは、マニュアルおよび DBRef スタイルのドキュメント参照について、MongoDB のドキュメントに記載されている内容です。
http://docs.mongodb.org/manual/reference/database-references/
MongoDB は手動ドキュメント参照の使用を推奨しています。
私が理解できる最も直接的なアプローチは、この情報を、たとえばスキーマ定義の一部として定義することです。objectid、本、および出版社の定義から始めます。
<xs:simpleType name="objectId">
<xs:restriction base="xs:string">
<xs:length value="24"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Publisher">
<xs:complexType>
<xs:attribute name="id" type="fbc:objectId" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="location" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Book">
<xs:complexType>
<xs:attribute name="Title" type="xs:string"/>
<xs:attribute name="publisherId" type="fbc:objectId" use="required"/>
</xs:complexType>
</xs:element>
3 つの質問:
本とその出版社の間の文書参照をモデル化するには、これで十分でしょうか? スキーマ ベースの XML ドキュメントに対するより良いアプローチはありますか?
このアプローチでは、Marklogic (または、existDB、Senda、Basex などの他の XML データベース) 内で XQuery を実行するときに問題が発生しますか?
Marklogic は、XPointer と XInclude を使用して、ある種の特別なドキュメント参照を保持する「モジュラー ドキュメント」を使用できると述べています。
手動のドキュメント参照の代わりにそのアプローチを使用する利点はありますか? この機能で動作する Java API の例はありますか?
質問が多すぎる場合は事前にお詫び申し上げますが、すべてここに記載されている質問全体に関連していると思います。ありがとう。
アップデート:
次に、必要に応じてデータの非正規化を行い、プレーンな古いドキュメント URI 属性を使用して、必要に応じて他のドキュメントを参照することに頼ると思います。私が推測する最良のアプローチではありませんが、将来的にはそれで十分だと思います。調査結果を更新し続けます。ありがとう!