Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java n-triple RDF解析

Java n-triple RDF解析
EN

Stack Overflow用户
提问于 2011-04-28 05:34:19
回答 3查看 8.8K关注 0票数 11

我想解析一个n-triple格式的RDF文件。

我可以编写自己的解析器,但我更愿意使用库,而Jena在这方面似乎过于复杂(或者至少我看不到他们的文档解释如何以合理的方式读取n-triple)。

你能给我推荐一些有用的库吗?或者如果你对Sesame或Jena很了解,你可能会知道他们是如何解决这个问题的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-28 08:07:19

如果您只想解析NTriples,并且除了基本的处理和查询之外不需要做任何事情,那么您可以尝试使用NxParser。这是一段非常简单的Java代码,它可以传递任何类似于NTriples的格式(如NQuads等),从而为您提供一个遍历文件中语句的迭代器。如果你只想要NTriples,你可以很容易地忽略少于/多于3项的语句。

在链接的页面上改编示例将会给出以下简单的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NxParser nxp = new NxParser(new FileInputStream("filetoparse.nq"),false);

while (nxp.hasNext()) 
{
  Node[] ns = nxp.next();
  if (ns.length == 3)
  {
    //Only Process Triples  
    //Replace the print statements with whatever you want
    for (Node n: ns) 
    {
      System.out.print(n.toN3());
      System.out.print(" ");
    }
    System.out.println(".");
  }
}
票数 7
EN

Stack Overflow用户

发布于 2011-04-28 08:14:57

对于Jena,这并不是那么困难:

给定一个文件rdfexample.ntriple,其中包含以下N-三元组形式的RDF (示例取自here):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<http://www.recshop.fake/cd/Hide your heart> <http://www.recshop.fake/cd#year> "1988" .
<http://www.recshop.fake/cd/Hide your heart> <http://www.recshop.fake/cd#price> "9.90" .
<http://www.recshop.fake/cd/Hide your heart> <http://www.recshop.fake/cd#company> "CBS Records" .
<http://www.recshop.fake/cd/Hide your heart> <http://www.recshop.fake/cd#country> "UK" .
<http://www.recshop.fake/cd/Hide your heart> <http://www.recshop.fake/cd#artist> "Bonnie Tyler" .
<http://www.recshop.fake/cd/Empire Burlesque> <http://www.recshop.fake/cd#year> "1985" .
<http://www.recshop.fake/cd/Empire Burlesque> <http://www.recshop.fake/cd#price> "10.90" .
<http://www.recshop.fake/cd/Empire Burlesque> <http://www.recshop.fake/cd#company> "Columbia" .
<http://www.recshop.fake/cd/Empire Burlesque> <http://www.recshop.fake/cd#country> "USA" .
<http://www.recshop.fake/cd/Empire Burlesque> <http://www.recshop.fake/cd#artist> "Bob Dylan" .

下面的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    String fileNameOrUri = "src/a/rdfexample.ntriple";
    Model model = ModelFactory.createDefaultModel();
    InputStream is = FileManager.get().open(fileNameOrUri);
    if (is != null) {
        model.read(is, null, "N-TRIPLE");
        model.write(System.out, "TURTLE");
    } else {
        System.err.println("cannot read " + fileNameOrUri);;
    }
}

读取文件,并以海龟的形式打印出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<http://www.recshop.fake/cd/Hide your heart>
      <http://www.recshop.fake/cd#artist>
              "Bonnie Tyler" ;
      <http://www.recshop.fake/cd#company>
              "CBS Records" ;
      <http://www.recshop.fake/cd#country>
              "UK" ;
      <http://www.recshop.fake/cd#price>
              "9.90" ;
      <http://www.recshop.fake/cd#year>
              "1988" .

<http://www.recshop.fake/cd/Empire Burlesque>
      <http://www.recshop.fake/cd#artist>
              "Bob Dylan" ;
      <http://www.recshop.fake/cd#company>
              "Columbia" ;
      <http://www.recshop.fake/cd#country>
              "USA" ;
      <http://www.recshop.fake/cd#price>
              "10.90" ;
      <http://www.recshop.fake/cd#year>
              "1985" .

因此,使用Jena,您可以轻松地将RDF (以任何形式)解析为com.hp.hpl.jena.rdf.model.Model对象,从而允许您以编程方式对其进行操作。

票数 8
EN

Stack Overflow用户

发布于 2014-11-18 08:17:43

老问题,但既然您明确地问到了不同的库,我想我应该展示如何使用Eclipse RDF4JRio parser进行简单的RDF解析(透露:我是RDF4J开发人员之一)。

例如,要解析文件并将所有三元组放入Model中,只需执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FileInputStream in = new FileInputStream("/path/to/file.nt");

Model m = Rio.parse(in, RDFFormat.NTRIPLES);

如果您希望立即将解析器输出打印到stdout (例如,以Turtle格式),请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FileInputStream in = new FileInputStream("/path/to/file.nt");

RDFParser parser = Rio.createParser(RDFFormat.NTRIPLES);
parser.parse(in, "", Rio.createWriter(RDFFormat.TURTLE, System.out));

当然,使用这些基本工具的方法还有很多,请查看工具包文档以了解详细信息。

顺便说一句,Rio解析器可以作为单独的maven工件使用,所以如果您希望只使用解析器,而不使用其余的RDF4J工具,也可以这样做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5814069

复制
相关文章
SQL Server的日期计算
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
用户8983410
2021/11/02
2.2K0
Python判断连续时间序列范围并分组应用
这里从数据库中导出的监测设备数据离线预警日志,需求是找出各监测对象设备掉线最长持续多久并确定其离线时长。
用户8949263
2022/04/08
1.9K0
Python判断连续时间序列范围并分组应用
sql判断是否连续并生成连续分组id
想实现根据时间升序排序取出同班级下一个进入班级的时间,然后判断同一班级上一个人和下一个人是否连续,并生成符合分组条件的连续分组id。
chimchim
2022/11/13
1.1K0
sql判断是否连续并生成连续分组id
sql对多个条件进行分组求和_分组求和法例题附答案
大家好,又见面了,我是你们的朋友全栈君。 在ireport中实现分组,求和。效果如下 name total A 2 A 3 subtotal 5 B 4 B 5 subtotal 9 添加Document–>Variables–>Variable Name 建立自定义的求和函数 设置相关属性。 Calculation 设置为sum reset type为report Reset group 选择自己创建的分组。 increment type 为Group Variable Expression填写你要累计的对象表达式。 new Integer($F{rxNo}) Initial Value Expression处填写数据类型的初始化对象。 new java.lang.Integer(0)
全栈程序员站长
2022/10/03
2.8K0
Sql server DATEADD日期函数的使用[通俗易懂]
DATEADD(datepart,number,date) date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
全栈程序员站长
2022/09/07
1.9K0
在sql server里,日期字段按天数进行group by查询的方法
比如一张表里有如下时间字段的记录: 2009-01-01 12:00:00 2008-12-23 11:00:11 2009-12-22 11:22:00 2009-01-01 14:00:00 2009-12-22 12:00:09
跟着阿笨一起玩NET
2018/09/18
6.4K0
sql server 日期转换函数 convert()
--内容来自:http://hi.baidu.com/muqingz/item/8fb7b3ca8a485b0cac092f7b Select CONVERT(varchar(100), GETDATE(), 0)--: 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1)--: 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2)--: 06.05.16 Select CONVERT(
乔达摩@嘿
2020/09/11
1.4K0
根据分组依据对Java集合元素进行分组
业务背景:在项目中有个“分账”功能,就是支付的钱一部分要根据不同商品的分账金额自动分给平台提供商。
张张
2019/12/25
2.4K0
Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)
将一组数据平均分成n组 即:数据分组数固定为N,每组数据个数不定,每组个数由List列表数据总长度决定 /** * 将一组数据平均分成n组 * * @param source 要分组的数据源 * @param n 平均分成n组 * @param <T> * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int n) { List<List<T>> result = new Ar
目的地-Destination
2023/03/06
3.5K0
Java 实现将连续的日期 按照天数进行分割
目录 1 工具类 2 实现 1 工具类 public static List<Map<String,Object>> getCycleList(int cycleNum, String startTime, String endTime) throws ParseException, ParseException { System.out.println("统计的时间段为:从"+startTime+"到"+endTime); Date endParse = new
一写代码就开心
2023/02/13
1.7K0
Java 实现将连续的日期 按照天数进行分割
同字符词语分组
已知一组字符串,将所有anagram(由颠倒字母顺序而构成的字)放到一起输出。 例如:["eat", "tea", "tan", "ate", "nat", "bat"] 返回:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] LeetCode 49. Group Anagrams
小飞侠xp
2018/08/27
5220
对 list 中的相同数据进行分组
同一组数据分组 需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。 思路:将相同的数据中可以进行确认是相同的数据,拿来做分组的 key,这样保证不会重。 实际中使用,以用户数据为例,可能用户名和身份证号是不会变的,用这两个条件拼接起来。
潇洒
2019/06/28
5.7K0
SQL Server各种日期计算方法
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文 章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。  
Java架构师必看
2021/03/22
2.5K0
sql server 字符串转日期_sql server 字符串替换
提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
全栈程序员站长
2022/11/09
1.6K0
sql分别用日期、月、年 分组 group by 分组,datepart函数,datediff函数 统计
–以2013-12-10 12:56:55为例 –print convert(nvarchar(10),getdate(),120) => 2013-12-10
全栈程序员站长
2022/09/01
2.7K0
sql分别用日期、月、年 分组 group by 分组,datepart函数,datediff函数 统计
sql服务器系统时间格式,SQL Server 日期格式和日期操做
SQL Server发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT();一样,关于日期的操做函数,也分为传统方法:DATEADD()等,也有便利的新方法:EOMonth()等。sql
全栈程序员站长
2022/11/03
3.7K0
sql server 字符串和日期的转换函数[通俗易懂]
字符串转换为日期: cast(‘20100514’ as datetime)
全栈程序员站长
2022/11/10
2.6K0
「R」怎么对连续变量分组并进行生存分析
在探究基因表达、基因拷贝数等连续变量对癌症病人的预后情况的影响时,我不得不面对和处理的主要问题是如何对这种连续型的变量进行分组,然后进行相应的生存分析。
王诗翔呀
2020/07/06
4.2K0
「R」怎么对连续变量分组并进行生存分析
SQL Server 合并多对多表的数据
今天还是发一篇老文。介绍当时我合并博客文章数据时遇到的一个问题和解决方法。我不擅长SQL,如果大家有更好的方法,欢迎在评论里留言讨论。
Edi Wang
2019/07/08
2.5K0
SQL Server 合并多对多表的数据
Python对字典根据键值分组进行排序
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119530.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
4.5K0

相似问题

Neo4j 2.2.1服务器在通过java代码生成db之后不会启动

14

Neo4j不会在复制新*.db之后启动

12

在由liquibase创建db之后,测试不会启动

12

在Java OutOfMemoryError之后,Tomcat将不会启动

12

在我升级java之后,Eclipse不会启动。

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文