【问题标题】:How can I have sparql data in a dataframe in python?如何在 python 的数据框中包含 sparql 数据?
【发布时间】:2020-06-07 08:14:18
【问题描述】:

在这个网站https://dbpedia.org/sparql我有这个查询

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?label ?lat ?long WHERE {  

<http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> geo:lat ?lat.
<http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> geo:long ?long.
<http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> rdfs:label ?label . }

输出是

label                                        lat           long
"Sargus Juvenile Detention Center"@en        40.0767       -80.9656

如何在 python 中运行此查询并将其保存到数据框中?

【问题讨论】:

  • 您可以通过 Accept Header text/csv 以 CSV 格式获取输出,然后将 CSV 加载到数据框中 - 就是这样

标签: python dataframe sparql


【解决方案1】:

您可以使用 sparql-dataframe 库 https://pypi.org/project/sparql-dataframe/

import pandas as pd
import sparql_dataframe

endpoint = "http://dbpedia.org/sparql"

q = """
    PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
    SELECT ?label ?lat ?long WHERE {  
    <http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> geo:lat ?lat.
    <http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> geo:long ?long.
    <http://dbpedia.org/resource/Sargus_Juvenile_Detention_Center> rdfs:label ?label . }
    """

df = sparql_dataframe.get(endpoint, q)
df.head()

输出:

    label   lat     long
0   Sargus Juvenile Detention Center    40.0767     -80.9656

数据框信息:

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   label   1 non-null      object 
 1   lat     1 non-null      float64
 2   long    1 non-null      float64
dtypes: float64(2), object(1)
memory usage: 152.0+ bytes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多