python - 如何使用 Python 从 RDFLib 读取 URI?
问题描述
我有数千个URIRef
本体值,我试图获得以下字符串表示:
[rdflib.term.URIRef('http://purl.obolibrary.org/obo/RO_0002219'),
rdflib.term.URIRef('http://purl.obolibrary.org/obo/RO_0002551'),
rdflib.term.URIRef('http://purl.obolibrary.org/obo/uberon/core#indirectly_supplies')]
我可以单独访问每个人的链接(例如http://purl.obolibrary.org/obo/RO_0002219
)并获取它(例如surrounded by
),但是我如何使用 Python 来做到这一点?我有两种方法可以看到如何做到这一点,但我也无法弄清楚。一种方法是简单地使用RDFLib
库,但我没有找到翻译链接的函数。另一种方法是解析HTML
链接以获取红色值(我认为这对应于翻译)。
请注意,其中一些没有附加任何东西(例如http://purl.obolibrary.org/obo/uberon/core#indirectly_supplies
is 404: Not Found
)
解决方案
由于这些 URI 支持 RDF 内容协商,您只需获取 rdf 并将其加载到图表中,如下所示。获得图表后,您可以使用 SPARQL 从图表中查询您想要的属性。在下面的示例中,我获取了每个主题的标签。我还删除了您提供的 URI 之一,因为它是 404 的。
from rdflib import Graph, URIRef
uris = [URIRef('http://purl.obolibrary.org/obo/RO_0002219'), URIRef('http://purl.obolibrary.org/obo/RO_0002551')]
for uri in uris:
query = """
SELECT ?label WHERE {
<"""+str(uri)+"""> rdfs:label ?label.
}
"""
g = Graph()
g.parse(uri)
res = g.query(query)
for result in res:
print(result)
这给出了一个输出,
(rdflib.term.Literal('surrounded by', lang='en'),)
(rdflib.term.Literal('has skeleton'),)
推荐阅读
- java - 带有 RIOT API 的 Google API 无法解析 JSON
- android - 继续运行时异常:三星设备上的 android.view.DisplayListCanvas.throwIfCannotDraw
- java-8 - list.sort/Collections.sort 如何接受我的自定义比较器?[Java 8]
- c# - 从 C# 代码调用 PS 脚本 (Visual Studio 2017)
- spring - SpringBoot 应用程序中的国际化文件
- wordpress - Wordpress 显示除主页外的 404 错误
- javascript - Firestore 参考密钥(AutoID)在 FOR 循环中表现得非常奇怪
- android - 我无法在 android studio 中安装或更新我的 sdk 组件
- c# - 内存中的 C# 类实例大小
- postman - 当 Postman 中的测试失败时如何在控制台上获得预期和实际结果