Graph Config Params (全局配置)
call n10s.graphconfig.init( params )
以下这些配置在Neo4j
图谱的整个生命周期都起作用,贯穿import/export/delete/preview/stream
这些API的调用过程。
-
handleVocabUris
值(默认)
:‘SHORTEN’, ‘SHORTEN_STRICT’, ‘IGNORE’,‘MAP’,‘KEEP’ (‘SHORTEN’)
'SHORTEN'
, 全称 uris 会通过使用前缀代替从而缩短属性名、关系名和标签,前缀会通过命名空间前缀管理来定义,如果没有定义的会产生诸如ns1 ns2 ...
格式的代替。'SHORTEN_STRICT'
, 同样的行为“SHORTEN”,但是如果没有在导入的RDF中为名称空间预定义前缀,则失败。'IGNORE'
uris 会被忽略,只有本地名称保留。'MAP'
词汇表元素映射应用于导入的过程。'KEEP'
uris 原封不动。
参照:在RDF中识别元素的URIs(例如:资源,属性等等)命名空间变短了,从而让人更易阅读,Cypher更容易查询。
例如: http://neo4j.org/vocab/sw#name缩短为ns0_\_name
(注意前缀和本体名称之间的两个下划线)。类似的,http://www.w3.org/1999/02/22-rdf-syntax-ns#type 会被转换为rdf\_\_type
。
-
handleMultival
值(默认)
:‘OVERWRITE’, ‘ARRAY’ (‘OVERWRITE’)
'OVERWRITE'
属性值视为唯一,导入RDF中多个属性值会被重写。'ARRAY'
属性存储在数组中,允许存储多个值。除非设置了multivalPropList,否则全部属性(多个属性)都会存储为数组。 -
multivalPropList
值(默认)
:string[]存储全称uri的列表,列表中的属性多个会存储为数组,剩下的属性多个会被重写(单一)。
-
keepLangTag
值(默认)
:boolean(false)
当设置为 true ,language
标签会作为一个属性值,这在多语言数据集中非常有用,另外,可通过getLangValue
函数来获取相应的值。 -
handleRDFTypes
值(默认)
:‘LABELS’, ‘NODES’,‘LABELS_AND_NODES’ (‘LABELS’)'LABELS'
,rdf:type 描述在Neo4j中会作为节点的 label 引入。'NODES'
, rdf:type 描述会作为与一个代表类的节点的rdf__type
关系。'LABELS_AND_NODES'
rdf:type 描述会以冗余方式存储,也即上述两种方式。 -
keepCustomDataTypes
值(默认)
:boolean(false)
当设置为true,所有包含自定义属性类型的属性会存储为紧接自定义数据类型IRIs的字符串。
- customDataTypePropList
值(默认)
:string[]
当设置后,列表中属性的自定义类型才会被引入。 - applyNeo4jNaming
值(默认)
:boolean (false)
当设置为true后,而且和handleVocabUris: 'IGNORE',
一起使用,词典元素会被大小写转化(关系类型所有字符大写,lable的首字母大写)。
自定义命名空间的前缀
链接
当我们在RDF导入中使用url
简写时,我们拥有让neosemantics
自动为引入RDF文件中出现的命名空间分配前缀。因此,在我们引入RDF之前,一些非常流行的前缀需要提前设置,这些包括:
"http://www.w3.org/1999/02/22-rdf-syntax-ns#" prefixed as rdf
"http://www.w3.org/2004/02/skos/core#" prefixed as skos.
无论何时,我们可以通过执行n10s.nsprefixes.list
代码,来检查运行所使用的前缀。
call n10s.nsprefixes.list();
在运行你第一个import
程序之前,方法应该没有任何返回结果,但是当你第一次执行后,它应该返回一个至少包含以下实体的列表。
prefix | namespace |
---|---|
“skos” | “http://www.w3.org/2004/02/skos/core#” |
“sch” | “http://schema.org/” |
“sh” | “http://www.w3.org/ns/shacl#” |
“rdfs” | “http://www.w3.org/2000/01/rdf-schema#” |
“dc” | “http://purl.org/dc/elements/1.1/” |
“dct” | “http://purl.org/dc/terms/” |
“rdf” | “http://www.w3.org/1999/02/22-rdf-syntax-ns#” |
“owl” | “http://www.w3.org/2002/07/owl#” |
比如说,我们要引入使用了http://neo4j.org/voc/sw#命名空间的RDF数据集,然后我们需要让其成为neo
的前缀,而不是由neosemantics
自动分类的ns0或者(ns7)
。可以通过调用下面的代码来实现:
CALL n10s.nsprefixes.add("neo", "http://neo4j.org/vocab/sw#");
而且然后,当导入RDF数据命名空间被检测到的话,就会用到neo
的前缀。
执行prefix定义时,要仔细确认,尤其是在导入RDF数据之后,你可以重写正在使用的命名空间,这会影响重新构造已经导入的RDF数据。
有时,我们需要定义一系列RDF头部的前缀,这可以来自SPAQL
查询,来自Turtle
的文档头部,或者RDF/XML
的文档底部,你可以从你的RDF文档中截取,然后传进addNamespacePrefixesFromText
方法里,它会提取命名空间的定义,然后通过触发n10s.nsprefixes.addFromText
添加它们中的每个个体。示例代码:
WITH '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:cert="http://www.w3.org/ns/auth/cert#"
xmlns:dct="http://purl.org/dc/terms/"' as txt
CALL n10s.nsprefixes.addFromText(txt) yield prefix, namespace
RETURN prefix, namespace;
向Neo4j导入RDF数据时的一些注意
- 版本问题
neosemantics
从3.x 版本过渡到4.x版本时,导入rdf文件
会存在一些区别
参考:neosemantics
- 文件导入问题
在window
本地使用n10s
进行rdf数据导入时,n10s官网教程给出下面的解决方案:
CALL n10s.rdf.import.fetch("file://tmp/customDataTypes.ttl","Turtle")
但在neo4j browser
中导入会出现下面无文件或者路径的问题,从而导入失败
解决:最快捷的解决方式便是搭建静态文件服务器(以nodeJs
为例)
- 安装
http-server
npm install -g http-server
- 在需要导入的
rdf
文件所在目录中,启动文件服务
http-server
- 按照提示在浏览器输入下面的地址,然后选择要导入文件,右键选择复制连接地址
- 在
neo4j browser
中输入路径即可