在SPARQL中使用条件CONSTRUCT查询

问题描述 投票:0回答:1

我需要有关SPARQL构造查询的一些帮助。如何使用CONSTRUCT条件进行IF查询以获取启用规则表示的三元组?

类似于CONSTRUCT查询,使我们能够表达以下规则:

  1. 如果XC1类的实例,并且C1C2类的子类,则XC2的实例。

  1. 如果XP1属性中具有值V,并且P1P2的子属性,则X在属性P2中具有值V
sparql rdf construct
1个回答
1
投票

如评论中所建议:您实际上不需要条件来表达这一点。您在规则左侧执行的所有操作均匹配三重模式的组合。这正是SPARQL查询中的WHERE子句所做的。同样,规则的右侧只是将匹配的资源重新组合为新的三重模式-这正是CONSTRUCT子句的作用。例如:

如果X是C1类的实例,而C1是C2类的子类,则X是C2的实例。

可以表示为:

 CONSTRUCT { ?X a ?C2 }
 WHERE  { ?X a ?C1. ?C1 rdfs:subClassOf+ ?C2 }

类似地:

如果X在P1中具有值V,并且P1是P2的子性质,那么X在P2中具有值V。

可以表示为:

 CONSTRUCT { ?X ?P2 ?V }
 WHERE { ?X ?P1 ?V . ?X rdfs:subPropertyOf+ ?P2 }

这就是您所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.