Я использую SPARQLWrapper
, как показано ниже, для выполнения моего запроса викиданных.
from SPARQLWrapper import SPARQLWrapper, JSON
import pandas as pd
sparql = SPARQLWrapper("https://query.wikidata.org/sparql")
sparql.setQuery("""
SELECT DISTINCT ?item {
VALUES ?searchTerm { "word2vec" "fasttext" "natural language processing" "deep learning" "support vector machine" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?searchTerm ?num
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
results_df = pd.io.json.json_normalize(results['results']['bindings'])
print(results_df)
Я хотел бы дать список слов "word2vec" "fasttext" "natural language processing" "deep learning" "support vector machine"
в виде списка Python.то есть следующим образом.
mylist = ["word2vec", "fasttext", "natural language processing", "deep learning", "support vector machine"]
В таком случае, как я могу вставить mylist
в качестве параметра в мой существующий запрос викиданных, о котором я упоминал выше.
Я пытался использовать f-Строки следующим образом.Однако у меня это не сработало.
sparql.setQuery(f"
SELECT DISTINCT ?item {
VALUES ?searchTerm { {mylist} }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?searchTerm ?num
")
Я с удовольствием предоставлю более подробную информацию, если это необходимо.