SPARQL 尝试查询产品可用性
SPARQL trying to query product availability
我正在尝试使用以下 SPARQL 查询产品的可用性,但我总是得到 null
的 ?productAvailable
,尽管可用性在我所在的页面中列为 InStock
试图从中提取数据,我正在使用 Apache Jena API。
我正在从下一页中提取三元组。我做错了什么?
http://www.crutchfield.com/p_500SWA10S4/Alpine-SWA-10S4.html
SELECT DISTINCT ?productAvailable ?productUnAvailable WHERE
{
?p2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:Product .
?p2 <http://schema.org/Product/offers> ?schOffer .
OPTIONAL
{ ?schOffer s:availability ?productAvailable .
?productAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:InStock
}
OPTIONAL
{ ?schOffer s:availability ?productUnAvailable .
?productUnAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:OutOfStock
}
}
如果我使用 Microdata to RDF Distiller 从该页面提取数据,相关位如下所示:
<> a schema:Product;
schema:name "Alpine SWA-10S4"@en;
schema:description "BassLine Series 10\" 4-ohm subwoofer"@en;
schema:offers [ a schema:Offer;
schema:availability schema:InStock; ] .
如果你看三元组
_:offerBNode schema:availability schema:InStock .
schema:InStock 用作对象而不是它的实例。因此,您不需要以下内容,
{
?schOffer s:availability ?productAvailable .
?productAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:InStock
}
您只需要以下模式
?schOffer s:availability s:InStock .
例如,您可以使用这样的查询
PREFIX s: <http://schema.org/>
SELECT DISTINCT ?productName ?availabity WHERE
{
?p a s:Product;
s:name ?productName;
s:offers ?offer .
?offer s:availability ?availabity .
}
This tool 可能对您检查查询也很有用。您可以使用经过提炼的页面并运行使用它测试 SPARQL 查询。
我正在尝试使用以下 SPARQL 查询产品的可用性,但我总是得到 null
的 ?productAvailable
,尽管可用性在我所在的页面中列为 InStock
试图从中提取数据,我正在使用 Apache Jena API。
我正在从下一页中提取三元组。我做错了什么?
http://www.crutchfield.com/p_500SWA10S4/Alpine-SWA-10S4.html
SELECT DISTINCT ?productAvailable ?productUnAvailable WHERE
{
?p2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:Product .
?p2 <http://schema.org/Product/offers> ?schOffer .
OPTIONAL
{ ?schOffer s:availability ?productAvailable .
?productAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:InStock
}
OPTIONAL
{ ?schOffer s:availability ?productUnAvailable .
?productUnAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:OutOfStock
}
}
如果我使用 Microdata to RDF Distiller 从该页面提取数据,相关位如下所示:
<> a schema:Product;
schema:name "Alpine SWA-10S4"@en;
schema:description "BassLine Series 10\" 4-ohm subwoofer"@en;
schema:offers [ a schema:Offer;
schema:availability schema:InStock; ] .
如果你看三元组
_:offerBNode schema:availability schema:InStock .
schema:InStock 用作对象而不是它的实例。因此,您不需要以下内容,
{
?schOffer s:availability ?productAvailable .
?productAvailable <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:InStock
}
您只需要以下模式
?schOffer s:availability s:InStock .
例如,您可以使用这样的查询
PREFIX s: <http://schema.org/>
SELECT DISTINCT ?productName ?availabity WHERE
{
?p a s:Product;
s:name ?productName;
s:offers ?offer .
?offer s:availability ?availabity .
}
This tool 可能对您检查查询也很有用。您可以使用经过提炼的页面并运行使用它测试 SPARQL 查询。