谁能告诉我这个查询有什么问题
Can anyone tell me what is wrong in this query
Image of prefixes with query
当我删除过滤器时,它会提供输出,但在添加 FILTER 时没有任何输出。
SELECT distinct ?ID
WHERE { ?ID rdf:type foaf:ID
FILTER (foaf:has_Rel.WinRate >= "0.3"^^xsd:double)
}
我提出了这个查询的所有建议,但过滤器仍然无法正常工作
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX foaf: <http://www.semanticweb.org/abhin/ontologies/2021/11/stock_project#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace#>
SELECT ?ID
WHERE { ?ID foaf:has_AnnualReturn ?AnnualReturn;
foaf:has_ExcessReturn ?ExcessReturn.
FILTER (?AnnualReturn > "0.3")
}
在过滤器中我也尝试过类型转换但是没有用
snap of ontograph
snap of an individual
您的过滤器依赖于 属性 foaf:has_ref.WinRate
存在于您的数据中的某些值。由于您没有得到任何结果,因此没有找到这样的 属性。
通过提供的代码片段,问题变得清晰:
<ObjectPropertyAssertion>
<ObjectProperty IRI="#has_AnnualReturn"/>
<NamedIndividual IRI="#10-ID"/>
<NamedIndividual IRI="#0.5853214994439921"/>
</ObjectPropertyAssertion>
这些陈述是关于个人之间的对象属性的,其中 IRI 恰好包含数字。 SPARQL 函数适用于数字文字,而不适用于单个 IRI,因此查询将找不到任何匹配项,因为输入无法与条件进行比较。
为了使您的查询有效,属性必须是数据属性,而不是将一个人连接到另一个人,而应该将一个人连接到一个文字。
数据应如下所示(从您的文件中改编不同的数据片段):
<DataPropertyAssertion>
<DataProperty IRI="#has_AnnualReturn"/>
<NamedIndividual IRI="#10-ID"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#double">0.5853214994439921</Literal>
</DataPropertyAssertion>
Image of prefixes with query
当我删除过滤器时,它会提供输出,但在添加 FILTER 时没有任何输出。
SELECT distinct ?ID
WHERE { ?ID rdf:type foaf:ID
FILTER (foaf:has_Rel.WinRate >= "0.3"^^xsd:double)
}
我提出了这个查询的所有建议,但过滤器仍然无法正常工作
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX foaf: <http://www.semanticweb.org/abhin/ontologies/2021/11/stock_project#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace#>
SELECT ?ID
WHERE { ?ID foaf:has_AnnualReturn ?AnnualReturn;
foaf:has_ExcessReturn ?ExcessReturn.
FILTER (?AnnualReturn > "0.3")
}
在过滤器中我也尝试过类型转换但是没有用 snap of ontograph
snap of an individual
您的过滤器依赖于 属性 foaf:has_ref.WinRate
存在于您的数据中的某些值。由于您没有得到任何结果,因此没有找到这样的 属性。
通过提供的代码片段,问题变得清晰:
<ObjectPropertyAssertion>
<ObjectProperty IRI="#has_AnnualReturn"/>
<NamedIndividual IRI="#10-ID"/>
<NamedIndividual IRI="#0.5853214994439921"/>
</ObjectPropertyAssertion>
这些陈述是关于个人之间的对象属性的,其中 IRI 恰好包含数字。 SPARQL 函数适用于数字文字,而不适用于单个 IRI,因此查询将找不到任何匹配项,因为输入无法与条件进行比较。
为了使您的查询有效,属性必须是数据属性,而不是将一个人连接到另一个人,而应该将一个人连接到一个文字。
数据应如下所示(从您的文件中改编不同的数据片段):
<DataPropertyAssertion>
<DataProperty IRI="#has_AnnualReturn"/>
<NamedIndividual IRI="#10-ID"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#double">0.5853214994439921</Literal>
</DataPropertyAssertion>