当我这样查询时:
SELECT ?subject ?object WHERE { ?subject ont:has_author ?object}
我可以得到结果:
subject:harry potter,object:J.K. Rowling
(注:J. K.罗琳是班上的一员。)
但是当我这样查询时,我得不到结果。
SELECT ?subject WHERE { ?subject ont:has_author J. K. Rowling }
任何想法为什么?
答案 0 :(得分:0)
有两种选择。一个是@ fopa-léon-constantin说的。
你可以要求J. K.罗琳的URI,或者你可以搜索名字(字面意思)J. K.罗琳。
取决于你使用什么样的SPARQL查询引擎,但这里有两个例子。 第一个取决于你有J. K.罗琳的URI。
SELECT ?subject WHERE { ?subject ont:has_author ont:J_K_Rowling}
如果你想用字符串搜索她的名字,那么第二个就完成了。
SELECT ?subject
WHERE {
?subject ont:has_author ?author
FILTER (str(?author) = "J. K. Rowling")
}
通过查看您正在使用的本体,您应该知道应该使用哪种方法。
在那里定义ont:has_author
是否有文字或URI作为对象。
答案 1 :(得分:-1)
可能是因为您没有指定个人J. K. Rowling
的名称空间。
我希望你的查询是
SELECT ?subject WHERE { ?subject ont:has_author ont:"J. K. Rowling"}