电影院的影片片尾

曾经在法国克莱蒙费朗国际短片节看过一个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, 谢谢

2015上海复旦大学知识图谱前沿技术研讨会

参加这次知识图谱的研讨会,最大的体会就是大家都一个劲的在Freebase上做工作,而汉语的知识库工作却少的可怜,这是因为国内没有一个开源的环境吗?

anyway,这次工业界、学术界都来了不少人,也为我在知识库效率的研究上敞开了一扇大门,有兴趣的可以去看看。

http://kw.fudan.edu.cn/workshop2015/

基于语义网的知识管理

蒂姆博纳斯李设计的互联网3.0时代将会随着语义网的深入建立而到来,最终实现语义搜索功能。

语义网结合本体构成的系统,具有扁平化的数据,多用户操作、数据的传递性、长期在线,推理的特性,提供了制作一个知识库的基础,对框架的深入探索,结合其他学者的工作,总结PPT里面的知识,设计知识库构建的几个主要方向。

知识管理