问题描述
我正在尝试将 neo4j 中现有的 Label 属性图导出为 RDF,并尝试为此使用新语义学,为了 PoC,我尝试将示例数据库与 Neo4j 桌面预装的电影数据集一起使用。
以下是我遵循的步骤
- 使用密码Reference here创建本体
- neo4j 桌面中已经存在数据
- 初始化配置
CALL n10s.graphconfig.init();
差不多就是这样。我很确定我错过了一些步骤,阅读文档可以给我一些提示,但我也想在这里问一下以获得方向以加快速度。
我可以使用 :GET http://localhost:7474/rdf/neo4j/onto
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<neo4j://graph.schema#WROTE> a owl:ObjectProperty;
rdfs:range <neo4j://graph.schema#Movie>;
rdfs:domain <neo4j://graph.schema#Person>;
rdfs:label "WROTE" .
<neo4j://graph.schema#RANGE> a owl:ObjectProperty;
rdfs:range <neo4j://graph.schema#Class>;
rdfs:domain <neo4j://graph.schema#ObjectProperty>;
rdfs:label "RANGE" .
<neo4j://graph.schema#ACTED_IN> a owl:ObjectProperty;
rdfs:label "ACTED_IN";
rdfs:domain <neo4j://graph.schema#Person>;
rdfs:range <neo4j://graph.schema#Movie> .
........
// DatatypeProperty domain semantics Meta-rule
MATCH (n:Class)<-[:DOMAIN]-(p:DatatypeProperty)
WITH disTINCT n.uri as classUri,n.label as classLabel,p.uri as prop,p.label as propLabel
MATCH (x) WHERE x[propLabel] IS NOT NULL AND NOT classLabel IN labels(x)
RETURN id(x) AS nodeUID,'domain of ' + propLabel + ' [' + prop + ']' AS `check Failed`,'Node labels: (' + reduce(s = '',l IN Labels(x) | s + ' ' + l) + ') should include ' + classLabel AS extraInfo
但是我不能做的是以 RDF 的形式访问数据,例如
:POST /rdf/neo4j/cypher
{ "cypher" :"match (m: Movie)<-[:ACTED_IN]-(actor: Person) match (m)<-[:DIRECTED]-(director: Person) where m.title = 'The Matrix' RETURN m,actor,director","format": "RDF/XML"}
返回空
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-Syntax-ns#">
</rdf:RDF>
任何指点将不胜感激。
谢谢
解决方法
GraphConfig 仅在您要将 RDF 数据存储到 Neo4j 中时才需要,但如果您使用的是“本机”属性图,则不需要它。
你可以摆脱它运行 call n10s.graphconfig.drop();
完成后,您对密码/RDF 端点的 POST 请求应返回序列化为 RDF/XML 的预期结果