2016-10-03 38 views
0

我想测试一个OWL本体。因为它很大,所以我想自动创建具名的个人作为每个类的成员,每个类有一个类,名称为类,并附加“1”。据我所知,在SPARQL更新中没有迭代机制。但是可能有其他方法来实现它。任何想法,将不胜感激。为本体的所有类创建测试个体

+0

“迭代”处于SPARQL匹配中。想想它的方式是引擎产生一个包含'WHERE'子句中每个匹配项的结果集。然后对每个匹配执行'SELECT' /'CONSTRUCT' /'DELETE' /'INSERT'/...子句。因此,SPARQL更像是一种声明性语言,试图用程序术语思考它并不符合范式。 – scotthenninger

回答

2

不应该是困难的:

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) 
} 
相关问题