neo4j - Neosemantics:链接本体和标签属性图
问题描述
我正在尝试将 neo4j 中的现有标签属性图导出为 RDF,并尝试为此目的使用新语义,并且为了 PoC,我尝试将示例数据库与 Neo4j 桌面预装的电影数据集一起使用。
以下是我遵循的步骤
- 在此处使用密码参考创建本体
- 数据已经存在于 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> .
........
我可以像这样使用 Cypher 针对本体验证标签属性图
// 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>
任何指针将不胜感激。
谢谢
解决方案
仅当您要将 RDF 数据存储到 Neo4j 中时才需要 GraphConfig,但如果您使用的是“本机”属性图,则不需要它。
你可以摆脱它运行call n10s.graphconfig.drop();
完成后,对 cypher/RDF 端点的 POST 请求应返回序列化为 RDF/XML 的预期结果
推荐阅读
- json - 如何在 Firebase(Flutter/dart)中添加具有 DocumentReference 类型的对象?
- spring-data-jpa - 在 jpa 插入期间遇到死锁情况
- c++ - 如何使用 Ceres Solver 库拟合二阶多元多项式(3D 表面)
- python-3.x - Python中的浏览器管理器
- python - 在 Python 中使用 globals() 好吗?
- java - 仅当未从特定 java 文件调用方面时,如何使方面工作
- statistics - 多重比较的 Bonferroni 方法
- mongodb - 如何在 express 和 mongodb 中获取对象的单个键/值?
- reactjs - “绝对”定位视图位置在初始渲染后发生变化
- javascript - 将 DIV 位置更改为 DOM 的静态部分