从<start-date> / <duration> XBRL-JSON格式

时间:2016-05-01 17:00:02

标签: datetime elasticsearch

我使用elasticsearch存储XBRL JSON。

This xBRL-JSON OIM spec描述了oim:period属性:

  

否则,ISO 8601时间间隔代表{interval}   财产,以下列形式之一表示:

     

&LT;开始&gt; /&LT;端&GT;

     

&LT;开始&gt; /&LT;持续时间&GT;

     

&LT;持续时间&GT; /&LT;端&GT;

     

其中&lt; start&gt;和&lt; end&gt;根据xsd:dateTime数据类型和&lt; duration&gt;有效根据xsd:duration。

有效

arelle's plugin的示例如下所示:

  • 2016-01-01T00:00:00 / PT0S
  • 2015-01-01T00:00:00 / P1Y

我注意到arelle的插件专门生成这种格式:

  • &LT;开始&gt; /&LT;持续时间&GT;

我的问题

有没有办法在弹力搜索中至少保存<start>部分作为日期类型?

我的想法:

elastichsearch(我的偏好)

  • 使用预期/<duration>部分的自定义日期格式,但忽略它
    • 我还没检查过Joda;如果它们不是特殊字符的一部分,它会在日期格式中忽略字符吗?就像“/”分隔符或任何持续时间值之前的“P”(如上面的PT0SP1Y)?
    • 编辑所以单引号字符会逃避文字;这项工作yyyy'/P'将接受值'2015 / P'。但是,其余的持续时间可能会更加动态
    • Re:动态;将Joda接受正则表达式或通配符,如“\ d”或“+”限定符,以便我可以忽略所有 P之后的可能变体吗?
  • 使用字符过滤器删除/<duration>部分,然后仅保存<start>作为日期时间。但我不知道字符过滤器是否在保存之前发生了类型:日期。如果他们不这样做,'/`部分不会被剥离,我也不会传递有效的日期字符串。
  • 请勿使用日期类型:使用模式标记符/上拆分,并且至少这两个部分将另存为单独的标记。但是,不能使用日期数学。
  • 使用转换;虽然看起来这已被弃用了。我读过关于使用copy_to的内容,但这似乎是结合条款,我希望打破这个术语
  • 某种插件?也许一个插件将完全支持OIM规范描述的这种“间隔”数据类型...也许是一个插件,它将存储其独立的部分......?

更改我的应用程序(如果可能,我更喜欢使用仅限弹性搜索的技术)

  • 我可以编辑此插件或制作我自己的插件,该插件仅使用<start><end>部分,并将两者保存到单独的字段中;
    • 但是这违反了OIM规范,该规范说它们应该合并在一个单个字段中
    • 此外,表达“即时”事实(没有持续时间;上面的PT0S例子)可能很尴尬;我想我只使用end属性的相同值作为start属性...我猜不会比0长度持续时间(PT0S更尴尬)。

1 个答案:

答案 0 :(得分:1)

不是直接的答案,但值得注意的是xBRL-JSON规范的最新内部草案已经远离单字段表示。虽然“/”分隔符号是ISO标准,但它的工具支持似乎非常差,因此工作组选择切换到开始日期和结束日期的单独字段。我希望Arelle支持会在适当的时候跟进。