java - 如何解析此文件并捕获所有 'Data Gather' 文本?

标签 java rdf jena

我只需要解析一个文件,所以我不想学习和解析,因为我的时间不多了。
帮我用java解析这个。
哪个有获取元素中的文本所需的源代码/代码<seil:hasData> .

我尝试使用 Jena API 来做到这一点但我觉得很难理解。

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
 xmlns:foaf="http://xmlns.com/foaf/0.1/"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:ns1="http://testing.com/seil/v1.3/app/subk#"
 xmlns:seil="http://www.testing.com/seil/1.3/seil#"
 >
 <foaf:Agent rdf:about="http://testing.com/seil/user_9876543210">
   <seil:hasAccessed>
 <seil:SeilApp rdf:about="http://testing.com/seil/v1.3/app/subk_app/">
       <rdfs:label rdf:resource="SubK (Python app)"/>
    </seil:SeilApp>
  </seil:hasAccessed>
   <seil:hasActivityNode>
    <rdf:Description rdf:about="http://testing.com/seil/node_114db2b2-beba-4816- a858-ee937d09b9a2">
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100"/>
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-12-13T13:09:26</dc:date>
  </rdf:Description>
</seil:hasActivityNode>
  </foaf:Agent>
  <rdf:Description rdf:about="http://testing.com/seil/node_b54a07d3-af1b-49ef-9bf0-e28cf039f709">
  <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
  <seil:hasConnectedNode>
     <rdf:Description rdf:about="http://testing.com/seil/node_eb3d6c79-f833-4cbb-a107-d5464acd4c52">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308"/>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-phone-number</seil:hasData>
  </rdf:Description>
   </seil:hasConnectedNode>
   <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">7c2373d7-64f3-475f-a3d7-6fff8da3d8e5</seil:hasData>
 </rdf:Description>
  <rdf:Description rdf:about="http://testing.com/seil/node_02c7f438-cc29-445b-abc1-8a1cf56ad3c0">
   <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
   <seil:hasConnectedNode>
  <rdf:Description rdf:about="http://testing.com/seil/node_4c7fdae2-3d8d-46b8-a811-3da7cf545ed3">
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
       <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_0965d68d-f00b-47d9-8db9-ccb92c591cac"/>
       <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">3ffbab13-fc21-4323-a6db-623112f3a983</seil:hasData>
     </rdf:Description>
    </seil:hasConnectedNode>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-mobile-number</seil:hasData>
  </rdf:Description>
   <rdf:Description rdf:about="http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType>
   <ns1:hasOptedForService rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Banking</ns1:hasOptedForService>
    <seil:hasConnectedNode>
      <rdf:Description rdf:about="http://testing.com/seil/node_099d578c-c8ec-4be6-9449-b0c9257bbac3">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_fbb91c3c-ae03-41f7-a9ab-2877b81bdcdc"/>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">please-select-a-bank-you-prefer</seil:hasData>
     </rdf:Description>
    </seil:hasConnectedNode>
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1</seil:hasData>
   </rdf:Description>
    <rdf:Description rdf:about="http://testing.com/seil/node_0965d68d-f00b-47d9-8db9-ccb92c591cac">
  <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
   <seil:hasConnectedNode>
     <rdf:Description rdf:about="http://testing.com/seil/node_0f9b1079-1994-4e29-a48e-88efbd588808">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_1f19b932-c1b1-42e7-bcff-0ce10937e292"/>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">589a1956-d530-4bc6-9e63-eaefc0b17d31</seil:hasData>
  </rdf:Description>
   </seil:hasConnectedNode>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-village-name</seil:hasData>
    </rdf:Description>
      <rdf:Description rdf:about="http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05">
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
      <seil:hasConnectedNode>
       <rdf:Description rdf:about="http://testing.com/seil/node_9884cb69-a678-4306-a7ad-564feb2659d4">
        <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
         <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_104f532a-066b-452c-9344-359e795513c7"/>
        <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-father-name</seil:hasData>
       </rdf:Description>
    </seil:hasConnectedNode>
       <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">b57a4a21-2a67-447f-9611-c4c25925c5b6</seil:hasData>
   </rdf:Description>
     <rdf:Description rdf:about="http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
      <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_02c7f438-cc29-445b-abc1-8a1cf56ad3c0"/>
      <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">58f62598-2467-4f05-a5b1-e796dce4693f</seil:hasData>
    </rdf:Description>
    <rdf:Description rdf:about="http://testing.com/seil/node_5975e051-088c-46d  6-8281-43236ae15f4d">
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType>
    <seil:hasConnectedNode>
    <rdf:Description rdf:about="http://testing.com/seil/node_fe40d751-284e-45c0-a9af-c50cc85a5d8a">
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05"/>
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-name</seil:hasData>
      </rdf:Description>
     </seil:hasConnectedNode>
         <dc:language rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</dc:language>
           <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1</seil:hasData>
          </rdf:Description>
          <rdf:Description rdf:about="http://testing.com/seil/node_494f41b0-d4b9-4d60-adf6-40801e689068">
            <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
          <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_b54a07d3-af1b-49ef-9bf0-e28cf039f709"/>
             <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-age</seil:hasData>
            </rdf:Description>
            <rdf:Description rdf:about="http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100">
          <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
            <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_5975e051-088c-46d6-8281-43236ae15f4d"/>
               <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-language-do-you-prefer</seil:hasData>
         </rdf:Description>
           <rdf:Description rdf:about="http://testing.com/seil/node_1f19b932-c1b1-42e7-bcff-0ce10937e292">
           <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
         <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3"/>
            <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">kindly-select-services-you-would-prefer</seil:hasData>
          </rdf:Description>
           <rdf:Description rdf:about="http://testing.com/seil/node_b04f5537-e509-42e0-b0a8-b8982280494e">
            <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType>
        <ns1:hasOptedForService rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Fund transfer</ns1:hasOptedForService>
        <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2</seil:hasData>
     </rdf:Description>
       <rdf:Description rdf:about="http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e">
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType>
       <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_b04f5537-e509-42e0-b0a8-b8982280494e"/>
        <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">please-select-a-banking-service-you-want</seil:hasData>
  </rdf:Description>
   <rdf:Description rdf:about="http://testing.com/seil/node_fbb91c3c-ae03-41f7-a9ab-2877b81bdcdc">
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType>
     <ns1:hasPreferredBank rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Yes Bank</ns1:hasPreferredBank>
        <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e"/>
      <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">5</seil:hasData>
     </rdf:Description>
     <rdf:Description rdf:about="http://testing.com/seil/node_104f532a-066b-452c-9344-359e795513c7">
        <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType>
         <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_494f41b0-d4b9-4d60-adf6-40801e689068"/>
        <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">e513b4c8-f98d-4349-8d03-3bd332cf0f53</seil:hasData>
      </rdf:Description>
   </rdf:RDF>    

最佳答案

假设你的文件存储在当前目录的 src/main/resources/seil.rdf 中(你可以把它放在你喜欢的地方;我尽可能使用 maven 模式)。首先创建一个 Jena 模型:

Model m = ModelFactory.createDefaultModel();

然后将文件加载到模型中:

FileManager.get().readModel( m, "src/main/resources/seil.rdf" );

现在为您的 hasData 属性创建一个 Property 对象:

String seilNS = "http://www.testing.com/seil/1.3/seil#";
Property hasData = m.getProperty( seilNS + "hasData" );

最后迭代具有任何主题、任何对象和 hasData 作为谓词的语句:

for (Iterator<Statement> i = m.listStatements( null, hasData, (RDFNode) null ); i.hasNext(); ) {
    Statement s = i.next();
    System.out.println( String.format( "%s has-data %s", s.getSubject().getURI(), s.getLiteral().getLexicalForm() ));
}

输出:

http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100 has-data what-language-do-you-prefer
http://testing.com/seil/node_fe40d751-284e-45c0-a9af-c50cc85a5d8a has-data what-is-your-name
http://testing.com/seil/node_0f9b1079-1994-4e29-a48e-88efbd588808 has-data 589a1956-d530-4bc6-9e63-eaefc0b17d31
http://testing.com/seil/node_4c7fdae2-3d8d-46b8-a811-3da7cf545ed3 has-data 3ffbab13-fc21-4323-a6db-623112f3a983
http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e has-data please-select-a-banking-service-you-want
http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05 has-data b57a4a21-2a67-447f-9611-c4c25925c5b6
http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3 has-data 1
http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308 has-data 58f62598-2467-4f05-a5b1-e796dce4693f
http://testing.com/seil/node_099d578c-c8ec-4be6-9449-b0c9257bbac3 has-data please-select-a-bank-you-prefer
...

还有许多其他方法可以做到这一点。建议您阅读 Jena documentation ,然后根据需要提出后续问题。我也同意 RobV 的观点:如果这适用于你的教育类(class),你应该提前说明。教授们也可以阅读 StackOverflow!

关于java - 如何解析此文件并捕获所有 'Data Gather' 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588187/

相关文章:

rdf - 计算具有最多谓词的 DBPedia 资源

java - 使用 Jung 去除 RDF 图死胡同

java - 向现有 RDF 本体添加更多个体

java - Jena:如何明确指定 RDFDataMgr.loadModel(url) 发送的 Accept Header?

java - 为什么将 ArrayList 的泛型转换为父类(super class)不起作用?

java - Android:如何使用类中 Activity 的用户输入

java - 如何得到如下格式化输出?

java - Jersey Rest Web 服务返回对象列表,其中对象包含文件的字节数组

symfony - 三元组存储的数据库结构?

sparql - 如何解析 Sparql 代数中的元素