我知道以下针对Wikidata SPARQL Endpoint查询的 SPARQL 是毫无意义的。我的应用程序中会自动生成类似的查询。请忽略概念的合理性,让我们深入研究这个奇怪的(至少对我来说)发生的事情。
\n\nSELECT ?year1 ?year_labelTemp\n WHERE\n { \n ?year1 <http://www.w3.org/2000/01/rdf-schema#label> ?year_labelTemp .\n { SELECT distinct ?year1\n WHERE\n { ?film <http://www.wikidata.org/prop/direct/P577> ?date ;\n <http://www.wikidata.org/prop/direct/P31> <http://www.wikidata.org/entity/Q11424>\n BIND(year(?date) AS ?year1)\n }\n } \n }\n limit 10\n
Run Code Online (Sandbox Code Playgroud)\n\n根据 SPARQL 中的查询评估,首先评估子查询,然后将其结果投影到包含查询。因此,将首先评估该子查询。
\n\nSELECT distinct ?year1\n WHERE\n { ?film <http://www.wikidata.org/prop/direct/P577> ?date ;\n <http://www.wikidata.org/prop/direct/P31> <http://www.wikidata.org/entity/Q11424>\n BIND(year(?date) AS ?year1)\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n子查询准确地给出了预期的结果(130 个不同的年份)。然后,该子查询(变量)的结果?year1
将被投影出来并与外部选择中的三元组模式连接。
?year1 <http://www.w3.org/2000/01/rdf-schema#label> ?year_labelTemp .\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,由于外部选择不应该有任何数据(没有标签?year1
),因此连接不会给出任何结果。
令人惊讶的是(至少对我来说),执行首先声明的整个查询 () 给出了结果,而且结果很奇怪。
\n\n wd:Q43576 Mi\xc3\xab\n …
Run Code Online (Sandbox Code Playgroud) 在OWL-DL本体中,考虑具有域D和范围R的属性p,其中D对p的限制具有恰好为1的基数:
d SubClassOf p 恰好 1个事
- (D⊑= 1 p.Thing)
那么我们可以推断p是一个函数属性,因为D类型中的每个d都只有p的一个值吗?如果这是正确的,推理人可以推断出这种知识吗?
semantic-web owl manchester-syntax protege description-logic