【问题标题】:JENA - get value from RDFJENA - 从 RDF 中获取价值
【发布时间】:2012-12-10 08:57:56
【问题描述】:

对不起,我又来了,因为我有一个快速的问题,例如,如果我有这个 rdf:

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:ts="http://www.test.com/testModel.owl#">  
<ts:Entity rdf:ID="1234_test"> 
   <ts:Resource> 
       <ts:testProp rdf:datatype="http://www.w3.org/2001/XMLSchema#string">test_ID_test</ts:testProp>
 </ts>
</ts>
</rdf:RDF>

如何提取值 test_ID_test???如果我想使用 SPARQL,我该如何处理耶拿???

【问题讨论】:

    标签: java xml rdf sparql jena


    【解决方案1】:

    要使用 Jena 运行 SPARQL 查询,请参阅 ARQ documentationJena SPARQL 教程。

    至于您的查询,这取决于您要如何识别资源。如果您先验知道资源的 URI,那就很简单了:

    prefix ts: <http://www.test.com/testModel.owl#>
    select ?tp_value where {
      ts:1234_test ts:testProp ?tp_value
    }
    

    如果您碰巧只知道它是Entity 类型的资源,则查询的内容会稍微多一点:

    prefix ts: <http://www.test.com/testModel.owl#>
    select ?tp_value where {
      ?entity a ts:Entity ;
                ts:testProp ?tp_value
    }
    

    【讨论】:

    • 感谢您的回答,但在这种情况下,响应是:test_ID_testy^^w3.org/2001/XMLSchema#string。你知道如何只获取 test_ID_test 吗??
    • 当您对 Jena 值调用 toString() 方法时,它会返回一个对调试有用的值,包括数据类型。由于您实际拥有的是 Jena Literal 对象,因此要获取出现在数据中的文字的词法形式,请使用 getLexicalForm() 方法,并获取实际值(例如,如果它是 double 或 int)使用.getValue().
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多