我需要将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查询语言的了解有限.我真的很感激任何指针.
看起来格式已经几乎完全合法的RDF(在N-Triples语法中),因此实际上最简单的方法就是修复一些小问题,然后使用支持N-Triples格式的RDF解析器来处理文件.
合法的N-Triples有两件事不太正确:
显然,第一点是微不足道的.第二个可能更具挑战性.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.