Я пытаюсь сделать запрос, чтобы получить предикат или связь между двумя сущностями, уже существующими в Arabi c DBpedia ... Я пытаюсь сделать это в Python, используя интерфейс SPARQL Endpoint для Python (SPARQLWrapper), поэтому я задаю имя набора данных с помощью следующего запроса:
sparql = SPARQLWrapper("http://ar.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
property = []
query = "SELECT ?property WHERE {{ <{}> ?property <{}> }}".format('http://ar.dbpedia.org/resource/فرنسا', 'http://ar.dbpedia.org/resource/باريس')
sparql.setQuery(query)
string_s = sparql.query().convert()
if len(string_s['results']['bindings']) != 0:
bindings = string_s['results']['bindings']
for b in bindings:
property.append(b['property']['value'])
print(property)
Проблема заключается в том, что я указал имя набора данных как (http://ar.dbpedia.org/sparql ), это дало мне ошибку в соединении, подобное этому:
ConnectionResetError: [WinError 10054] Существующее соединение было принудительно закрыто удаленным хостом
И когда я изменяю это значение по умолчанию (http://dbpedia.org/sparql), оно не дает мне никакой связи между двумя сущностями (и я предполагаю, что это потому, что я делаю запрос к набору данных, в котором нет двух сущностей!) Я тестирую предыдущий код на ресурсах Engli sh, меняя имя набора данных на имя по умолчанию и меняя запрос следующим образом:
query = "SELECT ?property WHERE {{ <{}> ?property <{}> }}".format('http://dbpedia.org/resource/France', 'http://dbpedia.org/resource/Paris')
он сработал и дал мне (? Свойство) как это:
['* 10 23 * ',' http://dbpedia.org/ontology/capital ']
Итак, мой вопрос: как я могу сделать тот же запрос и получить тот же ответ на Араби * 1036? * DBpedia? Как я могу узнать о свойстве, которое связывает ресурсы 2 Arabi c (объекты Arabi c), которые уже существуют в Arabi c DBpedia?