リモートエンドポイントにクエリを実行してowl:sameAsマッピングを取得しようとしていますが、RDFLibとRedlandの両方を試しましたが、どちらも機能しませんでした。おそらく、名前空間を正しく処理していません。
これがRDFLibでの私の試みです:
import rdflib
rdflib.plugin.register('sparql', rdflib.query.Processor, 'rdfextras.sparql.processor', 'Processor')
rdflib.plugin.register('sparql', rdflib.query.Result, 'rdfextras.sparql.query', 'SPARQLQueryResult')
g = rdflib.Graph()
query = """
SELECT *
FROM <http://api.talis.com/stores/bbc-backstage/services/sparql>
WHERE {
?s a http://purl.org/ontology/mo/MusicArtist;
http://www.w3.org/2002/07/owl#sameAs ?o .
}Limit 50
"""
for row in g.query(query):
print row
そしてここにレッドランドがあります:
import RDF
model = RDF.Model()
query = """
SELECT *
FROM <http://api.talis.com/stores/bbc-backstage/services/sparql>
WHERE {
?s a http://purl.org/ontology/mo/MusicArtist;
http://www.w3.org/2002/07/owl#sameAs ?o .
}Limit 50
"""
for statement in RDF.Query(query ,query_language="sparql").execute(model):
print statement
それらのいずれかで何が悪いのか、ヒントを教えてください。私が抱えているさらに別の問題:オブジェクトのデータセット名を取得することは可能ですか?例:ある場合:
?s = http://www.bbc.co.uk/music/artists/eb5c8564-927d-414d-b152-c7b48a2c9d8b#artist
predicate = http://www.w3.org/2002/07/owl#sameAs
?0 = http://dbpedia.org/resource/The_Boy_Least_Likely_To
この例で「Dbpedia」の名前を取得できますか?または、sameAsリンクを使用している他のデータセットはありますか?(または、オブジェクト文字列で関心のあるデータセット名を検索することもできます)よろしくお願いします。