`
bdk82924
  • 浏览: 565138 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RDF文件的解析

 
阅读更多

开发过程中的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());
    }

 

分享到:
评论

相关推荐

    Rdf-File是一个处理结构化文本文件的工具组件

    1. **解析与序列化**:该组件能够解析RDF格式的文件,将其内容转化为内存中的数据结构,同时也支持将内存中的RDF数据序列化回文件,便于数据的读写操作。这在数据交换、存储和分析中非常实用。 2. **模型操作**:...

    EMP_EXP.rar_oracle

    5. **EMP_EXP.rdf文件解析** "EMP_EXP.rdf"文件很可能是一个Oracle Report Builder保存的报表文件,其中包含了报表的结构、样式、数据源、查询和计算逻辑等信息。使用Report Builder打开此文件,用户可以看到示例...

    asd.rar_ASD_rdf_rdf sax

    这些示例通常会包含读取RDF文件,处理RDF三元组,以及可能的错误处理逻辑。 2. **SAX解析原理**:可能包含有关SAX解析器工作原理的文档,解释如何注册事件处理器,以及如何响应开始元素、结束元素、字符等事件。 3...

    rdf2rdf:此Java工具将RDF数据从任何RDF格式转换为任何其他格式。-开源

    此Java工具将您的RDF文件从任何RDF格式转换为任何其他格式。 它基于openRDF.org Sesame项目,并包装在一个jar文件中,以方便使用。

    RDF教程经典推荐

    本资源的104页PDF教程详细阐述了RDF的基本概念,包括如何创建和解析RDF文档,使用RDF/XML、Turtle、N-Triples等不同的语法表示三元组,以及如何通过RDFS进行词汇表的构建和推理。此外,教程可能还涵盖了RDF与OWL...

    jena 解析 .owl 文件

    本篇文章将深入探讨如何使用Jena库解析.OWL文件,以及相关的技术细节。 首先,我们需要了解Jena如何读取和解析.OWL文件。Jena提供了`OntModelSpec`类,它可以定义一个本体模型的规范,其中包括了本体模型使用的推理...

    DB-RDF.rar_JAVA rdf_RDF数据_database to rdf_rdf_rdf java

    3. **数据加载**:将转换后的RDF数据写入到RDF文件或RDF数据库中,如Jena TDB或Apache MarkLogic。 4. 反向过程(RDF到数据库)可能涉及解析RDF数据,解析三元组,并将其插入到相应的数据库表中。 为了实现这些功能...

    一个权威的医疗rdf数据集,医疗知识图谱。h..zip

    标题中的“一个权威的医疗rdf数据集,医疗知识图谱”揭示了这个压缩包内容的核心——它包含了一个基于...最后,使用数据分析和可视化工具,如Python的SPARQLWrapper库、Gephi等,可以帮助你解析数据并呈现有价值的洞察。

    ntriple:一个简单的RDF N-Triples解析器

    在给定的标题"ntriple:一个简单的RDF N-Triples解析器"中,我们可以推断这是一个针对RDF N-Triples格式的解析器项目,可能是用特定编程语言实现的。由于标签中包含了"rust",我们可以确认这个解析器是使用Rust编程...

    rdf-vcf:RDF.rb阅读器,用于各种调用格式(VCF)文件

    RDF :: VCF 这是阅读器插件,用于变异调用格式(VCF)文件,在生物信息学中广泛使用。 该项目源于和在,并在期间进一步发展。 注意:由于基于Java的VCF解析器,目前该项目需要JRuby 9.0(或更高版本)。 我们希望...

    xml学习,多种解析xml文件的方法

    本篇文章将深入探讨XML的学习及多种解析XML文件的方法。 首先,理解XML的基本结构至关重要。XML文档由元素(Elements)、属性(Attributes)、文本(Text)、注释(Comments)等组成。元素是XML文档的核心,它们...

    前端开源库-rdf-parser-rdfxml

    1. 数据集成:如果你的项目需要从不同来源整合RDF数据,此库可以帮助你解析RDFXML文件并将其集成到你的应用中。 2. 语义搜索:通过解析RDF数据,你可以构建一个基于语义的搜索引擎,提供更精准的搜索结果。 3. 信息...

    Python库 | fdk-rdf-parser-0.2.12.tar.gz

    这可能包括解析RDF文件(如turtle、XML或N3格式),转换数据模型,执行查询,或者与其他数据格式(如JSON-LD)进行交互。在实际应用中,这样的库可以用于构建知识图谱,数据集成,或者任何需要处理结构化数据和语义...

    使用 Jena API 处理 RDF

    ### 使用Jena API处理RDF:深度解析与实践 #### 引言 资源描述框架(Resource Description Framework,简称RDF)是一种用于描述网络资源的标准模型,由万维网联盟(W3C)制定。它使用一种图形化的方式表示数据,...

    jena RDF API入门(汇总)

    - **解释**:这段代码首先通过`FileManager.get().open()`方法打开指定路径的RDF文件,并将其内容读入到InputStream对象中。然后创建一个默认的Model实例,调用`read()`方法将InputStream中的内容读入到Model中,...

    《An Introduction to RDF and the Jena RDF API》的译文

    根据提供的文件信息,本文将对RDF(Resource Description Framework)以及Jena RDF API进行详细的介绍与解析。通过本文,读者可以了解到RFA的基本概念、如何使用Jena API处理RDF数据,以及相关的示例代码。 ### 1. ...

    RDF.rar_rdf

    RDF的核心概念包括URI(Uniform Resource Identifier)作为资源的唯一标识,以及使用XML语法进行序列化,使得数据能够被网络上的机器读取和解析。 在压缩包中的文件名列表: 1. "Base_Donn.m" - 这可能是用MATLAB...

    前端开源库-rdf-parser-microdata

    `rdf-parser-microdata`是一个专门针对前端开发的开源库,它专注于解析Microdata格式的数据并将其转换为RDF表示。 Microdata是HTML5引入的一种元数据嵌入方式,使得网页内容可以被搜索引擎、浏览器插件和其他工具...

    Jena_RDF_API的译文

    RDF的读操作可以通过解析RDF文件或者从网络获取RDF数据,然后加载到Model中。Jena支持多种RDF格式,如RDF/XML、N-Triples、Turtle等。一旦模型加载完毕,可以使用迭代器遍历其中的陈述,或者使用SPARQL查询语言进行...

    复合能力与偏好设置文件(rdf)

    2. 使用RDF类来区分设置文件元素:RDF处理器通过识别RDF类来解析和理解设置文件,这些类定义了不同的属性和组件。这样,即使设置文件被嵌入到不同类型的XML文档中,处理器也能正确解析。 3. CC/PP词汇:这是用来...

Global site tag (gtag.js) - Google Analytics