Julius Sechang Mboli
Julius Sechang Mboli

Reputation: 60

Inserting Data from Dataframe into Ontology using SPARQL and RDFLIB in Python

I created an ontology using protegee and now want to insert data using RDFLIB in python. Because I have to write the update sparql statements in string and my data comes in various types including, float64, integer, strings, and Datetime, I had to do some parsing and so not all are working. Below is a snippet of my code:

df=df.tail(2000)
for ind in df.index:
pData=df['Product'][ind]
lData=df['Lifecycle left in minutes'][ind]
XLPerc=df['Percent of Lifecycle left'][ind]


q = """
INSERT DATA
{ 
myontology:XP myontology:LifecycleData XL.
myontology:XP myontology:UseCycleData XU.
#myontology:XP myontology:LifecyclePer XLPerc.
myontology:XP myontology:Temperature XTemperature.
#myontology:XP myontology:LifecyclePer XLPerc

}

""".replace('XU', str(uData)).replace('XL', str(lData)).replace('XP', str(pData))
g.update(
q, 
initNs={
    "myontology":Namespace("https://js......../myontology.owl#")
  }
)

So I am looping over my Dataframe (df) and inserting it into the ontology. Some are working and some are not working despite using the same method. I am getting ParseException error as follows:

ParseException: Expected end of text, found 'I' (at char 5), (line:2, col:5) There is a long error code but this is the last line. I can provide more information if needed. I do not know what the issue is, can somebody help me? Thank you.

Upvotes: 0

Views: 255

Answers (1)

Julius Sechang Mboli
Julius Sechang Mboli

Reputation: 60

I have been able to rectify the problem myself. The replace() functions were not evaluating correctly due to too similar variables. For instance, myontology:XP myontology:LifecyclePer XLPerc and myontology:XP myontology:LifecycleData XL. both had XL as in XLPerc and XL itself. So, while evaluating, the XL in XLPerc was replaced with another value such as 68.23433Perc and not the expected value68.23433, and many other similar errors like this.

I solved this by defining my variables as unique as possible and now it is evaluating just fine. Thank you everyone for your help.

Upvotes: 0

Related Questions