谁能告诉我这个查询有什么问题

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>