我有一家三重的化学制品店。每种物质都有大约30-40个参数。每个参数都有一个数据库名和一个实名。例如,chem:flBeiRT有实名Flüssig Raumtemperatur (德语)。为了将列表分解到更易读的大小,我们已经创建了类别。其中一个类别是: Nomenklatur (德语)。
我现在有了一个Sparql查询,其中获取Nomenklatur下面的所有参数
SELECT DISTINCT ?name
WHERE{
?s iol:name "Nomenklatur" .
?x rdf:type iol:property .
?x iol:name ?name .
?x iol:propertyof ?s .
}它给了我所有参数的实名,如预期的一样。根据我在?x变量中的理解,所有参数都已经绑定到了数据库名中,所以我想使用这个参数从一种化学物质中获得所有这些参数。所以我试着把这个错误地添加到这个查询中。每个参数都是独立的。由于该物质没有标识,我使用第二个查询,暗示我只得到一种化学物质:
SELECT ?name
WHERE{
?s iol:name "Nomenklatur" .
?x rdf:type iol:property .
?x iol:name ?name .
?x iol:propertyof ?s .
{
SELECT ?o
WHERE{
?x chem:ilAbk "[A_4mim]Al" .
}
}
} 它仍然给出了我所要求的11个参数。但我现在怎么能得到这种化学物质的所有合适的文字呢?我试过:
SELECT DISTINCT ?name ?o
WHERE{
?s iol:name "Nomenklatur" .
?x rdf:type iol:property .
?x iol:name ?name .
?x iol:propertyof ?s .
{
SELECT DISTINCT ?o
WHERE{
?x chem:ilAbk "[C_2mim]Cl" .
?x ?p ?o
}
}
}但是在这里,我得到了超过312个结果,每个参数加上所有uri,对我来说是什么接缝呢?有人能告诉我怎么弄吗?谢谢你抽出时间。还是我必须单独得到每个参数?也许它有助于查看数据或其中的一小部分:
从海龟文件中筛选
发布于 2016-09-15 23:05:11
您的子SELECT返回一个变量?o,但在外部SELECT查询中没有使用这个变量。SPARQL首先评估内部的子选择查询,而不是反过来。因此,首先计算给定物质[C_2mim]Cl的值,然后限制外部选择中的值。
我不明白你的模式,也就是说,对我来说还不完全清楚。你的谓词表示化学物质的参数,对吗?如果是,您将不得不将?p限制在那些确实属于该类别的范围内。
https://stackoverflow.com/questions/39519368
复制相似问题