0
我想测试一个OWL本体。因为它很大,所以我想自动创建具名的个人作为每个类的成员,每个类有一个类,名称为类,并附加“1”。据我所知,在SPARQL更新中没有迭代机制。但是可能有其他方法来实现它。任何想法,将不胜感激。为本体的所有类创建测试个体
我想测试一个OWL本体。因为它很大,所以我想自动创建具名的个人作为每个类的成员,每个类有一个类,名称为类,并附加“1”。据我所知,在SPARQL更新中没有迭代机制。但是可能有其他方法来实现它。任何想法,将不胜感激。为本体的所有类创建测试个体
不应该是困难的:
SELECT ?cls ?ind {
?cls a owl:Class .
BIND(IRI(CONCAT(STR(?cls), "1")) AS ?ind)
}
该查询生成每个类的个人。您可以将此SELECT查询置于SPARQL更新查询的WHERE部分中(未经测试):
INSERT {
?ind a ?cls .
} WHERE {
?cls a <http://www.w3.org/2002/07/owl#Class>
BIND(iri(concat(str(?cls), "1")) AS ?ind)
}
“迭代”处于SPARQL匹配中。想想它的方式是引擎产生一个包含'WHERE'子句中每个匹配项的结果集。然后对每个匹配执行'SELECT' /'CONSTRUCT' /'DELETE' /'INSERT'/...子句。因此,SPARQL更像是一种声明性语言,试图用程序术语思考它并不符合范式。 – scotthenninger