从CSV三元组生成RDF图

jit*_*dra 1 csv rdf graph

我需要将CSV文件(制表符分隔三元组)[subject predicate object]转换为RDF图.CSV文件看起来像这样:

<http://gadm.geovocab.org/id/1_3214_geometry_1km.rdf> 

<http://code.google.com/p/ldspider/ns#headerInfo> _:header14010232801335542310249
_:header14010232801335542310249 <http://www.w3.org/2006/http#responseCode> 200^^<http://www.w3.org/2001/XMLSchema#integer>
_:header14010232801335542310249 <http://www.w3.org/2006/http#date> Fri, 27 Apr 2012 15:58:31 GMT
_:header14010232801335542310249 <http://www.w3.org/2006/http#server> Apache/2.2.16 (Debian)
_:header14010232801335542310249 <http://www.w3.org/2006/http#expires> Sat, 28 Apr 2012 15:58:31 GMT
_:header14010232801335542310249 <http://www.w3.org/2006/http#content-length> 4173
Run Code Online (Sandbox Code Playgroud)

我对RDF/RDF查询语言的了解有限.我真的很感激任何指针.

Jee*_*tra 5

看起来格式已经几乎完全合法的RDF(在N-Triples语法中),因此实际上最简单的方法就是修复一些小问题,然后使用支持N-Triples格式的RDF解析器来处理文件.

合法的N-Triples有两件事不太正确:

  1. 每行应以'.'结尾.
  2. 日期值不会写为合法的RDF文字值.

显然,第一点是微不足道的.第二个可能更具挑战性.N-Triples语法中的RDF文字用双引号写成字符串.因此,要转换Fri, 27 Apr 2012 15:58:31 GMT为合法的RDF文字,您所要做的只是在其周围加上引号:

"Fri, 27 Apr 2012 15:58:31 GMT" 
Run Code Online (Sandbox Code Playgroud)

但是,这只是使它成为字符串文字.如果你想更进一步,实际上使它成为一个格式正确的数据类型文字(使用xsd:dateTime数据类型,你需要将其转换为正确的dateTime格式.这个特定的例子需要成为20120327T15:58:31Z,并在N-Triples中的数据类型使用^^<datatype-URL>语法附加到文字,因此它将成为:

"20120327T15:58:31Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> 
Run Code Online (Sandbox Code Playgroud)

总而言之,您的整条生产线将成为:

_:header14010232801335542310249 <http://www.w3.org/2006/http#date>  "20120327T15:58:31Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
Run Code Online (Sandbox Code Playgroud)

或者,如果您发现CSV文件的其他部分转换有问题,您还可以使用任何旧的CSV解析器并编写一个小程序来读取CSV文件并使用RDF框架从其值创建RDF语句/您选择的编程语言中的API.