Sparql变量全部结束

时间:2016-09-15 19:56:29

标签: sparql

我有一个三重商店化学品。每种物质都有大约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?有人可以告诉我如何接受这个吗?谢谢你的时间。 或者我必须单独获得每个参数?也许查看数据或其中的数据有所帮助:

screen from Turtle file

1 个答案:

答案 0 :(得分:2)

您的子SELECT返回变量?o,但这不在外部SELECT查询中使用。 SPARQL首先评估内部子SELECT查询,而不是相反。因此,首先计算给定物质[C_2mim]Cl的值,然后必须限制外部SELECT中的值。

我不理解你的架构,即我不完全清楚。你的谓词表示化学物质的参数,对吧?如果是,则必须将?p限制为属于该类别的那些。