我是 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 .
所以我不明白出了什么问题。是图书馆还是其他什么地方?
schema.org 使用 https,正确的前缀是 https://schema.org/ 而不是 http://schema.org/ 另一个问题是查询与字符串文字而不是 iri 匹配,这就是它没有按预期进行过滤的原因。 Iri 表示法应像 schema:ListItem 或 http://schema.org/ListItem 一样使用,而不是字符串文字“”。