SPARQL入门(二)使用Java操作ARQ
在文章SPARQL入门(一)SPARQL简介与简单使用中,我们了解了RDF、SPARQL以及基于Java编写的SPARQL处理器ARQ。在本文中,笔者将会如何使用Java来操作ARQ。
注意到在Jena的官网http://jena.apache.org/download/index.cgi 说明中,有关于Maven的使用方法介绍:

因此可以使用Maven,然后再用Java来操作ARQ,Javadoc的网址为:http://jena.apache.org/documentation/javadoc/arq/ 。
在本文中我们使用另一种项目构建工具——Gradle,项目工程截图如下:

我们需要修改的文件为build.gradle, ex002.ttl以及ARQ_TEST.java。其中build.gradle可以加载jena的jar,具体内容如下:
plugins {
id 'java'
}
group 'com.kg.learn'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
// https://mvnrepository.com/artifact/org.apache.jena/jena-arq
compile group: 'org.apache.jena', name: 'jena-arq', version: '3.11.0'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-api
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.26'
}
ex002.ttl为RDF文档,储存了我们的示例三元组,内容如下:
# filename: ex002.ttl
@prefix ab: <http://learningsparql.com/ns/addressbook#> .
ab:richard ab:homeTel "(229) 276-5135" .
ab:richard ab:email "richard49@hotmail.com" .
ab:cindy ab:homeTel "(245) 646-5488" .
ab:cindy ab:email "cindym@gmail.com" .
ab:craig ab:homeTel "(194) 966-1505" .
ab:craig ab:email "craigellis@yahoo.com" .
ab:craig ab:email "c.ellis@usairwaysgroup.com" .
接着就是我们的项目主角ARQ_TETS.java,代码如下:
import org.apache.jena.query.*;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
public class ARQ_TEST {
public static void main(String[] args) {
Model model = ModelFactory.createDefaultModel();
//ttl文件路径
model.read("/Users/kg/IdeaProjects/arq_test/src/main/java/ex002.ttl");
//查询语句, 查询craig的电子邮件地址
String queryString = "PREFIX ab: <http://learningsparql.com/ns/addressbook#> \n" +
"\n" +
"SELECT ?craig_email\n" +
"WHERE\n" +
"{ ab:craig ab:email ?craig_email . }";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
// 输出结果
ResultSetFormatter.out(System.out, results, query);
}
}
输出结果如下:
--------------------------------
| craig_email |
================================
| "c.ellis@usairwaysgroup.com" |
| "craigellis@yahoo.com" |
--------------------------------
以上是查询“craig的电子邮件地址” 的代码。如果我们想要知道cindy的全部属性及属性值,可以使用以下Java代码:
import org.apache.jena.query.*;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
public class ARQ_TEST {
public static void main(String[] args) {
Model model = ModelFactory.createDefaultModel();
//ttl文件路径
model.read("/Users/kg/IdeaProjects/arq_test/src/main/java/ex002.ttl");
//查询语句, 查询cindy的全部属性及属性值
String queryString = "PREFIX ab: <http://learningsparql.com/ns/addressbook#> \n" +
"\n" +
"SELECT ?propertyName ?propertyValue\n" +
"WHERE\n" +
"{ ab:cindy ?propertyName ?propertyValue . }";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
// 输出结果
ResultSetFormatter.out(System.out, results, query);
}
}
输出结果如下:
-------------------------------------
| propertyName | propertyValue |
=====================================
| ab:email | "cindym@gmail.com" |
| ab:homeTel | "(245) 646-5488" |
-------------------------------------
本次分享到此结束,有机会我们再来深入地学习ARQ的Javadoc 。
注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~
SPARQL入门(二)使用Java操作ARQ的更多相关文章
- Mongodb快速入门之使用Java操作Mongodb
[IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...
- Mongodb入门并使用java操作Mongodb
转载请注意出处:http://blog.csdn.net/zcm101 最近在学习NoSql,先从Mongodb入手,把最近学习的总结下. Mongodb下载安装 Mongodb的下载安装就不详细说了 ...
- Java学习笔记(二)——Java操作properties文件
[前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...
- hadoop3自学入门笔记(3)-java 操作hdfs
1.core-site.xml <configuration> <property> <name>fs.defaultFS</name> <val ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- Redis入门(四)-Java操作Redis
<Redis入门>系列文章的第四篇,这一节看一下如何用Java版本的redis客户端工具--Jedis来操作redis. Jedis封装了丰富的api来对redis的五种数据类型 stri ...
随机推荐
- 12个超好用的IntelliJ IDEA 插件!你用过几个?
一.前言 IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了. 其实笔者也是一枚从Eclipse转IDEA的探索者,随着 ...
- Vue大纲
Vue框架 Vue ---- vue的基本使用 文本/事件/属性指令 补充: js面向对象 js函数 Vue ---- 表单指令 条件指令 循环指令 分隔符 过滤器 计算属性 监听属性 Vue --- ...
- webpack学习_模块热替换(Hot Module Peaplacement)
模块热替换(Hot Module Replacement 或 HMR) 是webpack提供的最有用的功能之一.允许在u女性是更新各种模块,而无需进行完全刷新. 启用HMR 承接之前的代码 webpa ...
- 阿里云linux镜像发布web项目时候 tomcat与域名映射
tomcat 与 域名映射 一 准备工作: 阿里云服务器Linux镜像 及 域名备案和将域名解析至服务器,通过<暂不说,网上一大把或者参考阿里官方实例手册> 在Linux镜像中安装tom ...
- create-react-app 超级慢的解决方法
create-react-app超级慢的解决方法 在操作官方实例Create React App时,需要执行指令: create-react-app my-app 来创建一个新的React应用.由于某 ...
- 面试连环炮系列(二十一):你们的项目怎么使用kafka
你们的项目怎么使用kafka? 我们采用kafka进行日志采集,准确点说是ELK方案,即elasticsearch + logstash + kibana + kafka.通过Spring AOP的方 ...
- HttpRunner学习8--使用debugtalk.py辅助函数
前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...
- d3.js 入门指南 - 仪表盘
D3的全称是Data-Driven Documents(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3.js. ...
- WFS服务查询方法
基于Geoserver发布的wfs服务,实现空间和属性信息的查询.wfs包含getFeature操作,用来检索要素信息,支持返回gml格式的地理要素表达. WFS的getFeature操作需要提供的参 ...
- JS + Canvas画图Demo
直接上代码,复制粘贴就能用: <%@ page language="java" contentType="text/html; charset=UTF-8" ...