gpt4 book ai didi

ruby - 使用 rdf gem 在 ruby​​ 中解析 RDF (RDFXML) - 没有按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:45 24 4
gpt4 key购买 nike

我是 RDF 的新手,但以下内容似乎很简单;我只是没有得到我期望的结果。我有一个 RDF/XML 文件如下(它在 W3C 验证器中验证):

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ore="http://blah.com"
xmlns:dms="http://blah.com"
>
<ore:Aggregation rdf:about="http://blah.com/data/Manifest">
<ore:aggregates>
<ore:Aggregation rdf:about="http://blah.com/data/something">
<rdf:type rdf:resource="http://blah.com/data/Sequence"/>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
</ore:Aggregation>
</ore:aggregates>
<ore:aggregates>
<ore:Aggregation rdf:about="http://blah.com/data/somethingElse">
<rdf:type rdf:resource="http://blah.com/data/Sequence"/>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
</ore:Aggregation>
</ore:aggregates>
</ore:Aggregation>
</rdf:RDF>

我尝试使用 rdf gem 如下解析它,但它没有打印出语句/三元组:

RDF::RDFXML::Reader.open(image_collection_file) do |reader|
puts reader.to_yaml
puts reader.inspect
reader.each_statement do |statement|
statement.inspect! # nothing here
end
end

reader.to_yaml 的输出是:

--- !ruby/object:RDF::TriX::Reader 
implementation: !ruby/object:Module {}

input: !ruby/object:File {}

library: :nokogiri
options:
:validate: false
:intern: true
:canonicalize: false
:prefixes: {}

xml: !ruby/object:Nokogiri::XML::Document
decorators:
errors: []

node_cache: []

reader.inspect 的输出是:

#<RDF::TriX::Reader:0x101832a50 @implementation=RDF::TriX::Reader::Nokogiri, @xml=#<Nokogiri::XML::Document:0x80c16cd8 name="document" children=[#<Nokogiri::XML::Element:0x80c14b7c name="RDF" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> children=[#<Nokogiri::XML::Text:0x80c14690 "\n  ">, #<Nokogiri::XML::Element:0x80c14640 name="Aggregation" namespace=#<Nokogiri::XML::Namespace:0x80c14528 prefix="ore" href="http://blah.com"> attributes=[#<Nokogiri::XML::Attr:0x80c144c4 name="about" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://blah.com/data/Manifest">] children=[#<Nokogiri::XML::Text:0x80c13bdc "\n    ">, #<Nokogiri::XML::Element:0x80c13b78 name="aggregates" namespace=#<Nokogiri::XML::Namespace:0x80c14528 prefix="ore" href="http://blah.com"> children=[#<Nokogiri::XML::Text:0x80c13628 "\n      ">, #<Nokogiri::XML::Element:0x80c135c4 name="Aggregation" namespace=#<Nokogiri::XML::Namespace:0x80c14528 prefix="ore" href="http://blah.com"> attributes=[#<Nokogiri::XML::Attr:0x80c13470 name="about" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://blah.com/data/something">] children=[#<Nokogiri::XML::Text:0x80c12b88 "\n        ">, #<Nokogiri::XML::Element:0x80c12b24 name="type" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> attributes=[#<Nokogiri::XML::Attr:0x80c129bc name="resource" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://blah.com/data/Sequence">]>, #<Nokogiri::XML::Text:0x80c12a5c "\n        ">, #<Nokogiri::XML::Element:0x80c12160 name="type" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> attributes=[#<Nokogiri::XML::Attr:0x80c11ff8 name="resource" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://www.w3.org/1999/02/22-rdf-syntax-ns#List">]>, #<Nokogiri::XML::Text:0x80c12084 "\n      ">]>, #<Nokogiri::XML::Text:0x80c1165c "\n    ">]>, #<Nokogiri::XML::Text:0x80c114e0 "\n    ">, #<Nokogiri::XML::Element:0x80c11490 name="aggregates" namespace=#<Nokogiri::XML::Namespace:0x80c14528 prefix="ore" href="http://blah.com"> children=[#<Nokogiri::XML::Text:0x80c10f2c "\n      ">, #<Nokogiri::XML::Element:0x80c10edc name="Aggregation" namespace=#<Nokogiri::XML::Namespace:0x80c14528 prefix="ore" href="http://blah.com"> attributes=[#<Nokogiri::XML::Attr:0x80c10d74 name="about" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://blah.com/data/somethingElse">] children=[#<Nokogiri::XML::Text:0x80c1048c "\n        ">, #<Nokogiri::XML::Element:0x80c1043c name="type" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> attributes=[#<Nokogiri::XML::Attr:0x80c102d4 name="resource" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://blah.com/data/Sequence">]>, #<Nokogiri::XML::Text:0x80c10374 "\n        ">, #<Nokogiri::XML::Element:0x80c0fa64 name="type" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> attributes=[#<Nokogiri::XML::Attr:0x80c0f910 name="resource" namespace=#<Nokogiri::XML::Namespace:0x80c14af0 prefix="rdf" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> value="http://www.w3.org/1999/02/22-rdf-syntax-ns#List">]>, #<Nokogiri::XML::Text:0x80c0f99c "\n      ">]>, #<Nokogiri::XML::Text:0x80c0ef74 "\n    ">]>, #<Nokogiri::XML::Text:0x80c0edf8 "\n  ">]>, #<Nokogiri::XML::Text:0x80c0ec7c "\n">]>]>, @options={:validate=>false, :intern=>true, :canonicalize=>false, :prefixes=>{}}, @library=:nokogiri, @input=#<File:data/test.xml>>

这是预期的行为吗? statement.to_yaml 为空。我只想获取 RDF 中的数据(此示例已简化)。有人有任何意见/见解/网址要分享吗?

干杯, 凡妮莎

最佳答案

我不确定你为什么要调用 reader.to_yaml 或者它的目的是什么,因为我不是 Ruby 程序员。

但是查看您尝试输出语句的关键代码位,您似乎缺少 puts 关键字。 documentation github 上的 RDF::RDFXML 有如下例子:

RDF::RDFXML::Reader.open("./etc/doap.xml") do |reader|
reader.each_statement do |statement|
puts statement.inspect
end
end

在您的示例中,您错过了 statement.inspect 之前的 puts 关键字 - 尝试将其重新添加并查看是否有效

关于ruby - 使用 rdf gem 在 ruby​​ 中解析 RDF (RDFXML) - 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5174546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com