Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Sparql查询识别实体的类别/分类_Java_Sparql_Dbpedia - Fatal编程技术网

Java 使用Sparql查询识别实体的类别/分类

Java 使用Sparql查询识别实体的类别/分类,java,sparql,dbpedia,Java,Sparql,Dbpedia,我是DBpedia和Sparql的新手。我试图做的是从文本中提取实体(我可以这样做),并查询DBpedia以检查它们的类别是否是个人、位置或组织的类别。我不确定是否有一个直截了当的问题,因为一个人可能也属于其他几个类别,如演员、歌手或科学家。但如果我得到一些结果,也许我可以看看一些与人、地点和组织相关的通用关键词。我发现一个可能适合我的查询: PREFIX dbres: <http://dbpedia.org/resource/> PREFIX rdf:<http://www.

我是DBpedia和Sparql的新手。我试图做的是从文本中提取实体(我可以这样做),并查询DBpedia以检查它们的类别是否是个人、位置或组织的类别。我不确定是否有一个直截了当的问题,因为一个人可能也属于其他几个类别,如演员、歌手或科学家。但如果我得到一些结果,也许我可以看看一些与人、地点和组织相关的通用关键词。我发现一个可能适合我的查询:

PREFIX dbres: <http://dbpedia.org/resource/>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?o where {dbres:basketball rdf:type ?o} LIMIT 10
前缀dbres: 前缀rdf: 选择o其中{dbres:basketball rdf:type?o}LIMIT 10
但我如何使其通用,即我如何不使其特定于篮球,而是使用一个变量代替篮球,其值将根据实体值不断变化。另外,我需要在java代码中使用它,所以如何更改它,以便我的java代码能够理解

我不明白这个问题?为什么不能为每个提取的实体动态构建SPARQL查询?它不是简单地更改主题URI吗?还是我遗漏了什么?@AKSW老实说,我不知道该怎么做,因为我以前从未编写过SPARQL查询。就像我说的,我是新来的,所以我会向你们伸出援助之手。我想我贴的东西会有用的。但如果有更好的方法,我肯定会接受。你用的方法是可以的。但是不能保证a)实体存在于DBpedia中b)所使用的URI是存在于DBpedia中的实体的URI(想想同义词)。例如,在您的查询中,您要查询的类型是。如果在浏览器中打开该URI,则不会看到任何数据。如果改用URI,您将看到数据。它是区分大小写的。对于其他实体,您也可以尝试使用
http://dbpedia.org/resource/
+实体标记-但它可能不会导致任何结果。我想你应该问一下Jackson是否是个人。但是RDF中的编码是
a
。URI也是错误的,它以协议开头(通常是http:),或者使用前缀:
前缀dbres:ASK{values?person{foaf:person dbo:person}dbres:Jackson a?person}
。但正如我告诉你的,我不知道你对结果的期望。可能没有关于杰克逊的数据DBpdia@serendipity,你试过了吗?