如何使用 Python 从 RDFLib 读取 URI?
How to read URIs from RDFLib using Python?
我有几千个 URIRef
ontology 值,我正在尝试获取以下字符串表示形式:
[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')]
我可以单独去每个人的link(例如http://purl.obolibrary.org/obo/RO_0002219
)并得到它(例如surrounded by
),但是我怎么能用Python呢?我有两种方法可以看到如何做到这一点,但我也无法弄清楚。一种方法是简单地使用 RDFLib
库,但我没有找到翻译 link 的函数。另一种方法是解析 HTML
link 以获得红色值(我认为这与翻译相对应)。
请注意,其中一些没有附加任何内容(例如 http://purl.obolibrary.org/obo/uberon/core#indirectly_supplies
是 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'),)
我有几千个 URIRef
ontology 值,我正在尝试获取以下字符串表示形式:
[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')]
我可以单独去每个人的link(例如http://purl.obolibrary.org/obo/RO_0002219
)并得到它(例如surrounded by
),但是我怎么能用Python呢?我有两种方法可以看到如何做到这一点,但我也无法弄清楚。一种方法是简单地使用 RDFLib
库,但我没有找到翻译 link 的函数。另一种方法是解析 HTML
link 以获得红色值(我认为这与翻译相对应)。
请注意,其中一些没有附加任何内容(例如 http://purl.obolibrary.org/obo/uberon/core#indirectly_supplies
是 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'),)