You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现rdflib中.n3()方法的逆操作:将N3字符串转回URIRef/Literal

在RDFlib中解析N3格式字符串还原为URIRef/Literal对象

RDFlib内置了直接实现这个逆操作的方法,不用自己写解析逻辑:

1. 解析单个N3术语(URIRef/Literal/BNode)

使用rdflib.util.from_n3()函数,专门用来解析单个N3格式的术语字符串,返回对应的RDFlib对象:

示例:解析URIRef字符串

from rdflib import util
n3_uri = "<http://example.org/my-resource>"
uri_obj = util.from_n3(n3_uri)
# 返回结果:URIRef('http://example.org/my-resource')

示例:解析Literal字符串

from rdflib import util

# 带语言标签的Literal
n3_literal_lang = '"Hello"@en'
literal_lang_obj = util.from_n3(n3_literal_lang)
# 返回结果:Literal('Hello', lang='en')

# 带数据类型的Literal
n3_literal_dt = '"123"^^<http://www.w3.org/2001/XMLSchema#integer>'
literal_dt_obj = util.from_n3(n3_literal_dt)
# 返回结果:Literal('123', datatype=URIRef('http://www.w3.org/2001/XMLSchema#integer'))

2. 解析完整的N3三元组语句

如果要解析完整的三元组字符串(比如"<http://ex.org/s> <http://ex.org/p> "test" ."),可以用Graph的parse()方法指定format='n3'来加载:

from rdflib import Graph

g = Graph()
triple_str = '<http://example.org/subject> <http://example.org/predicate> "Sample Literal" .'
g.parse(data=triple_str, format='n3')

# 遍历获取解析后的三元组对象
for s, p, o in g:
    print(f"Subject type: {type(s)}, Predicate type: {type(p)}, Object type: {type(o)}")

相关文档参考

  • rdflib.util.from_n3()的详细参数与行为,可查看RDFlib官方文档中util模块的对应条目
  • N3格式解析的整体说明,在RDFlib解析器相关文档中有专门章节

内容的提问来源于stack exchange,提问作者Thomas Kimber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:35:22