开发过程中的XML解析有很多种方式
一次偶然的机会,碰到RDF格式的,和传统的xml有点区别,可能有他自己的独特之处
普通的xml解析可能无效 ,在网上搜索了下 ,建议用jena解析
可以在主页下载:http://jena.sourceforge.net/ 当前版本为 jena-2.6.4
先看下RDF的大致格式
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:prf="http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#">
<rdf:Description rdf:about="Nokia3330">
<prf:component>
<rdf:Description rdf:about="HardwarePlatform">
<rdf:type
rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#HardwarePlatform" />
<prf:Keyboard>PhoneKeypad</prf:Keyboard>
<prf:NumberOfSoftKeys>1</prf:NumberOfSoftKeys>
<prf:ScreenSize>84x30</prf:ScreenSize>
<prf:ScreenSizeChar>10x3</prf:ScreenSizeChar>
<prf:StandardFontProportional>
Yes
</prf:StandardFontProportional>
<prf:Vendor>Nokia</prf:Vendor>
<prf:Model>3330</prf:Model>
<prf:TextInputCapable>Yes</prf:TextInputCapable>
</rdf:Description>
</prf:component>
</rdf:Description>
</rdf:RDF>
解析部分代码
/**
*
* 解析RDF 文件
*
* @param inputFile
* @author
* @date 2011-9-1 上午09:17:16
*/
private void parseRdfFile(File inputFile)
{
try
{
Model model = ModelFactory.createDefaultModel();
// use the FileManager to find the input file
InputStream in = new FileInputStream(inputFile);
if (in == null)
{
throw new IllegalArgumentException("File: not found");
}
model.read(new InputStreamReader(in), "");
StmtIterator stmtIt = model.listStatements();
String key1 = "";
String key2 = "";
String value = "";
while (stmtIt.hasNext())
{
Statement stmt = stmtIt.nextStatement();
// resource
key1 = stmt.getSubject().getURI();
if (null == key1)
{
continue;
}
// Property
key2 = stmt.getPredicate().getLocalName();
// RDFNode
if (stmt.getBag().size() > 0)
{
value = getBagStr(stmt.getBag());
} else
{
value = stmt.getObject().toString();
}
// key1
logger.trace("resource:" + key1);
// key2
logger.trace("Property = " + key2);
// value
logger.trace("RDFNode/bag = " + value);
}
} catch (Exception e)
{
logger.error("parseRdfFile Failed", e);
}
}
/**
*
* 获取bag 的值
*
* @param bags
* @return
* @author
* @date 2011-9-1 上午07:26:51
*/
private String getBagStr(Bag bags)
{
if (null == bags || bags.size() == 0)
{
return "";
}
StringBuilder sb = new StringBuilder();
NodeIterator bagIt = bags.iterator();
if (bagIt.hasNext())
{
while (bagIt.hasNext())
{
sb.append(bagIt.next());
sb.append(MARK_SEP);
}
}
return sb.substring(0, sb.length() - 1 - MARK_SEP.length());
}
分享到:
相关推荐
1. **解析与序列化**:该组件能够解析RDF格式的文件,将其内容转化为内存中的数据结构,同时也支持将内存中的RDF数据序列化回文件,便于数据的读写操作。这在数据交换、存储和分析中非常实用。 2. **模型操作**:...
5. **EMP_EXP.rdf文件解析** "EMP_EXP.rdf"文件很可能是一个Oracle Report Builder保存的报表文件,其中包含了报表的结构、样式、数据源、查询和计算逻辑等信息。使用Report Builder打开此文件,用户可以看到示例...
这些示例通常会包含读取RDF文件,处理RDF三元组,以及可能的错误处理逻辑。 2. **SAX解析原理**:可能包含有关SAX解析器工作原理的文档,解释如何注册事件处理器,以及如何响应开始元素、结束元素、字符等事件。 3...
此Java工具将您的RDF文件从任何RDF格式转换为任何其他格式。 它基于openRDF.org Sesame项目,并包装在一个jar文件中,以方便使用。
本资源的104页PDF教程详细阐述了RDF的基本概念,包括如何创建和解析RDF文档,使用RDF/XML、Turtle、N-Triples等不同的语法表示三元组,以及如何通过RDFS进行词汇表的构建和推理。此外,教程可能还涵盖了RDF与OWL...
本篇文章将深入探讨如何使用Jena库解析.OWL文件,以及相关的技术细节。 首先,我们需要了解Jena如何读取和解析.OWL文件。Jena提供了`OntModelSpec`类,它可以定义一个本体模型的规范,其中包括了本体模型使用的推理...
3. **数据加载**:将转换后的RDF数据写入到RDF文件或RDF数据库中,如Jena TDB或Apache MarkLogic。 4. 反向过程(RDF到数据库)可能涉及解析RDF数据,解析三元组,并将其插入到相应的数据库表中。 为了实现这些功能...
标题中的“一个权威的医疗rdf数据集,医疗知识图谱”揭示了这个压缩包内容的核心——它包含了一个基于...最后,使用数据分析和可视化工具,如Python的SPARQLWrapper库、Gephi等,可以帮助你解析数据并呈现有价值的洞察。
在给定的标题"ntriple:一个简单的RDF N-Triples解析器"中,我们可以推断这是一个针对RDF N-Triples格式的解析器项目,可能是用特定编程语言实现的。由于标签中包含了"rust",我们可以确认这个解析器是使用Rust编程...
RDF :: VCF 这是阅读器插件,用于变异调用格式(VCF)文件,在生物信息学中广泛使用。 该项目源于和在,并在期间进一步发展。 注意:由于基于Java的VCF解析器,目前该项目需要JRuby 9.0(或更高版本)。 我们希望...
本篇文章将深入探讨XML的学习及多种解析XML文件的方法。 首先,理解XML的基本结构至关重要。XML文档由元素(Elements)、属性(Attributes)、文本(Text)、注释(Comments)等组成。元素是XML文档的核心,它们...
1. 数据集成:如果你的项目需要从不同来源整合RDF数据,此库可以帮助你解析RDFXML文件并将其集成到你的应用中。 2. 语义搜索:通过解析RDF数据,你可以构建一个基于语义的搜索引擎,提供更精准的搜索结果。 3. 信息...
这可能包括解析RDF文件(如turtle、XML或N3格式),转换数据模型,执行查询,或者与其他数据格式(如JSON-LD)进行交互。在实际应用中,这样的库可以用于构建知识图谱,数据集成,或者任何需要处理结构化数据和语义...
### 使用Jena API处理RDF:深度解析与实践 #### 引言 资源描述框架(Resource Description Framework,简称RDF)是一种用于描述网络资源的标准模型,由万维网联盟(W3C)制定。它使用一种图形化的方式表示数据,...
- **解释**:这段代码首先通过`FileManager.get().open()`方法打开指定路径的RDF文件,并将其内容读入到InputStream对象中。然后创建一个默认的Model实例,调用`read()`方法将InputStream中的内容读入到Model中,...
根据提供的文件信息,本文将对RDF(Resource Description Framework)以及Jena RDF API进行详细的介绍与解析。通过本文,读者可以了解到RFA的基本概念、如何使用Jena API处理RDF数据,以及相关的示例代码。 ### 1. ...
RDF的核心概念包括URI(Uniform Resource Identifier)作为资源的唯一标识,以及使用XML语法进行序列化,使得数据能够被网络上的机器读取和解析。 在压缩包中的文件名列表: 1. "Base_Donn.m" - 这可能是用MATLAB...
`rdf-parser-microdata`是一个专门针对前端开发的开源库,它专注于解析Microdata格式的数据并将其转换为RDF表示。 Microdata是HTML5引入的一种元数据嵌入方式,使得网页内容可以被搜索引擎、浏览器插件和其他工具...
RDF的读操作可以通过解析RDF文件或者从网络获取RDF数据,然后加载到Model中。Jena支持多种RDF格式,如RDF/XML、N-Triples、Turtle等。一旦模型加载完毕,可以使用迭代器遍历其中的陈述,或者使用SPARQL查询语言进行...
2. 使用RDF类来区分设置文件元素:RDF处理器通过识别RDF类来解析和理解设置文件,这些类定义了不同的属性和组件。这样,即使设置文件被嵌入到不同类型的XML文档中,处理器也能正确解析。 3. CC/PP词汇:这是用来...