DHF使用信封

时间:2018-02-23 15:05:59

标签: marklogic marklogic-9 marklogic-dhf

我正在使用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规范化实体

2 个答案:

答案 0 :(得分:1)

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

如果您需要为实体(或多个实体)的多个实例提供相同的附件/三元组/标头支持 - 只需将它们拆分并附加它们。

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

<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之间存在一点差距,我们正积极致力于关闭,这就是为什么我建议您不要修改默认实例设置并为每个信封文档保留一个实例。

答案 1 :(得分:1)

从另一个角度来看,我会说信封设计中没有任何东西阻止你的方法,特别是第一个。为确保实体服务生成专注于es:instance元素范围的代码,我们采取了一些措施。

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