基于RDF本体模型和图数据库实现知识查询与推理

基于RDF本体模型和图数据库实现知识查询与推理

  • 基于RDF本体模型和图数据库实现知识查询与推理
    • 一、案例本体模型解释
    • 二、数据构建与查询

Here’s the table of contents:

基于RDF本体模型和图数据库实现知识查询与推理

    本文主要使用ONgDB图数据库和Neosemantics组件,展示了一个快速接入RDF数据的案例,关于组件的使用可以查看Neosemantics-Docs。另外Neosemantics-1.x组件和ONgDB-1.x的适配,软件发布链接可以查看Neosemantics-Releases。

Neosemantics 用户指南

    Neosemantics是一个插件,可以在ONgDB中使用RDF。RDF是用于数据交换的W3C标准模型。Neosemantics以无损方式将RDF数据存储在ONgDB中(导入的RDF随后可以导出,而不会在此过程中丢失单个三元组)。也可以按需将属性图数据从 ONgDB 导出为 RDF。Neosemantics的其他功能包括模型映射和对ONgDB图的推理。

一、案例本体模型解释

    本次案例本体分为三个部分,自定义本体层【Custom Ontology】、领域本体层【Domain Ontology】、实例数据层【Instance Data】,数据是按照三层设计来构建的。其中自定义本体层是领域本体的自定义扩展。

  • 图片来源:QuickGraph#9 The fashion Knowledge Graph. Inferencing with Ontologies in Neo4j

服装材料本体设计案例

    从下面的链接访问graphene.json文件可以加载该本体模型的设计到Graphene工具。

# 从graphene.json加载本体模型的设计
https://github.com/ongdb-contrib/neosemantics-python-examples/blob/master/inferencing/ontologies/graphene.json

Graphene本体模型可视化

二、数据构建与查询

    按照中的设计,现在可以进行数据的构建了,关于如何运行数据采集、数据构建、数据查询,可以参考neosemantics-python-examples。下面是完整运行的脚本【可以快速体验RDF和属性图结合的使用】:

// ongdb-enterprise-1.0.x\neosemantics-1.0.x
// Resource Index | 导入RDF时需要给`Resource`节点的`uri`创建索引
CREATE INDEX ON :Resource(uri);

// Index creation
// 加载数据时为节点创建索引可以提高检索性能
CREATE INDEX ON :Item(itemId);
CREATE INDEX ON :Department(deptName);
CREATE INDEX ON :Category(catName);
CREATE INDEX ON :Brand(brandName);

// Import Clothing Materials Ontology
// 导入服装材料本体
CALL semantics.importOntology("http://www.nsmntx.org/2019/10/clothingMaterials","Turtle", { keepLangTag: true, handleMultival: 'ARRAY'});

// Load data
// 加载数据
LOAD CSV WITH HEADERS FROM "file:///next_products.csv"  AS row
MERGE (b:Brand { brandName : row.brandName })
MERGE (dep:Department { deptName: row.itemDepartment })
MERGE (cat:Category { catName: row.itemCategory })
MERGE (i:Item { itemId: row.itemId }) ON CREATE set i.itemName = row.itemName, i.composition = row.itemComposition, i.url = row.url
MERGE (i)-[:IN_CAT]->(cat)
MERGE (i)-[:IN_DEPT]->(dep)
MERGE (i)-[:BY]->(b) ;

// Annotate your data with the ontology
// 将本体和数据实例连接
MATCH (c:Class) UNWIND c.label as langLabel
WITH collect( {key: toLower(semantics.getValue(langLabel)), classNode: c }) as termToClassMap
MATCH (i:Item)
FOREACH (material IN [x in termToClassMap where toLower(i.composition) contains x.key | x.classNode ] | MERGE (i)-[:CONTAINS]->(material)) ;

// Extend the ontology with custom categories
// 自定义扩展本体`AnimalBasedMaterial`
WITH '@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix clmat: <http://www.nsmntx.org/2019/10/clothingMaterials#> .
@prefix ccat: <http://www.nsmntx.org/customCats#> .

ccat:AnimalBasedMaterial
a owl:Class ;
rdfs:label "Animal-based material", "Materiales de origen animal"@es, "matière dorigine animale"@fr .

clmat:Leather
rdfs:subClassOf ccat:AnimalBasedMaterial .

clmat:Silk
rdfs:subClassOf ccat:AnimalBasedMaterial .

clmat:Wool
rdfs:subClassOf ccat:AnimalBasedMaterial .
'
AS onto
CALL semantics.importOntologySnippet(onto,"Turtle", { keepLangTag: true, handleMultival: 'ARRAY'}) YIELD terminationStatus, triplesLoaded
RETURN terminationStatus, triplesLoaded ;

// list synthetic materials  in different languages
// 列出不同语言的`合成材料`
UNWIND ['es','en','fr'] AS lang
MATCH (w:Class { name: 'SyntheticFibre'})<-[:SCO*]-(woolVariant)
RETURN lang, COLLECT(semantics.getLangValue(lang,woolVariant.label)) as syntheticMaterials;

// fleeces by Berghaus
// 使用贝格豪斯的羊毛制作的产品
MATCH (:Category { catName: "Fleeces"})<-[:IN_CAT]-(i:Item)-[:BY]->(:Brand { brandName: "Berghaus"})
RETURN i.itemId as id, i.itemName as name, i.url as url, i.composition as composition;

// Brands producing hoodies
// 哪些品牌生产连帽衫
MATCH (:Category { catName: "Hoodies"})<-[:IN_CAT]-(i:Item)-[:BY]->(b:Brand)
RETURN b.brandName as brand, count(i) as productCount ORDER BY productCount DESC LIMIT 5 ;

// All leather products (explicit and implicit)
// 查找所有皮革制品(显性使用皮革和隐性使用皮革)
MATCH (leather:Class { name: "Leather"})
CALL semantics.inference.nodesInCategory(leather, { inCatRel: "CONTAINS" }) yield node AS product
WITH product MATCH (product)-[:BY]->(b:Brand)
return product.itemName AS product, b.brandName AS brand, product.composition AS composition ;

// Vegan trainers
// 查找没有使用动物材料的产品
MATCH (:Category {catName:"Trainers"})<-[:IN_CAT]-(item:Item)-[:BY]->(b:Brand), (ab:Class { name: "AnimalBasedMaterial"})
WHERE b.brandName IN ["Converse","New Balance","Nike","ASICS"]
AND NOT semantics.inference.inCategory(item,ab,{ inCatRel: "CONTAINS" })
RETURN item.url, item.itemName, item.composition ;

数据运行结果截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/12174.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

运行时内存数据区之虚拟机栈——操作数栈

操作数栈 每一个独立的栈帧中除了包含局部变量表以外&#xff0c;还包含一个后进先出(Last-In-First-Out)的操作数栈&#xff0c;也可以称之为表达式栈(Expression Stack)。操作数栈&#xff0c;在方法执行过程中&#xff0c;根据字节码指令&#xff0c;往栈中写入数据或提取数…

《花雕学AI》06:抢先体验ChatGPT的九个国内镜像站之试用与综合评测

最近ChatGPT持续大火&#xff0c;大家们是不是在网上看到各种和ChatGPT有趣聊天的截图&#xff0c;奈何自己实力不够&#xff0c;被网络拒之门外&#xff0c;只能眼馋别人的东西。看别人在体验&#xff0c;看别人玩&#xff0c;肯定不如自己玩一把舒服的啊。 上一期&#xff0…

视图的使用

为什么引入视图&#xff08;Views&#xff09; 如果您读过其他类似的书&#xff0c;可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢&#xff1f; 早期信息系统的设计与开发多采用模块驱动方式&am…

如何使用Win10搭建我的世界Minecraft服务器

简单几步在windwos搭建我的世界服务器,并通过cpolar工具将本地服务暴露到公网连接 1. Java环境搭建 以windows10系统为例&#xff0c;配置java环境&#xff0c;搭建我的世界服务器,下载最新版java版本 Java Downloads | Oracle 选择exe文件&#xff0c;下载完成后双击安装包…

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg&#xff0c;愿天下不再有肤浅的SQL Boy】 谈到大数据开发&#xff0c;占据绝大多数人口的就是SQL Boy&#xff0c;不接受反驳&#xff0c;毕竟大…

开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天

来源: 新智源 微信号&#xff1a;AI-era Meta的LLaMA模型开源&#xff0c;让文本大模型迎来了Stable Diffustion时刻。谁都没想 谁能想到&#xff0c;一次意外的LLaMA泄漏&#xff0c;竟点燃了开源LLM领域最大的创新火花。 一系列表现出色的ChatGPT开源替代品——「羊驼家族」…

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 接口关联 接口关联…

水塘抽样解决随机选择问题

1.简介 水塘抽样是一系列的随机算法&#xff0c;其目的在于从包含n个项目的集合S中选取k个样本&#xff0c;其中n为一很大或未知的数量&#xff0c;尤其适用于不能把所有n个项目都存放到内存的情况。最常见例子为Jeffrey Vitter在其论文中所提及的算法R。 2.算法步骤&#xff1…

机器学习算法系列(三)

机器学习算法之–对数几率回归&#xff08;逻辑斯蒂回归&#xff09;算法 上个算法&#xff08;算法系列二&#xff09;介绍了如何使用线性模型进行回归学习&#xff0c;但若要做的是分类任务&#xff0c;则需要找一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值…

一次etcd变更引发的惨案

问题描述 在做etcd的数据变更时候&#xff0c;etcd在组成集群的时候出现leader不断切换问题&#xff0c;导致集群不稳定&#xff0c;都面将不健康的etcd节点踢出&#xff0c;只剩etcd单节点&#xff0c;后面将踢出的etcd节点重新加入现有etcd&#xff0c;导致etcd集群奔溃&…

【故障诊断】基于 KPCA 进行降维、故障检测和故障诊断研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

快速搭建第一个SpringCloud程序

目录 1、Spring Boot项目脚手架快速搭建 1.1 生成工程基本配置 1.2 生成工程。 1.3 导入开发工具&#xff08;此处为Idea&#xff09; 1.4 运行代码 1.5 验证是否能访问 2、Spring Cloud环境搭建 2.1 版本匹配问题 2.2 Spring Cloud环境测试 3、引入Eureka Server 3…

运行时内存数据区之虚拟机栈——局部变量表

这篇内容十分重要,文字也很多,仔细阅读后,你必定有所收获! 基本内容 与程序计数器一样&#xff0c;Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;也是线程私有的&#xff0c;它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型&#xf…

【从零开始学Skynet】基础篇(六):MySql数据库安装操作

游戏服务端的另一项重要功能是保存玩家数据&#xff0c;Skynet提供了操作MySQL数据库、MongoDB数据库的模块。1、数据库安装 首先安装Mysql服务器&#xff0c;打开终端输入如下指令&#xff1a; sudo apt-get install mysql-server 按下回车&#xff0c;输入密码后开始安装&a…

项目1实现login登录功能方案设计第三版

需求优化点:MySQL表常用功能模块实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第2版的基础上进行优化:\ 优化点: VerificationCode(验证码储存库): 增加时间字段…

青藤首提“业安融合”理念,正式发布先进云安全方案CNAPP

4月18日&#xff0c;以“云时代&#xff0c;安全变了”为主题的2023年云安全高峰论坛在北京举行。会上&#xff0c;青藤首次提出“业安融合”理念&#xff0c;正式发布先进云安全方案CNAPP。 中国全面进入云和数字化时代 当前&#xff0c;全球已进入数字经济时代&#xff0c;…

前端自动化测试之葵花宝典

首先聊一下概念&#xff0c;Web 前端自动化测试是一种通过编写代码来自动化执行 Web 应用程序的测试任务的方法&#xff0c;它通常使用 JavaScript 和测试框架 (如 Selenium、Appium 等) 来实现。 Web 前端自动化测试的优点是可以提高测试效率、减少测试时间和测试成本&#x…

工业机器人远程监控解决方案

一、项目背景 随着我国科技不断进步发展和产业升级的不断进行&#xff0c;现阶段机器人应用在生产制造行业以及运输行业已经变得越来越广泛。工业机器人机构复杂、维护成本高&#xff0c;机器人应用的这一行业现状&#xff0c;对工业机器人生产企业的产品高品质服务能力提出了…

Mac远程控制工具有哪些

适用于Mac的远程控制工具有很多&#xff0c;这里我们给大家列举五个常用软件。 1、Apple Remote Desktop 苹果自带远程桌面正如其名称所承诺的那样。作为 Apple 出品的应用程序&#xff0c;您可以想象它的配置和上手是多么容易。从 App Store 下载 Apple Remote Desktop 后&a…

数据结构初阶(算法的复杂度 + 包装类 + 泛型)

文章目录一、算法复杂度1. 算法效率2. 时间复杂度&#xff08;1&#xff09; O的渐进表示法3. 空间复杂度二、包装2.1 为什么会出现包装2.2 分类2.3 装箱和拆箱&#xff08;1&#xff09;装箱/装包&#xff08;2&#xff09;拆箱/拆箱三、泛型3.1 泛型的基本概念3.2 泛型的使用…