APACHE JENA,一款免费的JAVA开源框架,用来做语义网(Semantic Web)和数据连接(Linked Data)的应用。Jena支持的RDF格式数据,是一套NoSQL(非关系数据库),即一套可推理的图数据库。Jena框架将这类数据的存储、添加、删除、推理,查询(Sparql)等所有的操作封装进一个框架,大大的方便了做相关应用的开发和使用。本手册主要介绍Jena框架及其操作,以便于日后查询,希望能对大家有所帮助。
分类: 技术宅
-
Google 全球商机洞察
Google 全球商机洞察(Global Market Finder)是谷歌基于搜索信息、关键词广告和谷歌翻译推出的一款洞察全球商机的服务。在这服务中,谷歌大量的搜索、关键词竞价广告再一次被深度挖掘,通过对这些信息的区域划分来获取全球市场的竞争关系,而其中不同地域不同的用词问题,通过谷歌翻译做技术解决,确实是该项目的最佳配合点。这个2013年出来的成果,虽然今天才看到,还是很赞的。自己本身是做自动对齐不同语言文本的语料,其中关键词的自动对齐在技术上也解决了,所以对于解决方案的建立提供了一个很好的参考。 (更多…)
-
读取IRI的Graph存入特定Graph – Virtuoso Jena Provider
该例读取下面三个IRI的内容,并返回RDF数据。这个例子比较有意思的是能够在
数据库里面创建一个Graph。
IRI:
http://kidehen.idehen.net/dataspace/person/kidehen#this
http://www.w3.org/People/Berners-Lee/card#i
http://demo.openlinksw.com/dataspace/person/demo#thisimport org.apache.jena.query.Query; import org.apache.jena.query.QueryFactory; import org.apache.jena.query.QuerySolution; import org.apache.jena.query.ResultSet; import org.apache.jena.rdf.model.RDFNode; import virtuoso.jena.driver.*; public class VirtuosoSPARQLExample2 { /** * Executes a SPARQL query against a virtuoso url and prints results. */ public static void main(String[] args) { String url; if(args.length == 0) url = "jdbc:virtuoso://localhost:1111"; else url = args[0]; /* STEP 1 */ /* * 这里添加"Example2"后,类似于打开一个Graph叫做"Example2",, * 如果没有会自动生成一个名为"Example2"的图 */ VirtGraph graph = new VirtGraph ("Example2", url, "dba", "dba"); /* STEP 2 */ /* Load data to Virtuoso */ //清除"Example2" Graph graph.clear (); /* * 这里是读取IRI的Graph并存储到服务器的"Example2" * 这里的读取,类似于在Web端在Quad Store Upload上的操作类似 * 如果网络连接不了,可以尝试删除下面的那些失败的内容 */ System.out.print ("Begin read from 'http://www.w3.org/People/Berners-Lee/card#i' "); graph.read("http://www.w3.org/People/Berners-Lee/card#i", "RDF/XML"); System.out.println ("\t\t\t Done."); System.out.print ("Begin read from 'http://demo.openlinksw.com/dataspace/person/demo#this' "); graph.read("http://demo.openlinksw.com/dataspace/person/demo#this", "RDF/XML"); System.out.println ("\t Done."); System.out.print ("Begin read from 'http://kidehen.idehen.net/dataspace/person/kidehen#this' "); graph.read("http://kidehen.idehen.net/dataspace/person/kidehen#this", "RDF/XML"); System.out.println ("\t Done."); /* STEP 3 */ /* Select only from VirtGraph */ Query sparql = QueryFactory.create("SELECT ?s ?p ?o WHERE { ?s ?p ?o }"); /* STEP 4 */ VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (sparql, graph); ResultSet results = vqe.execSelect(); while (results.hasNext()) { QuerySolution result = results.nextSolution(); RDFNode graph_name = result.get("graph"); RDFNode s = result.get("s"); RDFNode p = result.get("p"); RDFNode o = result.get("o"); System.out.println(graph_name + " { " + s + " " + p + " " + o + " . }"); } System.out.println("graph.getCount() = " + graph.getCount()); } }
-
连接Virtuoso和SPARQL查询 – Virtuoso Jena Provider
想要使用JAVA连接Virtuoso,我想最关心的额就是如何连接并查询,下面代码演示了如何操作
import com.hp.hpl.jena.query.*; import com.hp.hpl.jena.rdf.model.RDFNode; import virtuoso.jena.driver.*; public class VirtuosoSPARQLExample1 { /* * Executes a SPARQL query against a virtuoso url and prints results. */ public static void main(String[] args) { String url; if(args.length == 0) //如果Virtuoso安装在本体,这个是默认的地址和端口 url = "jdbc:virtuoso://localhost:1111"; else url = args[0]; /* STEP 1 */ //连接服务器,两个“dba”分别是账号和密码,是初始状态Virtuoso的默认值 VirtGraph set = new VirtGraph (url, "dba", "dba"); /* STEP 2 */ /* STEP 3 */ /* Select all data in virtuoso */ //给出查询语句,这里使用的是Jena框架里的 Query sparql = QueryFactory.create("SELECT * WHERE { GRAPH ?graph { ?s ?p ?o } } limit 100"); /* STEP 4 */ //在服务器"set"上执行查询语句"sparql" VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (sparql, set); //获取结果,这些就和Jena的操作一模一样了 ResultSet results = vqe.execSelect(); while (results.hasNext()) { QuerySolution result = results.nextSolution(); RDFNode graph = result.get("graph"); RDFNode s = result.get("s"); RDFNode p = result.get("p"); RDFNode o = result.get("o"); System.out.println(graph + " { " + s + " " + p + " " + o + " . }"); } } }
-
Virtuoso Jena Provider介绍
Virtuoso Jena Provider是一个在Jena框架下的控制RDF图存储的程序。它使得任意一个语义网的应用能够通过Jena RDF框架直接请求Virtuoso RDF存储的数据。在这篇文章中,将会介绍一下如何使用该程序。
-
上传RDF文件到Virtuoso,并通过Sparql查询
Virtuoso是一个管理多类型的数据库系统,他支持RDF的存储同时也支持SPARQL的查询,并且在众多评测结果都名列前茅,在前一篇文章写了《Virtuoso 安装 – Ubuntu环境》,这篇会给出一个例子如何上传自己的RDF,同时进行Sparql的查询。
-
Virtuoso 安装 – Ubuntu环境
OpenLink Virtuoso是下一代的通用服务器和业务管理器,它为新一代网络的开发和部署提供了遍历,能够将不同数据库和数据源的数据连接起来。在知识库领域,他支持RDF和SPARQL查询,他优越的性能得到了学术界的认同,大量的评测结果,它都名列前茅,属于开源软件中值得推荐的一款处理RDF的数据库系统。
(更多…) -
weather 的中国城市代码
天气信息是日常大众最常询问的信息之一,获取准确的天气信息对一件产品来说是至关重要的。可惜网络上免费开放的接口不多,目前,我主要找到的是国家气象局(www.weather.com.cn)和美国的一个气象频道(www.weather.com),不过两边给的数据都各有优劣。该问只是总结了一下我对他们数据的一些使用心得,已经重新整理了weather.com的城市代码供有需求的朋友使用。
国家气象局的数据,地理信息精确到城市,气象信息精确到当天和三天的预报,但是却没有更深一层的区域和区域天气数据。这样减低了用户体验,用户往往想知道他们所在的地方,这一刻或者马上的天气如何。
也正因此我寻思着找另外一种API提供精准的数据的,至少能够提供当前气候的。iPhone里用了www.weather.com的数据,在网上找了些资料,发现国内也有不少人在使用他们的数据,挖出他们网站的API以及网友整理的城市代码,测试了几个,发现有些地理信息的代码太旧了,所以索性自己重新制作了一份。最终,这份数据总共816个,与国家气象局2500多个比起来,确实比较少,另外,这份数据还有更新问题,比如上海的嘉定,在整理出的数据中,名字是南县。所以在使用的时候要验证一下,比如和国家气象局的进行一下对比。
点击下载:weatherCityCode
最近刚看到有一款产品通过卷积神经网络分析气象图来给特定的企业用户提供特别的天气服务,可以说是将天气用得很到位,另外,早上看到新闻报道说美国的牧民找到俄罗斯的最佳放牧环境,就因为气候相当。
使用数据请标明来源: @flykun.com, 谢谢
-
2015上海复旦大学知识图谱前沿技术研讨会
参加这次知识图谱的研讨会,最大的体会就是大家都一个劲的在Freebase上做工作,而汉语的知识库工作却少的可怜,这是因为国内没有一个开源的环境吗?
anyway,这次工业界、学术界都来了不少人,也为我在知识库效率的研究上敞开了一扇大门,有兴趣的可以去看看。
http://kw.fudan.edu.cn/workshop2015/
-
基于语义网的知识管理
蒂姆博纳斯李设计的互联网3.0时代将会随着语义网的深入建立而到来,最终实现语义搜索功能。
语义网结合本体构成的系统,具有扁平化的数据,多用户操作、数据的传递性、长期在线,推理的特性,提供了制作一个知识库的基础,对框架的深入探索,结合其他学者的工作,总结PPT里面的知识,设计知识库构建的几个主要方向。