rdflib triples 匹配始终为空的问题

写代码的时候遇到了一个问题,花了好长时间解决,记录一下,避免再出问题
完整代码如下所示:

# 导入用于处理文件的标准库
import os
from rdflib import Graph, URIRef
# 指定要创建的TTL文件的名称
filename = "example.ttl"# 创建文件并打开
with open(filename, 'w') as file:# 写入第一个命名空间声明file.write("@prefix ex: <http://example.com/> .\n")# 写入第二个命名空间声明file.write("@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n")file.write("\n")  # 添加一个空行以分隔命名空间声明和资源描述# 使用命名空间前缀写入资源描述file.write("ex:resource1  a  ex:Resource ;\n")file.write("         ex:property  \"value1\" .\n")file.write("\n")  # 添加一个空行以分隔不同的资源描述file.write("ex:resource2  a  ex:Resource ;\n")file.write("         ex:property  \"value2\" .\n")file.write("\n")  # 添加一个空行以分隔不同的资源描述# 也可以使用第二个命名空间来描述资源file.write("foaf:person  a  foaf:Person ;\n")file.write("         foaf:name  \"John Doe\" .\n")# 打印文件已创建的消息
print(f"TTL file '{filename}' has been created.")# 指定TTL文件的名称
filename = "example.ttl"# 创建一个RDF图对象
g = Graph()# 读取文件并将其内容加载到RDF图对象中
g.parse(filename, format='turtle')# 现在可以查询图对象了。例如,查询所有资源及其属性:
for s, p, o in g:print(f"Subject: {s}, Predicate: {p}, Object: {o}")# 打印图中所有的主语,看看是否有你期望的资源URI
print("All subjects in the graph:")
for s in g.subjects():print(s)
resource_uri="http://example.com/resource1"# 使用startswith方法检查URI的开头部分
if any(s.startswith(resource_uri) for s in g.subjects()):print(f"{resource_uri} exists in the graph.")
# 检查资源URI是否在图中
if resource_uri in g.subjects():print(f"{resource_uri} exists in the graph.")# 查询与资源URI相关的三元组
print("Triples related to resource_uri:")
for s, p, o in g.triples((None, None, None)):if s.startswith(resource_uri):print(f"Resource: {s}, Property: {p}, Value: {o}")
print("Triples related to resource_uri:")
for s, p, o in g.triples((resource_uri, None, None)):print(f"Resource: {s}, Property: {p}, Value: {o}")# 关闭图对象(虽然在Python脚本结束时会自动关闭,但显式关闭是一个好习惯)
g.close()

在这里发现资源存在,存储正确,但是相应的triples匹配始终输出为空,花了好久时间排查,这里是需要加入URIRef(),即将

for s, p, o in g.triples((resource_uri, None, None)):print(f"Resource: {s}, Property: {p}, Value: {o}")

改为

for s, p, o in g.triples((URIRef(resource_uri), None, None)):print(f"Resource: {s}, Property: {p}, Value: {o}")

或者可以使用

from rdflib import Graph, URIRef, Namespace
yaga = Namespace("http://example.com/resource1")
resource_uri = yaga.resource1
print("Triples related to resource_uri:")
for s, p, o in g.triples((resource_uri, None, None)):print(f"Resource: {s}, Property: {p}, Value: {o}")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细解读自动化测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件测试是软件开发过程中一个必不可少的环节。传统的软件测试方…

抓取Google时被屏蔽怎么办?如何避免?

在当今数字化时代&#xff0c;数据采集和网络爬取已成为许多企业和个人必不可少的业务活动。对于爬取搜索引擎数据&#xff0c;特别是Google&#xff0c;使用代理IP是常见的手段。然而&#xff0c;使用代理抓取Google并不是一件轻松的事情&#xff0c;有许多常见的误区可能会导…

顶顶通呼叫中心中间件电话黑名单系统介绍

黑名单 有显示成功和失败导入数&#xff0c;可以禁用也可以启用&#xff0c;如果禁用状态就是不使用这一组黑名单&#xff0c;多个号码核验就是验证号码存不存在。黑名单只有管理员和操作员可以配置&#xff0c;租户是看不到黑名单的。但是黑名单跟租户是互通的。 可以单个号码…

【智能算法应用】基于麻雀搜索算法的二维最大熵图像阈值分割

目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 最大熵法是由 Kapur 于 1985 年所提出的&#xff0c; 该方法的阈值选取标准取决于图像中最大化分 割的目标区域和背景区域…

leetcode 1 ~ 100

文章目录 1. 两数之和&#xff08;用哈希表减少查找的时间复杂度&#xff09;2. 两数相加&#xff08;高精度加法&#xff09;3.无重复字符的最长子串&#xff1a;&#xff08;模板&#xff1a;经典的滑动窗口算法&#xff09;5. 最长回文子串&#xff08;枚举&#xff09;6. Z…

STM32F1#1(入门了解)

一、STM32开发平台和工具 1.1 STM32芯片介绍 典型微控制器由CPU&#xff08;运算器、控制器&#xff09;、RAM、ROM和输入输出组成。 1.2 STM32核心板 STM32核心板配件&#xff1a; ①JTAG/SWD仿真-下载器 ②通信-下载模块 ③OLED显示屏 1&#xff09; 通信-下载模…

前端项目学习记录2:sass的使用

1.安装sass pnpm i sass2.配置vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path"; //引入svg需要用到的插件 import { createSvgIconsPlugin } from vite-plugin-svg-icons export default defineConf…

spring的高阶使用技巧1——ApplicationListener注册监听器的使用

Spring中的监听器&#xff0c;高阶开发工作者应该都耳熟能详。在 Spring 框架中&#xff0c;这个接口允许开发者注册监听器来监听应用程序中发布的事件。Spring的事件处理机制提供了一种观察者模式的实现&#xff0c;允许应用程序组件之间进行松耦合的通信。 更详细的介绍和使…

英语笔记 1

Although the rich might look down upon the poor, it is important to remember that everyone deserves to be treated with respect.

中文文本特征提取之自动分词

关键词&#xff1a;在某一个类别的文章中&#xff0c;出现的次数很多&#xff0c;但是在其他类别的文章当中出现很少 from sklearn.feature_extraction.text import CountVectorizer import jiebadef chinese_text_extraction02():"""中文文本特征提取&#xf…

Python 正则表达式 (?=...) 和 (?<=...) 符号

Python 正则表达式 引言正文示例1示例2示例3示例4 引言 今天遇到了一个比较棘手的问题&#xff0c;于是终于打算要对正则表达式中的 (?...) 和 (?<...) 符号动手了。 正文 (?...) 表示当 … 匹配时&#xff0c;匹配成功&#xff0c;但不消耗字符串中的任何字符。这个…

【自用】春秋招实习笔试常见问题

数据结构常见问题 map 基本操作 储存键值对<key,pair>&#xff0c;自动按照key排序 #include<map> //新建 map<string,int> myMap; //插入 myMap[str1] 1; //查找 if(myMap.count(str1)0){cout<<"not found"<<endl;} //遍历 for (…

海外市场成 ISV 新掘金地?生成式 AI 如何加速业务创新实践?Zilliz 有话说

期望了解 Zilliz 最新动态&#xff1f;想要与 Zilliz 线下探讨 AI 时代向量数据库的全球化布局思考及典型实践&#xff1f; 机会来啦&#xff01;5 月 10 日&#xff0c;Zilliz 将闪现亚马逊云科技的两场活动现场&#xff08;苏州、西安&#xff09;&#xff0c;与大家共话行业…

Ubuntu将软件图标添加到应用列表

一.简介snap snap和yum&#xff0c;apt一样都是安装包工具&#xff0c;但是snap里的软件源是自动更新到最新版本&#xff0c;最好用 比如Ubuntu的软件商城就是使用的snap软件包 二. Ubuntu软件商城更新 1.ps -ef | grep snap-store 查询并kill snap-store的所有进程 2.sudo …

【仪酷LabVIEW AI工具包案例】使用LabVIEW AI工具包+YOLOv5结合Dobot机械臂实现智能垃圾分类

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f384;所属专栏&#xff1a;『仪酷LabVIEW AI工具包案例』 &#x1f4d1;上期文章&#xff1a;『【YOLOv9】实战二&#xff1a;手把手教你使用TensorRT实现YOLOv…

C++之STL-priority_queue和仿函数的讲解

目录 一、priority_queue的介绍和使用 1.1 priority_queue的介绍 1.2 priority_queue的基本接口 二、仿函数的介绍 2.1 基本概念 2.2 适用场景 三、模拟实现priority_queue 3.1 向上调整算法 3.2 向下调整算法 3.3 整体框架 一、priority_queue的介绍和使用 1.1 prio…

基于卷积神经网络的一维信号降噪(简单版,MATLAB)

简单演示一下基于卷积神经网络的一维信号降噪&#xff0c;有个大致印象即可。 %% Plot the previous training CNN. set_plot_defaults(on) load(denoiser_sparse.mat); h1{1} double(conv1); h1{2} double(conv2); h1{3} reshape(double(conv3),[8,1,17]); figure(1) [r,c…

Java_异常

介绍 编译时异常&#xff1a; 除RuntimeException和他的子类&#xff0c;其他都是编译时异常。编译阶段需要进行处理&#xff0c;作用在于提醒程序眼 运行时异常&#xff1a; RuntimeException本身和其所有子类&#xff0c;都是运行时异常。编译阶段不报错&#xff0c;是程序…

python之enumerate()函数使用总结

enumerate() 函数是一个内置函数&#xff0c;用于在迭代过程中同时获取元素的索引和值。它返回一个枚举对象&#xff0c;包含了索引和对应的元素。 1. enumerate() 函数的语法 如下&#xff1a; enumerate(iterable, start0) 参数说明&#xff1a; iterable&#xff1a;必需…

C++怎样产生随机数

C怎样产生随机数? 这里要用到的是 rand() 函数和 srand() 函数 rand() 会返回一随机数值, 范围在 0 至 RAND_MAX ,RAND_MAX 定义在 stdlib.h, 其值根据系统配置设定 例如&#xff1a; #include<stdio.h> #include<stdlib.h> int main() {for(int i0;i<10;i)…