SPARQL查询在查询数组中的特定值时返回0结果

问题描述 投票:0回答:1

我是 RDF 和 SPARQL 的新手,所以我想列出 https://schema.org/ListItem 可以拥有的所有属性。这是 https://schema.org/version/latest/schemaorg-current-https.ttl 的海龟文件 我在 python 中使用 RDFlib https://rdflib.readthedocs.io/en/latest/index.html

我正在运行此代码,但我得到 0 个结果:

q =  """
    PREFIX schema: <http://schema.org/>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    
    SELECT DISTINCT ?label
    WHERE {
        ?s a rdf:Property ;
            schema:domainIncludes ?domain ;
            rdfs:label ?label .
        FILTER(?domain = "http://schema.org/ListItem")
    }
    """

for r in g.query(q):
    print(r)

当我在没有 schema:domainInincludes 的情况下运行查询时,我会获取所有架构类型的所有属性,如下所示:

    PREFIX schema: <http://schema.org/>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    
    SELECT DISTINCT ?label
    WHERE {
        ?s a rdf:Property ;
            rdfs:label ?label .
    }

某些属性使用列表语法,如下所示。

schema:position a rdf:Property ;
    schema:domainIncludes schema:CreativeWork,
        schema:ListItem ;

据我所知,这相当于

schema:position a rdf:Property ;
        schema:domainIncludes schema:CreativeWork ;
        schema:domainIncludes schema:ListItem .

所以我不明白出了什么问题。是图书馆还是其他什么地方?

sparql rdf schema.org rdfs rdflib
1个回答
0
投票

schema.org 使用 https,正确的前缀是 https://schema.org/ 而不是 http://schema.org/ 另一个问题是查询与字符串文字而不是 iri 匹配,这就是它没有按预期进行过滤的原因。 Iri 表示法应像 schema:ListItem 或 http://schema.org/ListItem 一样使用,而不是字符串文字“”。

© www.soinside.com 2019 - 2024. All rights reserved.