如何解析并将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" ] …
Run Code Online (Sandbox Code Playgroud) 我必须对N3进行采样,我需要将其转换为对应的RDF/XML格式,请帮忙吗?
crop:AttributeValue a rdfs:Class .
crop:SomeValue a rdfs:Class; rdfs:subClassOf crops:AttributeValue .
crop:SomeValue/7 a crops:SomeValue .
crop:SomeValue a rdf:Property ; rdfs:range crops:SomeValue .
Run Code Online (Sandbox Code Playgroud) 以下是我在N3中创建类的方法:
:Person a rdfs:Class.
Run Code Online (Sandbox Code Playgroud)
以下是如何指定特定的ressource是该类的实例:
:Pat a :Person.
Run Code Online (Sandbox Code Playgroud)
问题:我想创建一个包含20000多个实例的类(以编程方式生成).:Pat a :Person.
为我的20000个实例编写整体使得本体文件变得冗长.
问题:是否有解决方案使文件变小?
考虑以下实例SomeClass
:
instances:some_thing1
a semapi:SomeClass ;
semapi:hasChainTo (
[ ... ] [ ... ] [ ... ]
) .
Run Code Online (Sandbox Code Playgroud)
我需要每个实例(some_thing2
,some_thing3
等)将其hasChainTo
属性指向同一个空白节点列表(因为它只有一个副本).我需要保持空白节点语法的列表,因为链变得非常深,这个语法是写出每个链很流体(SomeClass2
,SomeClass3
,等).
如果我只是从它创建一个基类和subClassOf,该hasChainTo
属性继承但不是它指向的对象.这直观有意义,但我需要其他行为.
如何实现这一目标?