Ладно - заливая спецификации RDFILB (https://buildmedia.readthedocs.org/media/pdf/rdflib/4.2.1/rdflib.pdf), Я обнаружил, что вы можете анализировать несколько файлов / URL-адресов один за другим. В результате получается объединенный файл. Поэтому, зная, что интересующий меня файл foaf можетбыть загруженным в http://www.xmlns.com/foaf/spec/index.rdf
Я получил файл, затем изменил программу на:
filename = "C:/DataStuff/SemanticOntology/LearningSPARQLExamples/ex050.ttl"
filename2 = "C:/DataStuff/SemanticOntology/LearningSPARQLExamples/index.rdf"
g = rdflib.Graph()
g.parse(filename, format='ttl')
g.parse(filename2)
query = """
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?propertyLabel ?value
WHERE
{
?s ?property ?value .
?property rdfs:label ?propertyLabel .
}
"""
results=g.query(query)
print('Results!')
for row in results:
print(row)
, которая затем сработала, распечатав:
Results!
(rdflib.term.Literal('Given name'), rdflib.term.Literal('Richard'))
(rdflib.term.Literal('Surname'), rdflib.term.Literal('Mutt'))
(rdflib.term.Literal('AIM chat ID'), rdflib.term.Literal('bridesbachelor'))
(rdflib.term.Literal('personal mailbox'), rdflib.term.Literal('richard49@hotmail.com'))
(rdflib.term.Literal('workplace homepage'), rdflib.term.URIRef('http://www.philamuseum.org/'))
(rdflib.term.Literal('nickname'), rdflib.term.Literal('Dick'))
распечаткаметки всех читаемых человеком свойств в моем исходном файле данных, хотя я не определял эти свойства.
Я предполагаю, что этап загрузки файла можно пропустить, напрямую используя URL во второмоператор parse. Однако я не могу сделать это, поскольку я нахожусь в корпоративной среде, и я не вижу способа использовать оператор parse с прокси.