在文章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的更多相关文章

  1. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...

  2. Mongodb入门并使用java操作Mongodb

    转载请注意出处:http://blog.csdn.net/zcm101 最近在学习NoSql,先从Mongodb入手,把最近学习的总结下. Mongodb下载安装 Mongodb的下载安装就不详细说了 ...

  3. Java学习笔记(二)——Java操作properties文件

    [前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...

  4. hadoop3自学入门笔记(3)-java 操作hdfs

    1.core-site.xml <configuration> <property> <name>fs.defaultFS</name> <val ...

  5. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  6. [转]MongoDB for Java】Java操作MongoDB

    原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...

  7. Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...

  8. hadoop学习(三)HDFS常用命令以及java操作HDFS

    一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...

  9. Redis入门(四)-Java操作Redis

    <Redis入门>系列文章的第四篇,这一节看一下如何用Java版本的redis客户端工具--Jedis来操作redis. Jedis封装了丰富的api来对redis的五种数据类型 stri ...

随机推荐

  1. struct socket结构体详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://weiguozhihui.blog.51cto.com/3060615/15852 ...

  2. elementui入门

    1.前端服务器搭建 (1)创建一个static web project (2) 安装 npm install -g vue-cli (3) vue init webpack 项目名 (4)cd 项目名 ...

  3. lnmp1.2支持ThinkPhp pathinfo及rewrite

    一.pathinfo支持方法 1.2版本系统已经自动生成了一个pathinfo的配置文件,但实测不可用,所以我们先找打这个文件并修改其内容,文件路径为:/usr/local/nginx/pathinf ...

  4. [修仙之路]React-Redux 金丹篇

    作者:水涛追求技术,但又不失生活的乐趣,过自己想要的生活 React-Redux简介 React-Redux可以使你的React项目拥有全局数据,可以使多个React组件读取到全局数据并且组件中也可修 ...

  5. 简单学习【1】——使用webpack

    使用webpack webpack命令 webpack配置 第三方脚手架 1.webpack命令 webpack - h (webpack 所有的选项) webpack -v (查看webpack的版 ...

  6. 【ES6】函数的扩展

    1.函数参数默认值[详情例子参照ESMAScript 6入门 (阮一峰)] 允许为函数的参数设置默认值,即直接写在参数定义的后面.[例子1] 参数变量是默认声明的,所以不能用let或const再次声明 ...

  7. return之为什么能够终止函数,代码演练

    ''' return 有终止函数的作用,下面通过执行到return x 以后, 就结束了程序的下一步执行,所以就没有往下面走,所以终端上也就只能 看到打印结果100,看不到打印呢 ''' def se ...

  8. 【Spring】只想用一篇文章记录@Value的使用,不想再找其它了(附思维导图)

    1 简介 不得不说,Spring为大家提供许多开箱即用的功能,@Value就是一个极其常用的功能,它能将配置信息注入到bean中去.即使是一个简单的功能,Spring也提供了丰富的注入类型和形式.我经 ...

  9. 设计模式之单例模式C#实现

    前言 单例模式是老生常谈的一种设计模式,同时它是最简单也是最容易被忽视的一种设计模式. 下面是一些个人看法: (1) 单例类需要保证自己的唯一性,同时也需要避免被继承,即需要使用sealed修饰: ( ...

  10. Nezuko: 1 Vulnhub Walkthrough

    下载地址: https://www.vulnhub.com/entry/nezuko-1,352/ 虚拟机启动,设置IP地址DHCP获取 主机发现扫描: 主机层面扫描: ╰─ nmap -p1-655 ...