Java 获取wikipedia文章的父类别

Java 获取wikipedia文章的父类别,java,sparql,wikipedia,user-profile,Java,Sparql,Wikipedia,User Profile,我有一个维基百科用户列表和他们编辑的文章。 我正试图为他们中的每一个人建立一个层次结构 问题是我很难为每篇文章找到父类别。 例如,我想要的是一篇关于比萨饼的文章,以获得“菜肴”或“食物”。 我使用的是jena和Yago以及一个简单的SPARQL查询,如下所示: String sparqlQueryString = "BASE <http://yago-knowledge.org/resource/>" + "PREFIX rdf: <http:/

我有一个维基百科用户列表和他们编辑的文章。
我正试图为他们中的每一个人建立一个层次结构

问题是我很难为每篇文章找到父类别。
例如,我想要的是一篇关于比萨饼的文章,以获得“菜肴”或“食物”。
我使用的是jena和Yago以及一个简单的SPARQL查询,如下所示:

String sparqlQueryString = "BASE <http://yago-knowledge.org/resource/>"
                + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
                + "SELECT ?supercat WHERE { "
                + "<" + child + ">" + " rdf:type ?supercat . "
                + "}";
String sparqlQueryString=“BASE”
+“前缀rdf:”
+“选择?超级地址,其中{”
+“+”rdf:类型?超级猫。“
+ "}";
(此处的child是文章)

所以我想问,是否有人知道如何从中获得正确的父类别。而且,如果可能的话,或者如果有人有想法将文章的所有标题和它们的父项排序到一个分层的用户兴趣配置文件中

不太清楚你在问什么。一个类别将有超级类别和子类别,一篇文章属于一个类别,但一篇文章没有父类别。如果查看DBpedia资源的HTML呈现,可以看到其类别是dcterms:subject属性的值。例如,在,你可以看到

  • 术语:主题
    • 类别:扁平面包
    • 类别:希腊发明
    • 类别:意大利美食
    • 类别:意大利发明
    • 类别:地中海美食
    • 类别:比萨饼
    • 类别:世界美食
因此,您可以使用如下查询来检索这些值:

select?category{dbpedia:Pizza dcterms:subject?category}

现在,如果您有一个类别,例如,并且您确实想要its超类别,您可以看到它们通过skos:brother属性连接。因此:

select?超级分类{类别:Flatbreads skos:更广泛的?超级分类}

这不是SPARQL查询;这是Java代码,可以构造SPARQL查询,也可以构造其他内容,具体取决于
子类的值。文章不是类别,因此它没有父类别。你的意思是你想要一篇文章所属的类别吗?是的,这是一个构造SPARQL查询的字符串,但是你知道我的意思。是的,我想得到一篇文章的父类,但我得到了很多父类,我想知道是否有可能得到更好的结果。就像简单的一篇文章,比如比萨饼,得到“食物”或“菜肴”。谢谢,除非
child
来自用户输入,否则当
child
的值包含空格时会发生什么?或者是包含SPARQL代码的东西?像SQL一样,进行这样的查询也会受到注入攻击。如果您正在使用Jena,最好使用参数化字符串(例如,请参阅)。谢谢。这有点帮助。然而,我的问题是,我有很多文章,我想为每一篇文章获得一个有意义的超级类别(以一种自动化的方式,这将是非常好的),这样我就可以从所有这些中构建类似于层次树的东西。我不知道我是否足够清楚。如果没有,请尽管问。非常感谢你的时间和帮助,你说的超级分类是什么意思?文章属于类别,类别可能有超级类别,但文章本身没有超级类别。这里的“有意义”是什么意思?堆栈溢出是解决特定技术问题的好地方,但不能真正帮助定义“有意义的”;这与您的特定应用程序更相关。但是,如果您可以定量地定义“有意义”,我们可能会提出一个SPARQL查询来检索它。@例如,您可以检索文章数量最多的类别,但这是否一定有意义?也许吧,但有些类别并不是那么有用(例如,如果有一个类别“带有单词“the”的文章”,那么几乎每一篇文章都属于它)。我所说的“有意义”是指它将是概括这篇文章的父类别。例如,“足球”可能是“国际足联世界杯”之母。所有这些的主要目的是根据维基百科用户编辑的文章构建一个兴趣树。@paskun我的观点是,国际足联世界杯有五个类别(足球不是其中之一):国际足联世界杯;国际足联比赛;世界锦标赛;1930年建立的经常性体育赛事;四年一次的体育赛事。你有没有具体的方法来说明哪一个是有意义的,或者说是最有意义的?如果您没有一种特定的决定方式,那么您肯定无法拥有执行该决定的代码;毕竟,软件只能做我们告诉它的事情。