Neo4j是一个非常快速且可扩展的图形数据库,似乎它可以用于商业项目,它也是免费的!
与此同时,没有RDF三重存储可以很好地处理大数据或提供高速访问.而且,免费的RDF三重商店表现更差.
那么RDF和RDF三重存储对Neo4j的优势是什么?
我使用Jena和TDB存储RDF,我想对它做一些推断.但是RDF数据很大,而Jena的owl推理器必须将所有数据加载到内存中.所以我想找一个可以推理无需将所有数据加载到内存中的推理器,有没有?
我找到了一个名为vim-autoclose的 Vim 自动配对插件。就像其他 IDE 一样,它运行良好。例如,当您键入时,{它会给您{|}(“|”代表光标)。然后,如果您按“Enter”,则{|}变为:
{
|
}
Run Code Online (Sandbox Code Playgroud)
这是我需要的,但不幸的是它禁用了我的中文输入法应用程序,所以我不得不放弃它。
我尝试过其他自动关闭插件,但没有一个可以以这种方式自动关闭。我找到了一种使自动关闭工作的方法,如上述方式。
:autocmd FileType c,java,javascript ino <buffer> { <C-G>u{<CR>}<Esc>O<C-T>
Run Code Online (Sandbox Code Playgroud)
但是它的 shiftwidth 有问题。例如,如果 I:set shiftwidth=4之间的新行将{}缩进 8 个空格。新行中的缩进使 shiftwidth 加倍。
我的问题是如何将新行的缩进设置为与 shiftwidth 相同的空格缩进?
我遇到了与Rust的所有权规则和特征对象垂头丧气的冲突.这是一个示例:
use std::any::Any;
trait Node{
fn gen(&self) -> Box<Node>;
}
struct TextNode;
impl Node for TextNode{
fn gen(&self) -> Box<Node>{
Box::new(TextNode)
}
}
fn main(){
let mut v: Vec<TextNode> = Vec::new();
let node = TextNode.gen();
let foo = &node as &Any;
match foo.downcast_ref::<TextNode>(){
Some(n) => {
v.push(*n);
},
None => ()
};
}
Run Code Online (Sandbox Code Playgroud)
该TextNode::gen方法必须返回Box<Node>而不是Box<TextNode>,所以我必须将它转发给Box<TextNode>.
Any::downcast_ref的回报值是Option<&T>,所以我无法取得低估结果的所有权并推动它v.
====编辑=====
由于我不擅长英语,我的问题很模糊.
我真正需要的是一个载体,Vec<Box<Node>>或者Vec<Box<Any>>,它可以包含TextNode …