从SPARQL中选择食物热量

从SPARQL中选择食物热量,sparql,wikipedia-api,wikidata,Sparql,Wikipedia Api,Wikidata,我已经开始研究SPARQL,我承认我发现它非常模糊和困难 我需要输出所有食物的卡路里 我真的不明白wd:wdt:p:和ps: 同样,我不清楚何时使用P000或Q000 到目前为止,我得到的最好结果是: SELECT ?food ?calories ?foodLabel ?caloriesLabel WHERE { ?food wdt:P31 wd:Q2095. ?food wdt:P31 ?calories. SERVICE wikibase:label { bd:servicePa

我已经开始研究SPARQL,我承认我发现它非常模糊和困难

我需要输出所有食物的卡路里

我真的不明白wd:wdt:p:和ps:

同样,我不清楚何时使用P000或Q000

到目前为止,我得到的最好结果是:

SELECT ?food ?calories ?foodLabel ?caloriesLabel WHERE {
  ?food wdt:P31 wd:Q2095.
  ?food wdt:P31 ?calories.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
其中:


如果您愿意下载1 GB RDF文件并在自己的triplestore上发布,欢迎您提供任何建议,这看起来很有希望:

具体来说,(如果英语是你的首选语言。)

我说下载和发布,因为谷歌暗示这些数据还没有在任何公共端点公开

与WikiData相比,您可能需要使用不同的类和谓词

嘿,这真漂亮

SELECT  *
WHERE
  { GRAPH <http://openfoodfacts.org>
      { ?s  a                     <http://data.lirmm.fr/ontologies/food#FoodProduct> ;
            <http://data.lirmm.fr/ontologies/food#name>  ?fn ;
            <http://data.lirmm.fr/ontologies/food#energyPer100g>  ?energy
      }
  }
LIMIT   9

如果您愿意下载1 GB RDF文件并在自己的triplestore上发布,这看起来很有希望:

具体来说,(如果英语是你的首选语言。)

我说下载和发布,因为谷歌暗示这些数据还没有在任何公共端点公开

与WikiData相比,您可能需要使用不同的类和谓词

嘿,这真漂亮

SELECT  *
WHERE
  { GRAPH <http://openfoodfacts.org>
      { ?s  a                     <http://data.lirmm.fr/ontologies/food#FoodProduct> ;
            <http://data.lirmm.fr/ontologies/food#name>  ?fn ;
            <http://data.lirmm.fr/ontologies/food#energyPer100g>  ?energy
      }
  }
LIMIT   9

wdt:P31
是关系的实例,即第一个三元组模式返回类food的所有实例。我不明白为什么在第二个三重模式中也使用相同的关系。你需要使用一个表示卡路里的属性,但是为什么你认为这个信息存在呢?你在维基数据中有没有包含这些信息的食物示例?您可以单击查询返回的食物列表。我看不到任何这样的信息。谢谢你的评论。嗯,当我在维基百科上看到像苹果、培根等食物时,他们有一个营养部分,其中标明了卡路里。我不太清楚维基百科和维基数据之间有什么区别。如何编写第三行以使用属性而不是实例?我已将open food facts数据放在我的一个服务器上。如果你想试用,我会向公众开放几个小时。@Sorade“写第三行使用属性而不是实例”是什么意思?查询中的问题是您必须更改第二个三重模式的属性,否则您将只返回在第一个三重模式中指定为object的类型。第一个三重模式:“给我所有类型
食物
的实例”。第二个三重模式“给我所有类型的食物,这显然也是
Food
wdt:P31
是关系的实例,即第一个三重模式返回类Food的所有实例。我不明白为什么在第二个三重模式中也使用相同的关系。你需要使用一个表示卡路里的属性,但是为什么你认为这个信息存在呢?你在维基数据中有没有包含这些信息的食物示例?您可以单击查询返回的食物列表。我看不到任何这样的信息。谢谢你的评论。嗯,当我在维基百科上看到像苹果、培根等食物时,他们有一个营养部分,其中标明了卡路里。我不太清楚维基百科和维基数据之间有什么区别。如何编写第三行以使用属性而不是实例?我已将open food facts数据放在我的一个服务器上。如果你想试用,我会向公众开放几个小时。@Sorade“写第三行使用属性而不是实例”是什么意思?查询中的问题是您必须更改第二个三重模式的属性,否则您将只返回在第一个三重模式中指定为object的类型。第一个三重模式:“给我所有类型
食物
的实例”。第二个三重模式“给我所有类型的食物,这显然也是
食物