RDF API – Jena 手册

概述

资源描述框架(RDF)是一套万维网委员会(W3C)推荐的描述资源的标准。什么是资源?这实在是一个很有深度的问题并且对它的准确定义也一直是一个争辩的论题。对我们来说,它是所有我们能够识别的东西。比如,你是一个资源,同样你的个人主页、这篇教程、数字1和Moby Dick的《The Greath White》。

这篇教程,我们使用的所有例子都是关于人的,介绍了一个使用RDF做VCARDS陈述的方式。RDF的表现格式最好是通过节点和弧构成的图,如下所示,一个简单的vcard在RDF里面可以看成这样:

figure 1

Continue reading “RDF API – Jena 手册”

JENA手册-入门

APACHE JENA,一款做语义网(Semantic Web)和连接资料(Link Data)应用的免费开源JAVA框架。JENA拥有一整套完整的添加删除、推理、SPARQL查询、存储的模块,来满足我们的需求。

APACHE JENA,一款免费的JAVA开源框架,用来做语义网(Semantic Web)和数据连接(Linked Data)的应用。Jena支持的RDF格式数据,是一套NoSQL(非关系数据库),即一套可推理的图数据库。Jena框架将这类数据的存储、添加、删除、推理,查询(Sparql)等所有的操作封装进一个框架,大大的方便了做相关应用的开发和使用。本手册主要介绍Jena框架及其操作,以便于日后查询,希望能对大家有所帮助。

jena-logo

Continue reading “JENA手册-入门”

Google 全球商机洞察

Google 全球商机洞察(Global Market Finder)是谷歌基于搜索信息、关键词广告和谷歌翻译推出的一款洞察全球商机的服务。在这服务中,谷歌大量的搜索、关键词竞价广告再一次被深度挖掘,通过对这些信息的区域划分来获取全球市场的竞争关系,而其中不同地域不同的用词问题,通过谷歌翻译做技术解决,确实是该项目的最佳配合点。这个2013年出来的成果,虽然今天才看到,还是很赞的。自己本身是做自动对齐不同语言文本的语料,其中关键词的自动对齐在技术上也解决了,所以对于解决方案的建立提供了一个很好的参考。 Continue reading “Google 全球商机洞察”

电影院的影片片尾

曾经在法国克莱蒙费朗国际短片节看过一个9宫格漫画,是了一套抢劫银行的画面:

如果没有场景,我们都不知道是在抢银行;
如果没有道具,抢劫的枪都找不到;
如果没有服装,演员们可能都是光PP的;
如果没有导演,影片都不知道在干嘛;
如果没有录音,大家只能靠手语来笔画;
如果没有技术,画面可能根本不知道是什么;
如果没有编剧,银行职员换个位置抢劫匪;
如果没有制片,劫匪可能拿着水枪来抢劫;
如果没有演员,大概只能看到空空的场景。

影院追求利益而丢弃人文,停止放映片尾字幕反映了影院对电影制作中各个岗位的不认同。若以蝴蝶效应来说,也会影响社会对这些岗位的冷落。

对于影院,也许99%的观众会觉得片尾太枯燥乏味,早早离场,但是也有1%的观众在乎这些。

对于影院,也许每部片子提早10分钟,一天就能多放一部片子,但是每次将以1%的速度流失观众。

对于观众,也许片尾可能很长,但是有美美的片尾曲等着;
对于观众,也许片尾很乏味,但是也会有彩蛋等着;

对于我们大家,也许我们身边的亲人、朋友,就有从事或将从事电影制作中的某个岗位,多一份了解,多一份关心。

读取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#this


import 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 + " . }");
		}
	}
}

上传RDF文件到Virtuoso,并通过Sparql查询

Virtuoso是一个管理多类型的数据库系统,他支持RDF的存储同时也支持SPARQL的查询,并且在众多评测结果都名列前茅,在前一篇文章写了《Virtuoso 安装 – Ubuntu环境》,这篇会给出一个例子如何上传自己的RDF,同时进行Sparql的查询。

Continue reading “上传RDF文件到Virtuoso,并通过Sparql查询”

Virtuoso 安装 – Ubuntu环境

OpenLink Virtuoso是下一代的通用服务器和业务管理器,它为新一代网络的开发和部署提供了遍历,能够将不同数据库和数据源的数据连接起来。在知识库领域,他支持RDF和SPARQL查询,他优越的性能得到了学术界的认同,大量的评测结果,它都名列前茅,属于开源软件中值得推荐的一款处理RDF的数据库系统。
Continue reading “Virtuoso 安装 – Ubuntu环境”

weather 的中国城市代码

天气信息是日常大众最常询问的信息之一,获取准确的天气信息对一件产品来说是至关重要的。可惜网络上免费开放的接口不多,目前,我主要找到的是国家气象局(www.weather.com.cn)和美国的一个气象频道(www.weather.com),不过两边给的数据都各有优劣。该问只是总结了一下我对他们数据的一些使用心得,已经重新整理了weather.com的城市代码供有需求的朋友使用。

国家气象局的数据,地理信息精确到城市,气象信息精确到当天和三天的预报,但是却没有更深一层的区域和区域天气数据。这样减低了用户体验,用户往往想知道他们所在的地方,这一刻或者马上的天气如何。

也正因此我寻思着找另外一种API提供精准的数据的,至少能够提供当前气候的。iPhone里用了www.weather.com的数据,在网上找了些资料,发现国内也有不少人在使用他们的数据,挖出他们网站的API以及网友整理的城市代码,测试了几个,发现有些地理信息的代码太旧了,所以索性自己重新制作了一份。最终,这份数据总共816个,与国家气象局2500多个比起来,确实比较少,另外,这份数据还有更新问题,比如上海的嘉定,在整理出的数据中,名字是南县。所以在使用的时候要验证一下,比如和国家气象局的进行一下对比。

点击下载:weatherCityCode

最近刚看到有一款产品通过卷积神经网络分析气象图来给特定的企业用户提供特别的天气服务,可以说是将天气用得很到位,另外,早上看到新闻报道说美国的牧民找到俄罗斯的最佳放牧环境,就因为气候相当。

使用数据请标明来源: @flykun.com, 谢谢