从 sparql 查询中的子类获取值
Get values from a subClass in a sparql query
我在尝试使用子类执行 sparql 查询时遇到问题。
我有以下 ontology:
其中 Quesos 是一个 SubClassOf Ingrediente,如下图所示,Quesos 也有一些其他成员。
我想从一些配料中得到一些食谱。例如:
我想要所有包含番茄、盐和奶酪(其中奶酪可以是任何奶酪)的食谱,并且我想要取回所有包含这些成分的食谱。
问题出在这里:如果我输入配料(如盐或番茄),则查询工作正常,但如果我输入 "Quesos",则没有答案。我不知道如何在 sparql 查询中使用子类。
到目前为止,我有以下查询:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rec:<http://www.receta.org#>
SELECT ?r ?cal ?tiempo ?dif (COUNT (?i) as ?cantIng)(GROUP_CONCAT(DISTINCT ?listaIngredientes) as ?listaIng)(GROUP_CONCAT(DISTINCT ?modoPreparacion) as ?Preparacion)
WHERE {
?x rdf:type rec:Receta .
?x rdfs:label ?r.
?x rec:Ingrediente rec:Sal.
?x rec:Ingrediente rec:Tomate.
?x rec:Calorias ?cal.
?x rec:tiempoPreparacion ?tiempo.
?x rec:dificultad ?dif.
?x rec:listaIngredientes ?listaIngredientes.
?x rec:modoPreparacion ?modoPreparacion.
}
GROUP BY ?r ?cal ?tiempo ?dif
ORDER BY ?cantIng
而且我需要添加"subclassOf"行,但是我找不到方法。任何人都可以帮忙吗?谢谢!
这个其实和subclasses没有关系,只是instance和aclass的区别而已。由于 rec:Quesos
是所有奶酪的 class,并且每种特定类型的奶酪都被建模为 rec:Quesos
的 实例 ,您可以通过以下方式查询在您的查询中添加图形模式,而不是匹配 特定的 成分(例如 rec:Sal
或 rec:Tomate
),而是匹配 any rec:Quesos
类型的成分:
?x rec:Ingrediente ?i .
?i a rec:Quesos.
或更短的时间(因为您实际上不需要 ?i
的值来做其他事情):
?x rec:Ingrediente [ a rec:Quesos ].
我在尝试使用子类执行 sparql 查询时遇到问题。
我有以下 ontology:
其中 Quesos 是一个 SubClassOf Ingrediente,如下图所示,Quesos 也有一些其他成员。
我想从一些配料中得到一些食谱。例如:
我想要所有包含番茄、盐和奶酪(其中奶酪可以是任何奶酪)的食谱,并且我想要取回所有包含这些成分的食谱。
问题出在这里:如果我输入配料(如盐或番茄),则查询工作正常,但如果我输入 "Quesos",则没有答案。我不知道如何在 sparql 查询中使用子类。
到目前为止,我有以下查询:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rec:<http://www.receta.org#>
SELECT ?r ?cal ?tiempo ?dif (COUNT (?i) as ?cantIng)(GROUP_CONCAT(DISTINCT ?listaIngredientes) as ?listaIng)(GROUP_CONCAT(DISTINCT ?modoPreparacion) as ?Preparacion)
WHERE {
?x rdf:type rec:Receta .
?x rdfs:label ?r.
?x rec:Ingrediente rec:Sal.
?x rec:Ingrediente rec:Tomate.
?x rec:Calorias ?cal.
?x rec:tiempoPreparacion ?tiempo.
?x rec:dificultad ?dif.
?x rec:listaIngredientes ?listaIngredientes.
?x rec:modoPreparacion ?modoPreparacion.
}
GROUP BY ?r ?cal ?tiempo ?dif
ORDER BY ?cantIng
而且我需要添加"subclassOf"行,但是我找不到方法。任何人都可以帮忙吗?谢谢!
这个其实和subclasses没有关系,只是instance和aclass的区别而已。由于 rec:Quesos
是所有奶酪的 class,并且每种特定类型的奶酪都被建模为 rec:Quesos
的 实例 ,您可以通过以下方式查询在您的查询中添加图形模式,而不是匹配 特定的 成分(例如 rec:Sal
或 rec:Tomate
),而是匹配 any rec:Quesos
类型的成分:
?x rec:Ingrediente ?i .
?i a rec:Quesos.
或更短的时间(因为您实际上不需要 ?i
的值来做其他事情):
?x rec:Ingrediente [ a rec:Quesos ].