我有一个三重商店化学品。每种物质都有大约30-40 参数。每个参数都有一个数据库名称和一个真实姓名。例如 chem:flBeiRT 的真实姓名为FlüssigbeiRaumtemperatur (德语)。为了将列表分解为更可读的大小,我们创建了类别。其中一个类别是: Nomenklatur (德语)。
我现在有一个Sparql查询,其中获取 Nomenklatur
下的所有参数 SELECT DISTINCT ?name
WHERE{
?s iol:name "Nomenklatur" .
?x rdf:type iol:property .
?x iol:name ?name .
?x iol:propertyof ?s .
}
它为我提供了Nomenklatur下所有参数的真实名称。 根据我对?x变量的理解,所有参数都已经与数据库名称绑定,所以我想直接使用这个从一种化学品中获取所有这些参数。所以我试图将此直接添加到此查询中。确保单独获取每个参数。由于该物质没有id我使用第二个查询insinde我只获得那一种化学物质:
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?有人可以告诉我如何接受这个吗?谢谢你的时间。 或者我必须单独获得每个参数?也许查看数据或其中的数据有所帮助:
答案 0 :(得分:2)
您的子SELECT返回变量?o
,但这不在外部SELECT查询中使用。 SPARQL首先评估内部子SELECT查询,而不是相反。因此,首先计算给定物质[C_2mim]Cl
的值,然后必须限制外部SELECT中的值。
我不理解你的架构,即我不完全清楚。你的谓词表示化学物质的参数,对吧?如果是,则必须将?p
限制为属于该类别的那些。