Neo4j 新语义:本体与标签属性图的链接

Neo4j 新语义:本体与标签属性图的链接,neo4j,rdf,Neo4j,Rdf,我正在尝试将neo4j中现有的标签属性图导出为RDF,并尝试为此使用neosemantics,为了PoC,我尝试使用带有电影数据集的示例数据库,该数据库预装在neo4j桌面上 以下是我遵循的步骤 使用cypher创建本体 neo4j桌面中已存在数据 初始化配置调用n10s.graphconfig.Init() 差不多就是这样。我很确定我错过了一些步骤,阅读文档可以给我一些提示,但我想在这里问一下,以获得一个方向,从而加快一点 我可以使用:GEThttp://localhost:7474/rdf/

我正在尝试将neo4j中现有的标签属性图导出为RDF,并尝试为此使用neosemantics,为了PoC,我尝试使用带有电影数据集的示例数据库,该数据库预装在neo4j桌面上

以下是我遵循的步骤

  • 使用cypher创建本体
  • neo4j桌面中已存在数据
  • 初始化配置
    调用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> .
    
    ........
    
    @前缀owl:。
    @前缀rdfs:。
    猫头鹰:对象属性;
    rdfs:范围;
    rdfs:域;
    rdfs:标签“已写入”。
    猫头鹰:对象属性;
    rdfs:范围;
    rdfs:域;
    rdfs:标签“范围”。
    猫头鹰:对象属性;
    rdfs:标签“已采取行动”;
    rdfs:域;
    rdfs:范围。
    ........
    
    我可以像这样使用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
    
    //DatatypeProperty域语义元规则
    
    MATCH(n:Class)只有在将RDF数据存储到Neo4j中时才需要GraphConfig,但如果使用的是“本机”属性图,则不需要它

    您可以通过运行
    调用n10s.graphconfig.drop()摆脱它


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

    您在哪一点加载了RDF数据?我的意思是,到目前为止,您是否只创建了本体模式?另外,您不需要调用导出函数吗?如文档中解释的如何导出RDF数据:@UninformedUser数据是现有的neo4j图,而不是从现有RDF导入的。我只创建了本体,我希望可以将数据导出为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>