新语义:链接本体和标签属性图

问题描述

我正在尝试将 neo4j 中现有的 Label 属性图导出为 RDF,并尝试为此使用新语义学,为了 PoC,我尝试将示例数据库与 Neo4j 桌面预装的电影数据集一起使用。

以下是我遵循的步骤

  1. 使用密码Reference here创建本体
  2. neo4j 桌面中已经存在数据
  3. 初始化配置 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>

任何指点将不胜感激。

谢谢

解决方法

GraphConfig 仅在您要将 RDF 数据存储到 Neo4j 中时才需要,但如果您使用的是“本机”属性图,则不需要它。

你可以摆脱它运行 call n10s.graphconfig.drop();

完成后,您对密码/RDF 端点的 POST 请求应返回序列化为 RDF/XML 的预期结果