如何使用RDFLIB/SPARQL更新海龟文件

2024-04-24 05:47:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目,目标是将用户输入添加到包含国家数据的turtle文件(名为Main_Triples)中。我正在使用python创建使用SPARQL插入参数的函数。我必须使用SPARQL。如何在SPARQL中编写此文件并更新该文件

我的rdf结构:

ex:Afghanistan a country:addressCountry ;
    ex:HappyLifeYear_Index 1.24e+01 ;
    ex:SCI 37 ;
    ex:UHC 34 ;
    ex:average_wellbeing 3.8e+00 ;
    ex:avglifeexp 5.97e+01 ;
    ex:gdp 691 ;
    ex:hpi_rank 110 ;
    ex:hpi_total_score 2.02e+01 ;
    ex:inequality_of_Outcome 43 ;
    ex:info_availability "high" ;
    ex:inregion "MiddleEastandNorthAfrica" ;
    ex:population_count 29726803 .

我的基本python代码(不起作用。我想将参数作为输入,并添加一个谓词/对象来表示

def addcountryfact(country, fact, data):
    country = URIRef(ex + country)
    fact = URIRef(ex + fact)
    data = URIRef(ex + data)
    addto = ("""
         PREFIX ex: <http://example.org/>
         INSERT ?country ?fact ?data 
         WHERE {
         ?country ?fact ?data
           }
         """)
    addto = g.query(cd, initBindings={'fact': fact, 'country': country, 'data': data})


Tags: 文件数据项目用户目标data参数国家
1条回答
网友
1楼 · 发布于 2024-04-24 05:47:16
EX = Namespace("http://example.org/")

def add_country_fact(country, fact, data):
    q = """
        INSERT DATA {
            ?country ?fact ?data .
        }
        """
    g.update(
        q, 
        initBindings={
            'fact': EX[fact], 
            'country': EX[country], 
            'data': EX[data]
        }
    )

我假设这是一个学生练习使用SPARQL,否则您将按照@UninformedUser在评论中的建议执行:

def add_country_fact(country, fact, data):
    g.add((
        EX[country],
        EX[fact],
        EX[data]
    ))

使用g.add(())更简单、更快(无需转换到SPARQL或从SPARQL转换过来)

相关问题 更多 >