Cer*_*rin 6 rdf sesame semantic-web jena n3
如何解析并将Notation3文件表示的三元组加载到数据库中?我对Jena和Sesame有点熟悉,但这些似乎适合处理RDF或Turtle,而不是完整的Notation3.
我发现用于处理N3的相对较少的强大工具.这里列出了我发现的少数几个,只包含粗略的Python脚本,它们只能执行基本的命令行操作,似乎没有标准的打包,分发或维护.默认的Python库似乎是,notation3.py但我找不到它的单个主页,并发现了几十个不同版本分散在Internet上.
例如,假设我有以下N3代表植物分类:
{
[]
:genus "Abies" ;
:species "alba" ;
:name [:value "Silver Fir" ; :usage "common" ; :language "English" ] ;
:name [:value "European Silver Fir" ; :usage "common" ; :language "English" ] ;
:name [:value "abeto blanco" ; :usage "common" ; :language "Spanish" ] ;
:name [:value "abeto plateado" ; :usage "common" ; :language "Spanish" ] ;
:name [:value "Edeltanne" ; :usage "common" ; :language "German" ] ;
:name [:value "Silbertanne" ; :usage "common" ; :language "German" ] ;
:name [:value "Weißtanne" ; :usage "common" ; :language "German" ] ;
:stem!:type :erect ;
:stem!:height [ :value!:start 30.0 ; :value!:end 50.0 ; :value!:units "m" ] ;
:bark!:color :grey ;
:bark!:ridges :irregular ;
:foliage!:seasonality :evergreen ;
:foliage!:type :needle ;
:foliage!:arrangement :alternate ;
:foliage!:length [ :value!:start 1.0 ; :value!:end 3.0 ; :value!:units "cm" ] ;
:foliage!:width [ :value!:start 0.2 ; :value!:end 0.3 ; :value!:units "cm" ] ;
:foliage!:color :green ;
:foliage!:spiney :FALSE ;
:flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :brown ] ;
:flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :yellow ] ;
:flower [ :gender :female ; :inflorescence :catkin ; :sense :straight ; :color :pink ] ;
:fruit [ :kind :cone ; :color :brown ; ] ;
}
:is-a :botanical-classification ;
:source [
:uri <http://originating/site> ;
:name "John Doe" ;
:data-collection-date "2005-01-01" ;
] ;
:transcribed-by "Al Nonymous" ;
:transcription-date "2010-09-01" .
Run Code Online (Sandbox Code Playgroud)
我希望能够将这个(以及可能数千个类似的记录)加载到数据库中,这样我就可以运行任意查询,例如"谁在2010年转录了包含常见西班牙语名称的记录?" 或"与X属相关的平均花色是什么?"
目前这与当前的语义Web工具和N3有关吗?
基本问题是 N3 始终是一种实验性符号 - 完整的语言从未得到广泛实施。本文档中的图表信息非常丰富:您的示例使用图形文字,并且这些文字位于任何广泛实现的 N3 子集之外。现在命名图得到了更广泛的使用,可以在大多数 RDF 系统(包括 Jena)中表达相同的信息,但不能直接解析输入文件。
如果是我,我会考虑编写一个前端转换阶段,可能使用擅长字符串和模板的语言 - 例如 Ruby。然后,您可以将输入文件转换为标准 RDF 处理器可以处理的形式。例如,表示“Al Nonymous”做出的语句的图形文字可以转换为表示 Al 断言该分类的动作的 bNode。或者,您可以从其文字中提取每个图形,并将其保存到具有合成图形名称的文件中,从而保留当前拥有的嵌套图形结构。同样,该property!path表示法可以轻松地重写为标准 RDF,但代价是稍微冗长一些。
或者,要求您的数据提供商以更容易处理的形式提供输出!