SPARQL查询将记录关联为一个或多个记录

SPARQL查询将记录关联为一个或多个记录,sparql,jena,Sparql,Jena,我有这种类型的modelschema 1 product hasOffer (many) Offers 1 offer hseRule (many) shipment rules 像 我如何查询 一款产品,包含所有优惠和所有装运规则。 简单地说。 如何查询一个或多个相关记录 这可以通过在WHERE子句中使用多个三元组的简单SPARQL查询来实现。这是因为SPARQL查询的图形模型自然地将数据连接在一起。 例如 来源:使用此查询在Protege中运行相同的示例 编辑: 问题:是否有任何方法可以

我有这种类型的modelschema

1 product hasOffer (many) Offers 
1 offer hseRule (many) shipment rules

我如何查询 一款产品,包含所有优惠和所有装运规则。 简单地说。
如何查询一个或多个相关记录

这可以通过在WHERE子句中使用多个三元组的简单SPARQL查询来实现。这是因为SPARQL查询的图形模型自然地将数据连接在一起。 例如

来源:使用此查询在Protege中运行相同的示例

编辑: 问题:是否有任何方法可以构造为产品{offers:{rules:{}},productAttributes}?
答:是的,您可以将?属性添加到SELECT子句,将三重?product ns:productAttribute?属性添加到WHERE子句,或者如果您具有跨多个数据属性的属性,则可以添加多个此类子句。然而,我强烈建议你不要这样做。查询将返回一组可能很大的数据,类似于SQL结果集。因此,您将看到同一产品的多行,并且其中有一个产品属性将使您的生活变得不必要的困难,因为该属性将出现在该产品的所有行中。而是运行一个单独的查询,其中只获取产品及其属性

您不需要额外的{}{SELECT?product?offer?规则,其中{product ns:hasOffer?offer。?offer ns:hasRules?rules}或者如果您不想返回?offer,只需要?product和?rules:{product ns:hasOffer/ns:hasRules?rules}有没有办法构造为产品{offers:{rules:{},productAttributes}?请参阅。产品属性,如品牌、标题e.t.c和内部产品块对象,我希望获得与该产品相关的报价,以及报价中的规则。谢谢。那么在您的模型productAttributes中是否有与产品相关联的字符串?您好@AndyS先生,您能帮我得到结果吗?非常感谢。
Product(1)--->Offer(N)----->Rules(M)
SELECT ?product ?offer ?rules 
 WHERE { {?product ns:hasOffer ?offer} {?offer ns:hasRules ?rules} }