将Notation3加载到数据库中

时间:2011-03-08 15:28:51

标签: rdf jena semantic-web sesame n3

如何将Notation3文件表示的三元组解析并加载到数据库中?我对JenaSesame有些熟悉,但这些似乎适合处理RDF或Turtle,而不是完整的Notation3。

我发现用于处理N3的相对较少的强大工具。我找到的少数列出here,只包含粗略的Python脚本,它们只能执行基本的命令行操作,似乎没有标准的打包,分发或维护。默认的Python库似乎是notation3.py,但我找不到它的单个主页,并且发现了几十个不同的版本分散在互联网上。

例如,假设我有以下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" .

我希望能够将此(以及可能的数千个类似记录)加载到数据库中,这样我就可以运行任意查询,例如“谁在2010年转录了包含常见西班牙语名称的记录?”或“与X属相关的平均花色是什么?”

这对目前的语义网工具和N3目前是否可行?

1 个答案:

答案 0 :(得分:3)

基本问题是N3总是一种实验符号 - 完整的语言从未被广泛实现。 The diagram in this document非常有用:您的示例使用图形文字,这些文字位于任何广泛实施的N3子集之外。现在命名图被更广泛地使用,可以在大多数RDF系统(包括Jena)中表达相同的信息,但不能直接解析输入文件。

如果是我,我会期待编写一个前端转换阶段,可能使用擅长字符串和模板的语言 - 比如Ruby。然后,您可以将输入文件转换为标准RDF处理器可以处理的格式。例如,表示“Al Nonymous”所做语句的图表文字可以转换为表示Al断言该分类的行为的bNode。或者,您可以从其文字中提取每个图形并将其保存到具有合成图形名称的文件中,从而保留您当前具有的嵌套图形结构。同样,property!path符号可以很容易地重写为标准RDF,但代价是稍微冗长。

或者,请您的数据提供商以更易于处理的形式为您提供输出!