如何优化sparql CONSTRUCT查询

时间:2014-09-06 10:37:52

标签: rdf sparql rdfs

rdf架构存在问题

sparql DESCRIBE query to get data about linked objects

以下查询会在几分之一秒内执行。

DESCRIBE ?book
where
{
 ?book a schema:Book ;

}

然而,描述查询并未向我提供作者详细信息。它只返回属于Book本身的属性。

所以我将上面的查询替换为下面的查询。

CONSTRUCT 
{
?book a schema:Book ;
schema:bookName ?bookName ;
schema:bookId ?bookId ;
schema:authoredBy ?author .
?author a schema:Person ;
schema:personName ?personName .

} 
where 
{
 ?book a schema:Book ;
}

但是上面的sparql查询需要4秒才能执行。

 Is there way to optimize the sparql CONSTRUCT 
 OR
 should we be using SELECT always instead of CONSTRUCT

1 个答案:

答案 0 :(得分:1)

您的CONSTRUCT查询有一些未绑定的变量,因此不会向您提供您想要的信息。尝试:

CONSTRUCT WHERE
{
 ?book a schema:Book ;
    schema:bookName ?bookName ;
    schema:bookId ?bookId ;
    schema:authoredBy ?author .
    ?author a schema:Person ;
    schema:personName ?personName .
}

如果你为作者提供三元组,那么系统不是以标准方式行事。

至于速度,取决于您使用的系统。

您还可以尝试描述两个相关的事情:

DESCRIBE ?book ?author {
   ?book a schema:Book ;
        schema:authoredBy ?author .
}