Sparql 在RDF浮点类型中,是否需要将0放在点之前?

Sparql 在RDF浮点类型中,是否需要将0放在点之前?,sparql,rdf,owl,ontology,protege,Sparql,Rdf,Owl,Ontology,Protege,我正在使用一个工具试图生成三元组 我生成这个三元组: <http://rs#Rating29728> <rs#ratesBy> ".2"^^<http://www.w3.org/2001/XMLSchema#float> . “.2”^^。 .2是正确的浮点值,还是应该是0.2 为了尝试这一点,我在Protege中创建了一个文本值,将该值设置为0.2。然后我关闭Protege,手动编辑本体,并将0.2更改为.2。我在Protege中再次打开了它,但是Pro

我正在使用一个工具试图生成三元组

我生成这个三元组:

<http://rs#Rating29728> <rs#ratesBy> ".2"^^<http://www.w3.org/2001/XMLSchema#float> .
“.2”^^。
.2
是正确的浮点值,还是应该是
0.2

为了尝试这一点,我在Protege中创建了一个文本值,将该值设置为
0.2
。然后我关闭Protege,手动编辑本体,并将
0.2
更改为
.2
。我在Protege中再次打开了它,但是Protege将其设置为
0.2
,因此我认为
0.2
是正确的,而不是
.2
,Protege已经为这些值做好了准备


你觉得怎么样?

什么是合法的xsd浮动不是意见问题;我们所要做的就是检查规格

浮点值有一个词汇表示法,它由尾数组成,尾数后接字符“E”或“E”,再接一个指数(可选)。指数必须是整数。尾数必须是十进制数指数和尾数的表示必须遵循整数和小数的词汇规则。如果省略了“E”或“E”以及以下指数,则假定指数值为0

所以问题变成了十进制是否需要一个前导零

decimal有一种词汇表示法,由有限长度的十进制数字序列(#x30-#x39)组成,以句点分隔,作为十进制指示符

现在,我想说没有前导数字是零长度的数字序列,这肯定是一个有限长度的数字序列,所以
.2
就可以了。该规范还定义了一个规范表示,听起来protégé可能会对其进行规范化:

十进制的规范表示法是通过禁止词汇表示法中的某些选项来定义的(§3.2.3.1)。具体而言,前面的可选“+”符号是禁止的。小数点是必需的。根据以下规定,禁止使用前导零和尾随零:小数点左右必须至少有一位数字,可以是零。


所以
.2
0.2
都很好,它们是等价的,所以protégé可以将第一个规范化为第二个;我们所要做的就是检查规格

浮点值有一个词汇表示法,它由尾数组成,尾数后接字符“E”或“E”,再接一个指数(可选)。指数必须是整数。尾数必须是十进制数指数和尾数的表示必须遵循整数和小数的词汇规则。如果省略了“E”或“E”以及以下指数,则假定指数值为0

所以问题变成了十进制是否需要一个前导零

decimal有一种词汇表示法,由有限长度的十进制数字序列(#x30-#x39)组成,以句点分隔,作为十进制指示符

现在,我想说没有前导数字是零长度的数字序列,这肯定是一个有限长度的数字序列,所以
.2
就可以了。该规范还定义了一个规范表示,听起来protégé可能会对其进行规范化:

十进制的规范表示法是通过禁止词汇表示法中的某些选项来定义的(§3.2.3.1)。具体而言,前面的可选“+”符号是禁止的。小数点是必需的。根据以下规定,禁止使用前导零和尾随零:小数点左右必须至少有一位数字,可以是零。


所以
.2
0.2
都很好,它们是等价的,所以protégé可以将第一个规范化为第二个。

我将生成的三元组上传到fuseki,然后我做了这个过滤器
过滤器(?ratingValue>“0.7”^^xsd:float)
虽然数据存储为
.8
而不是
0.8
但它仍然有效,因此我现在有了一个实用的证明,感谢您的回答,它给出了一个清晰的答案evidence@Ania关键是它们是相同的值。只是相同值的不同打印表示形式。我将生成的三元组上传到fuseki,然后我做了这个过滤器
过滤器(?ratingValue>“0.7”^^xsd:float)
,虽然数据存储为
.8
而不是
0.8
,但它仍然有效,因此我现在有了一个实用的证明,谢谢你的回答,它给出了一个明确的结论evidence@Ania关键是它们是相同的值。只是相同值的不同打印表示。