Ubuntu 22.04 安装 Apache Commons RDF 指南

在 Ubuntu 22.04 上从零安装 Apache Commons RDF 0.5.0,覆盖 JDK 17 与 Maven 环境、Maven 依赖与中央仓库 jar 直跑两种方案、sha1 校验、BlankNode 最小验证与卸载清理,命令回显均实测通过。

Apache Commons RDFApache Commons RDF2026/10/15

Ubuntu 22.04 安装 Apache Commons RDF 指南

目标:在 Ubuntu 22.04 上从零搭建 Apache Commons RDF 0.5.0 的开发与运行环境(JDK 17 + Maven 3.6.3),跑通 IRI/Literal/Graph 的最小验证程序,并给出 Maven 依赖与 jar 直跑两种落地方式;本文全部命令与回显均已在 Ubuntu 22.04 实测通过。

Apache Commons RDF 是 Apache Commons 项目下的 RDF 1.1 门面库:它只定义 Graph、Triple、IRI、Literal、BlankNode、Dataset 等接口,具体能力由绑定实现提供(自带的 simple 内存实现,或 Jena/RDF4J 绑定)。它是纯 Java 库,没有独立进程与常驻服务,安装的本质就是「装好 JDK/构建工具 → 引入依赖 → 写最小验证代码 → 编译运行」。需要特别注意:该项目为低频发布,截至本文实测日期,官方下载站最新发布版就是 2017-12-23 的 0.5.0,官方只发布源码包,二进制 jar 从 Maven 中央仓库获取。

一、环境信息

本节先固定可复现的基线环境,后续所有命令均在此环境执行。列出操作系统、架构、JDK、构建工具与组件版本,便于读者对照复现。

  • 操作系统:Ubuntu 22.04.5 LTS(PRETTY_NAME="Ubuntu 22.04.5 LTS")
  • 架构:x86_64
  • JDK:OpenJDK 17.0.20.1(apt 包 openjdk-17-jdk)
  • 构建工具:Apache Maven 3.6.3
  • 组件版本:commons-rdf-api 0.5.0 + commons-rdf-simple 0.5.0(解析/序列化另需 commons-rdf-jena 0.5.0)
  • 官方下载目录:https://downloads.apache.org/commons/rdf/(实测仅 source 包)
  • Maven 坐标:org.apache.commons:commons-rdf-api:0.5.0、org.apache.commons:commons-rdf-simple:0.5.0
  • 验证用工作目录:/root/rdf-min(Maven 工程)、/root/rdf-min-jarrun(jar 直跑)

系统与架构确认(实时回显):

cat /etc/os-release | head -3
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
uname -m
x86_64

💡 说明:Commons RDF 是库而非服务,环境中不存在需要常驻的守护进程;「安装完成」的判定标准是可编译并运行一个调用其 API 的最小程序,而不是某个端口处于监听状态。

二、前置条件

本节说明安装前必须满足的条件。Ubuntu 22.04 自带可用的软件源,联网即可通过 apt 获取 JDK 与 Maven。

  1. 具有 root 或 sudo 权限的 Ubuntu 22.04 系统。
  2. 可访问 Ubuntu 官方软件源(apt update 能正常拉取索引)。
  3. 可访问 Maven 中央仓库 repo1.maven.org 与 Apache 官方下载站 downloads.apache.org(本文实测网络直连可达)。
  4. 至少 2 GB 可用磁盘空间(JDK + Maven + 依赖合计约 500 MB)。

网络连通性确认(实时回显):

curl -sI --max-time 20 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/0.5.0/ | head -1
HTTP/2 200
curl -sI --max-time 20 https://downloads.apache.org/commons/rdf/source/ | head -3
HTTP/1.1 200 OK
Date: Thu, 15 Oct 2026 02:44:22 GMT
Server: Apache

三、版本选型说明

本节回答「装哪个版本、装哪些模块」。Commons RDF 是低频发布项目,选型结论与其他高频 Commons 组件不同,需以实际查询为准。

官方下载目录 https://downloads.apache.org/commons/rdf/ 下只有 source/ 与 RELEASE-NOTES.txt,binaries/ 目录实测为空(无任何条目),即官方不提供二进制包。source/ 目录实测内容:

curl -s --max-time 30 https://downloads.apache.org/commons/rdf/source/ | grep -oE "apache-commons-rdf-[0-9.]+[^\"< ]*" | sort -u
apache-commons-rdf-0.5.0-source-release.zip
apache-commons-rdf-0.5.0-source-release.zip.asc
apache-commons-rdf-0.5.0-source-release.zip.sha256

发布说明 RELEASE-NOTES.txt 实测开头(确认版本与发布日期):

curl -s --max-time 30 https://downloads.apache.org/commons/rdf/RELEASE-NOTES.txt | head -5
# Apache Commons RDF

## 0.5.0 (2017-12-23)

This is the first release after graduation. Although there are not API changes
nor big improvements, it updates different core aspects and dependencies.

Maven 中央仓库的版本谱系实测(maven-metadata.xml 原文):

curl -s --max-time 30 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/maven-metadata.xml
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-rdf-api</artifactId>
  <versioning>
    <latest>0.5.0</latest>
    <release>0.5.0</release>
    <versions>
      <version>0.1.0-incubating</version>
      <version>0.2.0-incubating</version>
      <version>0.3.0-incubating</version>
      <version>0.5.0</version>
    </versions>
    <lastUpdated>20171223012405</lastUpdated>
  </versioning>
</metadata>
版本线最新版发布时间状态
0.1.0 / 0.2.0 / 0.3.0-incubating孵化器版本2014~2015已过时,不建议新用
0.5.0(毕业后续版本)0.5.02017-12-23Maven Central latest/release,本文采用

模块清单与绑定实现选型(0.5.0 实测坐标,均可从中央仓库获取):

模块Maven 坐标角色传递依赖
APIorg.apache.commons:commons-rdf-api接口定义 jar,零第三方依赖无
Simpleorg.apache.commons:commons-rdf-simple纯内存参考实现仅 api
Jena 绑定org.apache.commons:commons-rdf-jena绑定 Jena 3.5.0,提供解析/序列化api、simple、jena-osgi 3.5.0 等
RDF4J 绑定org.apache.commons:commons-rdf-rdf4j绑定 RDF4J 2.2.2api、rdf4j-model 等
JSON-LDorg.apache.commons:commons-rdf-jsonld-javaJSON-LD 解析适配api、jsonld-java 0.11.1

维护状态必须如实说明:0.5.0 之后官方再无新版本(Maven Central lastUpdated=20171223012405),项目处于低频/停滞维护状态。这不影响「API 稳定 + 实现可插拔」的核心价值:接口面向 RDF 1.1 规范,自身能力面窄且稳定;需要新格式、新特性时由底层绑定(Jena/RDF4J)承担演进。本文实际采用 0.5.0,理由是它是 Maven Central 上 latest/release 的最终版本,且实测字节码主版本号为 52(Java 8),JDK 8/17 均可运行。

💡 技术拓展:Java 生态里做 RDF 的主流方案对比如下——

方案定位特点适用场景
Commons RDFRDF 1.1 API 门面(接口层)统一抽象,实现可插拔,API 面窄希望与具体 RDF 库解耦的项目
Apache Jena全功能 RDF/SPARQL 框架解析/存储/推理/SPARQL 查询一站式需要完整 RDF 平台与查询能力
Eclipse RDF4JRDF 存储/查询框架Repository API、Sail 存储层需要 RDF 数据库与存储后端集成
JSON-LD Java单一格式解析库只做 JSON-LD仅处理 JSON-LD 的轻场景

本文采用 Commons RDF API + simple 内存实现做入门与验证,涉及解析/序列化时引入 jena 绑定(角色差异详见《Apache Commons RDF 0.5.0 RDF 解析与序列化示例详解》)。

版本确认为 0.5.0 的实测回显:

curl -s --max-time 30 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/maven-metadata.xml | grep -oE "<(latest|release)>[^<]+</(latest|release)>"
<latest>0.5.0</latest>
<release>0.5.0</release>

四、方案 A:Maven 依赖安装(在线,推荐)

本节面向常规 Java 项目开发,通过 apt 安装 JDK 与 Maven,再用 Maven 坐标引入 commons-rdf 依赖并跑通最小验证程序。这是最贴合工程实践的方式。

4.1 方案说明

方案 A 的链路是:apt 安装 openjdk-17-jdk 与 maven → 在 pom.xml 中声明 commons-rdf-api 与 commons-rdf-simple 0.5.0 → Maven 自动从中央仓库下载 jar 到本地仓库 → 编译并运行验证程序。优点是版本由 pom 统一管控、依赖自动解析;缺点是首次构建需要联网。

4.2 安装 JDK 17

Ubuntu 22.04 官方源内置 openjdk-17-jdk,直接安装即可:

apt-get update -qq && apt-get install -y openjdk-17-jdk

安装后确认版本:

java -version
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)

重复执行安装命令可确认包版本(实测回显):

apt-get install -y openjdk-17-jdk maven 2>&1 | grep "already the newest"
maven is already the newest version (3.6.3-5).
openjdk-17-jdk is already the newest version (17.0.20.1+1-1~22.04).

验证点:java -version 能输出 17.0.x 即表示 JDK 就绪;若仍指向旧版本,用 update-alternatives --config java 选择 17。

4.3 安装 Maven

apt-get install -y maven

确认版本与 Maven 实际使用的 JDK:

mvn -version | head -3
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64

验证点:Java version 一行显示 17.0.20.1,说明 Maven 已绑定到 JDK 17,无需额外设置 JAVA_HOME。

4.4 创建工程并引入依赖

建立一个最小 Maven 工程,pom.xml 中声明 api 与 simple 两个依赖。

mkdir -p /root/rdf-min/src/main/java

pom.xml(完整内容,文件路径 /root/rdf-min/pom.xml):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>demo</groupId>
  <artifactId>rdf-min</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>17</maven.compiler.release>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-rdf-api</artifactId>
      <version>0.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-rdf-simple</artifactId>
      <version>0.5.0</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
      </plugin>
    </plugins>
  </build>
</project>

逐项说明关键配置:

  • commons-rdf-api + commons-rdf-simple:入门与验证所需的最小组合,api 是接口,simple 是默认实现;两者传递依赖实测为零第三方 jar(见 4.6 节依赖树)。
  • maven.compiler.release=17:按 JDK 17 语义编译;0.5.0 自身是 Java 8 字节码(major 52),JDK 8 环境把该值改回 8 即可。
  • maven-compiler-plugin 显式固定 3.11.0:Maven 3.6.3 默认绑定的 3.1 版插件不认识 release 属性,会按 source/target=1.5 编译并被 JDK 17 拒绝。

4.5 最小验证代码

验证程序 TermsCheck.java(文件路径 /root/rdf-min/src/main/java/TermsCheck.java)创建 IRI、Literal 与 Graph,完成一次「建图 → 查询 → 打印」闭环:

import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.Literal;
import org.apache.commons.rdf.api.RDF;
import org.apache.commons.rdf.api.Triple;
import org.apache.commons.rdf.simple.SimpleRDF;

public class TermsCheck {
    public static void main(String[] args) {
        RDF rdf = new SimpleRDF();
        IRI alice = rdf.createIRI("http://example.org/people/alice");
        IRI name = rdf.createIRI("http://xmlns.com/foaf/0.1/name");
        Literal aliceName = rdf.createLiteral("Alice");
        Graph g = rdf.createGraph();
        g.add(alice, name, aliceName);
        System.out.println("size=" + g.size());
        for (Triple t : g.iterate()) {
            System.out.println(t.getSubject().ntriplesString() + " "
                    + t.getPredicate().ntriplesString() + " "
                    + t.getObject().ntriplesString());
        }
        System.out.println("commons-rdf OK: " + rdf.getClass().getName());
    }
}

程序要点:org.apache.commons.rdf.api.RDF 是 0.5.0 的工厂接口,new SimpleRDF() 得到内存实现;Graph.add(主语, 谓语, 宾语) 直接以三个术语建三元组;ntriplesString() 输出 N-Triples 规范形式,便于人眼核对。

💡 技术拓展:RDF 数据模型只有三种节点(IRI、Literal、BlankNode),一条三元组就是「主语-谓语-宾语」三个节点的组合,谓语必须是 IRI。上例的三元组语义是「alice 的名字是 Alice」,http://xmlns.com/foaf/0.1/name 是 FOAF 词表里约定俗成的「姓名」属性 IRI。相比关系表的行列模型,RDF 把一切数据都拆成这种最小陈述,便于跨数据集合并。

4.6 编译与运行验证

以 Maven 编译并确认依赖树:

cd /root/rdf-min && mvn -B clean compile 2>&1 | tail -9
[INFO] --- maven-compiler-plugin:3.11.0:compile (default-compile) @ rdf-min ---
[INFO] Changes detected - recompiling the module! :source
[INFO] Compiling 1 source file with javac [debug release 17] to target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.111 s
[INFO] Finished at: 2026-10-15T02:56:20Z
[INFO] ------------------------------------------------------------------------
cd /root/rdf-min && mvn -B dependency:tree 2>&1 | grep -E "rdf-min:jar|commons-rdf"
[INFO] demo:rdf-min:jar:1.0.0
[INFO] +- org.apache.commons:commons-rdf-api:jar:0.5.0:compile
[INFO] \- org.apache.commons:commons-rdf-simple:jar:0.5.0:compile

解读:依赖树中除工程自身外只有 api 与 simple 两个节点,api 零传递依赖、simple 仅依赖 api,不会拖入任何其他 jar。

运行:

cd /root/rdf-min
mvn -q -B dependency:build-classpath -Dmdep.outputFile=cp.txt
CP=$(cat cp.txt)
java -Dfile.encoding=UTF-8 -cp target/classes:$CP TermsCheck
size=1
<http://example.org/people/alice> <http://xmlns.com/foaf/0.1/name> "Alice"
commons-rdf OK: org.apache.commons.rdf.simple.SimpleRDF

结果解读:size=1 表明三元组已入图,第二行是 ntriplesString() 输出的 N-Triples 规范形式(IRI 尖括号包裹),末行确认工厂实现类为 SimpleRDF。这表示 commons-rdf 0.5.0 已在 JDK 17 上完整可用。

💡 说明:-Dfile.encoding=UTF-8 用于固定中文输出的字符集。若服务器 LANG 已为 C.UTF-8 或 zh_CN.UTF-8,可省略;在默认 POSIX locale 下省略会出现中文乱码。

五、方案 B:Maven Central jar 直跑(离线友好)

本节面向没有 Maven/构建体系的场景。由于官方不发布二进制包,二进制 jar 统一从 Maven 中央仓库获取,用 javac + java 完成编译运行,不依赖任何构建工具。

5.1 方案说明

链路是:从 repo1.maven.org 下载 api 与 simple 两个 jar → 校验 sha1 → 用 javac -cp 编译源码 → 用 java -cp 运行。两个 jar 即为完整运行期依赖(实测 Graph/Dataset 全部能力无需其他 jar),适用于离线环境、脚本化部署或纯粹想「拿到 jar 就能用」的读者。

5.2 下载与完整性校验

mkdir -p /root/rdf-min-jarrun && cd /root/rdf-min-jarrun
curl -sO --max-time 60 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/0.5.0/commons-rdf-api-0.5.0.jar
curl -sO --max-time 60 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-simple/0.5.0/commons-rdf-simple-0.5.0.jar
ls -l *.jar
-rw-r--r-- 1 root root 22565 Oct 15 02:41 commons-rdf-api-0.5.0.jar
-rw-r--r-- 1 root root 36267 Oct 15 02:41 commons-rdf-simple-0.5.0.jar

校验 sha1(期望值与实测值必须逐字一致):

cd /root/rdf-min-jarrun
curl -sO --max-time 30 https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/0.5.0/commons-rdf-api-0.5.0.jar.sha1
echo "期望: $(cat commons-rdf-api-0.5.0.jar.sha1)"
echo "实测: $(sha1sum commons-rdf-api-0.5.0.jar | awk '{print $1}')"
期望: df2d4451dee5b311cb4f51ced214dfaab5838291
实测: df2d4451dee5b311cb4f51ced214dfaab5838291

⚠️ 注意:若 sha1 不一致,说明下载包损坏或被篡改,须删除后重新下载;切勿跳过校验直接使用。

5.3 javac 编译与 java 运行

用两个 jar 作为编译与运行期 classpath:

cd /root/rdf-min-jarrun
cp /root/rdf-min/src/main/java/TermsCheck.java .
javac -encoding UTF-8 -cp commons-rdf-api-0.5.0.jar:commons-rdf-simple-0.5.0.jar -d out TermsCheck.java
java -Dfile.encoding=UTF-8 -cp out:commons-rdf-api-0.5.0.jar:commons-rdf-simple-0.5.0.jar TermsCheck
size=1
<http://example.org/people/alice> <http://xmlns.com/foaf/0.1/name> "Alice"
commons-rdf OK: org.apache.commons.rdf.simple.SimpleRDF

验证点:javac 无报错、java -cp 一行成功打印三行结果,且无 NoClassDefFoundError,说明 api + simple 两个 jar 即为完整运行期组合。

官方源码包(可选):如需查看官方源码,从 https://downloads.apache.org/commons/rdf/source/apache-commons-rdf-0.5.0-source-release.zip 下载(约 555 KB),解压后是完整的 Maven 多模块工程,可自行构建。

六、方案对比与选择建议

本节汇总两种方案的差异,给出选型建议。两种方案产出的是同一份 commons-rdf 0.5.0 代码,差别仅在获取与装配方式。

维度方案 A:Maven 依赖方案 B:中央仓库 jar 直跑
运行期依赖Maven 自动解析手工把 jar 放入 classpath
是否联网首次构建需联网仅下载时需要联网
依赖版本管控pom 统一声明,可锁版本无,靠文件命名区分
多依赖协同(传递依赖)自动处理(如 jena 绑定的十余个 jar)需手工收集,仅适合 api+simple 组合
可复现产物mvn package 产出 jarjavac 产出 class + 引用 jar
适用场景常规工程开发离线脚本、临时验证、无构建体系

选型建议:若项目有构建体系(Maven/Gradle),一律选方案 A,尤其后续要用 jena/rdf4j 绑定做解析序列化时,传递依赖必须交给 Maven 管理;若在无构建工具的老旧服务器上临时验证简单内存图操作,选方案 B。两者也可共存——用方案 A 开发、用方案 B 分发最小组合。

七、配置说明

本节说明 Commons RDF 使用中真正需要设置的「配置」。它是库而非服务,没有独立配置文件,全部行为通过代码参数或 JDK 环境变量控制。

环境变量 JAVA_HOME(Maven 依赖它定位 JDK)。默认会话中该变量为空(实测回显):

echo "JAVA_HOME=$JAVA_HOME"
JAVA_HOME=

此时 apt 版 Maven 仍能正常工作,是因为它按 PATH 中的 java(由 update-alternatives 指向 JDK 17,见 4.3 节 mvn -version 回显的 runtime 一行)完成 JDK 定位,不依赖 JAVA_HOME。若手工安装 JDK 或需要显式固定 JDK 路径,可显式导出(实测回显):

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 && echo "JAVA_HOME=$JAVA_HOME"
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

逐项说明:

  • JAVA_HOME:Maven 定位 JDK 的优先来源。Ubuntu 官方源的 Maven 自带兼容逻辑,JAVA_HOME 为空时按 PATH 中的 java 定位,实测无需手工设置即可构建;仅当手工安装 JDK 或 Maven 报「找不到 JDK」时,再显式导出该变量。
  • 运行期 classpath:api + simple 两个 jar 即为完整组合(5.3 节实测);引入 jena 绑定后则必须由 Maven 带全 jena-osgi 等十余个 jar,手工收集极易缺包。
  • 代码级「参数」:语言标签(自动小写化)、数据类型 IRI、工厂实例的创建范围等均通过 API 入参控制,无外部配置文件,各 API 细节见《Apache Commons RDF 0.5.0 常用 API 与图操作详解》。

八、常见问题(FAQ)

Q1:createIRI 传什么值会抛异常? 实测两种行为:含空格等非法语法的字符串(如 not a valid iri with spaces)抛 IllegalArgumentException;而 not-a-valid-iri 这类裸相对引用会被接受(作为相对 IRI 引用处理)。需要强制绝对 IRI 时,在业务侧自行校验是否含协议前缀。

Q2:引入 commons-rdf-jena 后运行报 NoClassDefFoundError: org/apache/jena/riot/system/StreamRDF? 实测原因:只把 commons-rdf-jena-0.5.0.jar 放进 classpath,缺 Jena 运行时。jena 绑定的传递依赖包括 jena-osgi、httpclient-osgi、jsonld-java、jackson、commons-io 2.5、commons-csv、libthrift、slf4j-api 等十余个 jar,手工拼 classpath 极易缺包,务必用 Maven/Gradle 管理完整依赖树。

Q3:中文输出显示为乱码(问号)? 默认 POSIX locale 下 JVM 会用 ASCII 输出中文。解决:运行时加 -Dfile.encoding=UTF-8,或把系统 locale 调成 UTF-8(export LANG=C.UTF-8)。

Q4:commons-rdf 0.5.0 能不能跑在 JDK 8 上? 可以。实测其字节码主版本号为 52(Java 8),并在 Eclipse Temurin 1.8.0_504 上完成 TermsCheck 编译运行验证;JDK 8 与 17 均可,本文用 JDK 17 属于更高基线。

Q5:运行时打印 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" 是报错吗? 不是。这是引入 jena 绑定后(其依赖 slf4j-api 1.7.25 但未带日志实现)的提示,SLF4J 回退到 NOP 空实现,功能不受影响;需要日志时在 pom 里加 slf4j-simple 依赖即可,纯 api + simple 组合不会出现该提示。

九、卸载与清理

Commons RDF 本身不产生系统级安装,卸载即移除依赖与本地文件。

移除验证工程与下载的 jar:

rm -rf /root/rdf-min /root/rdf-min-jarrun
ls /root/rdf-min 2>&1
ls: cannot access '/root/rdf-min': No such file or directory

移除 Maven 本地仓库中的 commons-rdf(影响所有工程,慎用):

rm -rf $HOME/.m2/repository/org/apache/commons/commons-rdf-api \
       $HOME/.m2/repository/org/apache/commons/commons-rdf-simple

卸载 JDK 与 Maven(仅当不再需要)。先以 -s 预演确认将删除的包,无误后真正执行:

apt-get -s purge -y openjdk-17-jdk maven
# 输出节选(实测首尾)
The following packages will be REMOVED:
  maven* openjdk-17-jdk*
0 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.

确认无误后真正卸载:

apt-get purge -y openjdk-17-jdk maven && apt-get autoremove -y

十、参考链接

  1. Apache Commons RDF 官方主页:https://commons.apache.org/proper/commons-rdf/
  2. Apache Commons RDF 官方下载目录(仅源码包):https://downloads.apache.org/commons/rdf/
  3. Commons RDF 0.5.0 发布说明:https://downloads.apache.org/commons/rdf/RELEASE-NOTES.txt
  4. Commons RDF Javadoc(API):https://commons.apache.org/proper/commons-rdf/javadocs/api-0.5.0/
  5. Maven 中央仓库坐标页:https://repo1.maven.org/maven2/org/apache/commons/commons-rdf-api/
  6. OpenJDK 17 安装包(Ubuntu 官方源):apt-cache show openjdk-17-jdk