DHF 使用 Entity-services 包络设计

DHF using Entity-services design of envelope

我正在使用 DHF 和实体服务。我想知道如果一个信封包含多个实体实例,我可以将信封设计如下

<envelope xmlns="http://marklogic.com/entity-services">
  <headers>
  </headers>
  <triples>
  </triples>
  <instance>
        <info>
          <title>target</title>
          <version>1.0.0</version>
        </info>
        <target:target xmlns:target="http://schemas.abbvienet.com/entity/target">
            ....
        </target>
  </instance>
  <instance>
        <info>
          <title>core</title>
          <version>1.0.0</version>
        </info>
        <core:core xmlns:core="http://schemas.abbvienet.com/entity/core">
            ....
        </core>
  </instance>
  <attachments>
  </attachments>
</envelope>

注意 2 个实例的 2 个 instance 标签。

这是否有效,因为我找不到信封设计的建议,例如 xsd?这是信封中实例的良好设计还是有更好的方法?或者我可以这样吗

<envelope xmlns="http://marklogic.com/entity-services">
  <headers>
  </headers>
  <triples>
  </triples>
  <instance>
    <info>
      <title>target</title>
      <version>1.0.0</version>
    </info>
    <target:target xmlns:target="http://schemas.abbvienet.com/entity/target">
                    ....
    </target>
    <core:core xmlns:core="http://schemas.abbvienet.com/entity/core">
                    ....
    </core>
  </instance>
  <attachments>
  </attachments>
</envelope>

我想使用 es api 对实体进行规范化

目前,DHF(和实体服务)支持信封模式下每个文档一个实例的范例。

如果您需要对一个实体(或多个实体)的多个实例提供相同的 attachments/triples/header 支持 - 只需将它们拆分并附加它们即可。

此外,您真的不应该修改生成的信封的实例部分:

<es:envelope xmlns:es="http://marklogic.com/entity-services">
  <es:instance>
    <es:info>
      <es:title>Person</es:title>
      <es:version>1.0.0</es:version>
    </es:info>
    <Person>
      <id>1234</id>
      <firstName>George</firstName>
      <lastName>Washington</lastName>
      <fullName>George Washington</fullName>
    </Person>
  </es:instance>
  <es:attachments>
    <person>
      <pid>1234</pid>
      <given>George</given>
      <family>Washington</family>
    </person>
  </es:attachments>
</es:envelope>

但是您可以根据需要在实例之外的其他地方添加信息。有关与您的问题相关的实体服务的更多信息,请参见此处:https://docs.marklogic.com/guide/entity-services/instances#id_67461

目前,我们正在积极努力缩小 ES 和 DataHub 之间的一些差距,这就是为什么我鼓励您不要修改默认实例设置并为每个信封文档保留一个实例。

从另一个角度来看,我认为信封设计中没有任何东西可以阻止您的方法,尤其是第一个。为了确保实体服务生成的代码集中在 es:instance 元素的范围内,我们付出了一些努力。

我预计人们会设计像您这样的信封。但是,我不明白是什么激发了它。请分享您的进一步经验。