首页 文章

SPARQL 语法的差异

提问于
浏览
0

我想知道这两个查询是否产生相同的输出。让我们想象一下,我收集了两个 RDF 命名图表数据,前缀是商店:我想写一个 SPARQL 查询,找出哪些客户更喜欢哪一餐,输出应该是人类可读

一个)

PREFIX shop: <"http://example.org/shop">
SELECT ?customerName ?mealName
FROM <Customers.rdf>
FROM <Meals.rdf>
WHERE
{
?customer shop:prefersMeal ?meal .
?meal shop:mealName ?mealName .
?customer shop:customerName ?customerName
}

b)

PREFIX shop: <"http://example.org/shop">
SELECT ?customerName ?mealName
FROM <Customers.rdf>
FROM <Meals.rdf>
WHERE
{
?x shop:prefersMeal ?meal .
?y shop:mealName ?mealName .
?z shop:customerName ?customerName
}

我试图找出差异,但是当你没有任何地方练习时,它看起来很复杂。

1 回答

  • 4

    这两个查询不完全相同。

    在第一个查询中,您将在第二个和第三个三重模式中重用第一个三重模式中的变量?meal?customer。在这个查询中,您说:“给我一个喜欢用餐的顾客,同一餐必须有一个名字,同一个顾客必须有一个名字。”

    在第二个查询中,您在第二个和第三个子句中使用新变量?y?z。这个问题的含义是:“给我一个喜欢吃饭的顾客,给我一些饭菜的名字,然后给我一些顾客的名字”。您没有强制要求检索的名称是相同的 customer/meal,因此您将获得随机的客户/膳食组合,而不是每个客户的实际首选餐。

相关问题