我想将Wikidata加载到virtuoso中。经过几天的搜索,我找不到任何教程或至少有人使用virtuoso来查询wikidata。我不想花钱在服务器上加载50G +数据。 为什么要用演奏家而不是火焰画呢?因为我习惯将virtuoso用于DBpedia。
答案 0 :(得分:-3)
正如在此和其他地方所指出的那样,将Wikidata加载到Virtuoso中只不过是通过下载并创建乌龟文件(最好是拥有多个乌龟文件)并将其批量加载的问题。要获得不错的性能,有许多参数必须在virtuoso.ini中进行更改。
但是,由于将Wikidata加载到Virtuoso中存在一个问题,这是由于Virtuoso中的一个长期存在的错误与地理坐标的实现有关。要解决此问题,需要修补Virtuoso,而不是为了胆小的人。
以下是有关如何使Virtuoso的开源版本加载Wikidata的说明。请注意,使用生成的KB修补地理坐标代码可能会导致问题。
1 /修补地理坐标文字代码,编辑virtuoso-opensource / libsrc / Wi / rdfbox.c以注释掉检查非地面坐标的两段代码。请注意,这是Virtuoso中的 bug ,并且Wikidata符合此数据类型的规范。
/ *非地面坐标,如果(RDF_BOX_GEO_TYPE ==类型&& DV_GEO!= box_dtp && DV_LONG_INT!= box_dtp) sqlr_new_error(“ 42000”,“ RDFGE”,“具有几何RDF类型和非几何内容的RDF框”); * /
/ *非地面坐标,如果(类型== RDF_BOX_GEO && box_dtp!= DV_GEO) sqlr_new_error(“ 22023”,“ SR559”,“几何类型的RDF框需要一个空间对象作为值,而不是类型为%s(%d)的值”,dv_type_title(box_dtp),box_dtp); * /
2 /修补Turtle加载程序,在virtuoso-opensource / libsrc / Wi / ttlpv.sql中编辑rdf_rl_lang_id的结尾,如下所示。请注意,这是Virtuoso中的另一个 bug ,由并行加载不同语言的langstring触发。
id:= sequence_next('RDF_LANGUAGE_TWOBYTE',1,1); --pfps插入rdf_language(rl_twobyte,rl_id)值(id,ln); 插入软的rdf_language(rl_twobyte,rl_id)值(id,ln); 从事工作; -如果加载非事务性,这仍然是一个尖锐的事务边界。 log_enable(old_mode,1); --pfps获取实际的ID,因为它可能有所不同 id:=(从DB.DBA.RDF_LANGUAGE中选择RL_TWOBYTE,其中RL_ID = ln); rdf_cache_id('l',ln,id); 返回ID;