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

问题描述 投票:1回答:1

我有一个项目,目标是将用户输入添加到包含有关国家/地区数据的乌龟文件(名为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})

python sparql rdflib turtle-rdf
1个回答
1
投票
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。)>

© www.soinside.com 2019 - 2024. All rights reserved.