【问题标题】:How to read URIs from RDFLib using Python?如何使用 Python 从 RDFLib 读取 URI?
【发布时间】:2021-11-15 02:23:09
【问题描述】:

我有数千个 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_supplies404: Not Found

【问题讨论】:

  • 你试过了吗? rdflib.readthedocs.io/en/stable/… - 我的意思是,URI 可以只返回 RDF 数据,您可以将这些数据加载到图表中
  • @UninformedUser 我已经尝试过了,但无法从rdflib 获得翻译/实际含义。你是说因为它只是返回 RDF 数据就没有办法吗?
  • 我的意思是通过使用 URI 来获取 RDF 数据——这是链接数据的原则之一——返回实体的 RDF 表示。正如您在下面的答案中看到的那样,它非常简单。您可以将此 RDF 数据解析为 rdflib Graph 对象 - 这就是我将链接转发给您的原因 - 抱歉,我应该更具体

标签: python uri html-parsing rdf ontology


【解决方案1】:

由于这些 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'),)

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多