跳到内容
新发行

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

~/!~ 支持_dat类型 #1178

已合并
将1个提交合并到
2015年10月1日
已合并

~/!~ 支持_dat类型 #1178年

将1个提交合并到
2015年10月1日

对话

詹姆斯
复制链接
贡献者

添加/!支持_dat类型,并从DV组件中删除与查询相关的依赖项,并将其移动到单独的SMW\反序列化程序\DVDDescriptionDeserializer挪威。

  • 匹配2001年12月的所有科目
{{#提问:[[日期::~ 2001年12月]]|?有日期}}
  • 匹配2006年6月15日未更改的所有科目
{{#ask:[[修改日期::!~ 2006年6月15日]]|?修改日期}}
  • 匹配2007年12月关闭的所有科目(使用记录)
{{#ask:[[有状态记录::~ 2007年12月;已关闭]]|?有状态记录}}

@詹姆斯 詹姆斯补充新功能 从根本上影响行为的现有功能的新的或改变的行为 代码质量标签2015年9月28日
@杰伦·德道夫
复制链接
成员

酷\o/

@mkroetzsch公司对此有何想法?我很好奇为什么之前的日期没有实现like-一些关于行为应该如何工作的问题,或者只是一些由于时间不够而没有添加的内容?

*
*@作者mwjames
*/
TimeValueDescriptionEncoder类扩展了Description编码器{
复制链接
成员

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

当我读到这个名字时,我想我会做相反的事情:从Description对象构造一个字符串。像DescriptionDeserializer这样的东西怎么样?(对公共方法进行了相应的更改)

@mkroetzsch公司
复制链接
贡献者

@mkroetzsch公司对此有何想法?我很好奇为什么之前的日期没有实现like-一些关于行为应该如何工作的问题,或者只是一些由于时间不够而没有添加的内容?

不仅是时间,不。~functions指的是字符串,所以显而易见的问题是:哪个字符串?您可以在SMW中以多种格式输入日期,然后以多种格式返回。内部字符串使用自己的格式,可能部分符合某些格式选项,但我不知道这是否在任何地方都有文档记录。事实上,不同的实现之间甚至不一样。SPARQL后端将以不同的方式存储日期,根本不使用字符串。如果是字符串,它们可能与SQL表中的不一样(至少我认为我没有实现SQL的XMLSchema序列化)。

我认为一个更有用的功能是支持查询操作符,以便按月份或年份,甚至按星期几选择日期。这种类型的信息是日期类型中定义明确的一部分,而字符串只是当前SQL存储的实现细节。使用合适的字符串格式,SQLLIKE函数可以在内部支持许多日期运算符。SPARQL可能还没有一个好的方法来实现这一点,但许多(大多数?)RDF数据库都有一些内置项来访问日期的日期、月份等。

@詹姆斯海军陆战队
复制链接
贡献者 作者

只需澄清一下(如在SQLStore和SPARQLStore上运行的附加测试所示),这些测试确实通过了,因为我们没有比较字符串(在SQL和SPARSQL上),而是使用区间中的数字表示将2015年12月(根据输入的定义,这是一个字符串)转换为上下边界。所以,SQL类这里根本不使用,因为它不应用于SQLStore或SPARQLStore的日期比较方式。

我认为一个更有用的功能是支持查询运算符按月、按年甚至按周选择日期。

你这样做只是宣布到2010年12月(2010年全年)或到2010年11月15日(12月15日全年)成为相似(或类似自然语言)的表示,并且以指定的精度,开始条件为所选日期的相似程度奠定了基础。

用自然语言来说,如果宣布2010年12月15日左右,那么我预计这将与2010年12月份15日相匹配*。当然,您可以手动完成这一切,并指定一个间隔(这是在后台发生的),但这是冗长、不必要的,应该由软件完成,而不是由只想解决问题的用户完成。

至于RDF(和SPARQL),请记住,我们用两条语句表示日期,而辅助表示仅用于查询,因此比较是一种数学操作,而不是字符串操作。

<swivt:wikiPageModificationDate rdf:datatype=“http://www.w3.org/2001/XMLSchema#dateTime“>2015-09-28T02:32:10Z</swivt:wikiPageModificationDate><属性:Modification_date-23aux rdf:datatype=“http://www.w3.org/2001/XMLSchema#double“>2457293.6056713</property:Modification_date-23aux>
?结果属性:Has_date_record?第1版。{?v1属性:Has_date-23aux?v2。过滤器(?v2>=“2454435.5”^^xsd:double&&?v2<“2454466.5”^^xsd:double)?v1属性:Has_status“closed”。}}联合国{?结果属性:Has_date_record?第4版。{?v4属性:Has_date-23aux?v5。过滤器(?v5>=“1595411.5”^^xsd:double&&?v5<“1595777.5”^^ xsd:do倍)}

@詹姆斯
复制链接
贡献者 作者

关于~含义超出数学应用范围,但通常表示近似值。如果是日期,则选择一个区间以使近似值在给定精度下保持不变。

[0]https://en.wikipedia.org/wiki/Tilde#范围
[1]https://www.quora.com/What-is-the-proper-use-of-the-time-as-putation-in-a-stenne(网址:https://www.quora.com/What-is-the-proper-use-of-the-time-as-putation-in-a-stenne)
[2]http://encyclopedia2.thefreedictionary.com/tilde

@mkroetzsch公司
复制链接
贡献者

@詹姆斯感谢您的澄清。在回答评论之前,我应该从头开始阅读。听起来这是一个非常有用的功能。

@杰伦·德道夫
复制链接
成员

感谢您的澄清@mkroetzsch公司

我同意~在ask语言中不一定与它在SQL中的含义绑定。

@杰伦·德道夫
复制链接
成员

@詹姆斯+除了我的内联评论

@杰伦·德道夫
复制链接
成员

@詹姆斯我很高兴亲自发表评论。你想让我这么做吗?

@詹姆斯
复制链接
贡献者 作者

我很高兴亲自发表评论。你想让我这样做吗?

不,我做了更改,只是还没有推进。

只是考虑NS是否能成功SMW\Deserializers\DataValueDescriptionDeserializer\DescriptionDeferializerFactory;SMW\反序列化程序\DVDescriptionDeserializer\DescriptionDeferializerFactory;

@杰伦·德道夫
复制链接
成员

我会去的SMW\反序列化程序\ DescriptionDeserilaizerFactory和反序列化程序SMW\反序列化程序\描述反序列化程序\*.无需将工厂建在说明脱水剂名称空间,以及不这样做的原因:它不是DescriptionDeserilaizer。不确定为什么要包含此DataValue部分。我们将这些东西称为描述,而不是数据值描述。

事实上,既然这些都已经在反序列化器NS中了,为什么不呢SMW\反序列化程序\描述\*? 这似乎很简单,也很中肯。

添加~/!~支持dat类型并删除与查询相关的依赖于DV组件并将其移动到单独的`SMW\反序列化程序\DVDescriptionDeserializer`NS-匹配2001年12月的所有科目```{{#提问:[[日期::~ 2001年12月]]|?有日期}}```-匹配2006年6月15日未更改的所有科目```{{#ask:[[修改日期::!~ 2006年6月15日]]|?修改日期}}```-匹配2007年12月关闭的所有科目(使用记录)```{{#ask:[[有状态记录::~ 2007年12月;已关闭]]|?有状态记录}}```
@詹姆斯
复制链接
贡献者 作者

@千克磅供参考

詹姆斯添加了提交引用的这个拉请求 2015年10月1日
添加RecordValueDescriptionDeserializer,引用#1178
@千克磅
复制链接
成员

这不是在wiki上记录.

免费注册 在GitHub上加入此对话.已经有帐户了吗?登录以发表评论
标签
代码质量 新功能 从根本上影响行为的现有功能的新的或改变的行为
项目
还没有
开发

成功合并此请求可能会解决这些问题。

还没有

4名参与者