易于安装/使用是这里最重要的因素 - 而不是性能.
小是可以的,因为不期望大数据集.
我目前正计划一个包含大数据的大项目.
我已经使用了搜索,所有结果告诉我,如果不使用第三方工具(如BaseKB或Freebase)到RDF,就无法将Freebase导入任何三元组
正如我所看到的,转储已经可以作为RDF使用,那么如果我想将转储导入到我的4store triplestore并通过SPARQL访问数据,那么问题出在哪里?
我承认这基本上是在本地服务器上使用freebase数据的重复问题?但我需要比那里已经给出的更详细的答案
我完全爱上了Freebase.我现在想要的是基本上创建一个非常简单的Freebase克隆,用于存储可能不属于Freebase本身的内容,但可以使用Freebase架构进行描述.基本上我想要的是一种简单而优雅的方式来存储像Freebase本身那样的数据,并且能够在Python(CherryPy)Web应用程序中轻松使用这些数据.
MQL参考指南的第2章指出:
作为Metaweb基础的数据库与您可能熟悉的关系数据库根本不同.关系数据库以表的形式存储数据,但Metaweb数据库将数据存储为节点图和这些节点之间的关系.
我想这意味着我应该使用三重存储或图形数据库,如Neo4j?这里有人有使用Python环境中任何一种的经验吗?
(到目前为止我实际尝试的是创建一个能够轻松存储Freebase主题的关系数据库模式,但是我遇到了在SQLAlchemy中配置映射的问题).
我正在研究的事情
更新[28/12/2011]:
我在Freebase博客上发现了一篇文章,描述了Freebase自己使用的专有元组存储/数据库(图形):http://blog.freebase.com/2008/04/09/a-brief-tour-of-graphd/
我正在尝试从此转储创建LinkedGeoData.org的本地镜像.
这大约是61,000,000三倍.Virtuoso应该能够轻松处理更多,但每次都会在大约40,000,000三倍之后停止加载.我正在使用Amazon EC2的双超大实例,它有30 GB的RAM,还有足够的存储空间.我的配置文件有问题吗?我正在使用ubuntu服务器12.04,我已经尝试通过apt-get
(版本6.1.5)安装Virtuoso 并根据JörnHees的指示从github(版本6.1.6)编译最新的稳定源代码.
我也尝试将dumpfile分成小块并逐个加载它们.在插入大约40,000,000个三元组后,这也会崩溃.
日志文件没有显示任何奇怪的内容; virtuoso-t
只是在没有实际崩溃的情况下停止工作,并top
使用0%的CPU显示进程.在前半个小时左右之后,我已经让这个过程运行了好几天没有任何进展.
这是我的virtuoso.ini
档案:
[Database]
DatabaseFile = /var/lib/virtuoso/db/virtuoso.db
ErrorLogFile = /var/lib/virtuoso/db/virtuoso.log
LockFile = /var/lib/virtuoso/db/virtuoso.lck
TransactionFile = /var/lib/virtuoso/db/virtuoso.trx
xa_persistent_file = /var/lib/virtuoso/db/virtuoso.pxa
ErrorLogLevel = 7
FileExtend = 200
MaxCheckpointRemap = 625000
Striping = 0
TempStorage = TempDatabase
[TempDatabase]
DatabaseFile = /var/lib/virtuoso/db/virtuoso-temp.db
TransactionFile = /var/lib/virtuoso/db/virtuoso-temp.trx
MaxCheckpointRemap = 2000
Striping = 0
;
; Server parameters
;
[Parameters]
ServerPort = 1111
LiteMode = 0
DisableUnixSocket = …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有助于为Django项目提供RDF支持的工具.
到目前为止,我发现了两个:
我正在寻找其他替代方案,你知道吗?
我需要存储RDF三元组,同时跟踪修改.这项服务有什么吗?或者,在使用上下文感知的三元组时,您将如何跟踪修订?
编辑:请注意我不需要变更集.我也需要在过去的任何时候看到三元组.
我正在开发一个Android移动RDF数据库项目.因此,我正在寻找包含在我的Android项目中的开源数据库.但是,我很难找到现有RDF数据库的移动版本.
到目前为止我发现了什么:
不幸的是我还没有找到Sesame,Virtuoso,AllegroGraph等的移动版本.
有谁知道Android的其他一些RDF数据库?
我一直在尝试探索Marklogic 7的RDF三重存储功能和语义搜索功能,然后使用SPARQL进行查询.我能够执行一些基本操作,例如:
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"at"/MarkLogic/semantics.xqy";
sem:rdf-insert(sem:triple(sem:iri("http://example.org/ns/people#m"),
sem:iri("http://example.com/ns/person#firstName"), "Sam"),(),(),"my collection")
Run Code Online (Sandbox Code Playgroud)
创建一个三元组,然后使用以下SPARQL查询它:
PREFIX ab: <http://example.org/ns/people#>
PREFIX ac: <http://example.com/ns/person#>
SELECT ?Name
WHERE
{ ab:m ac:firstName ?Name . }
Run Code Online (Sandbox Code Playgroud)
它会检索Sam作为结果. 编辑:在我的用例中,我有一个带有10亿条记录的分隔文件(结构化数据),我使用MLCP将其记录到ML中,MLCP存储在ML中,例如:
<root>
<ID>1000-000-000--000</ID>
<ACCOUNT_NUM>9999</ACCOUNT_NUM>
<NAME>Vronik</NAME>
<ADD1>D7-701</ADD1>
<ADD2>B-Valentine</ADD2>
<ADD3>Street 4</ADD3>
<ADD4>Fifth Avenue</ADD4>
<CITY>New York</CITY>
<STATE>NY</STATE>
<HOMPHONE>0002600000</HOMPHONE>
<BASEPHONE>12345</BASEPHONE>
<CELLPHONE>54321</CELLPHONE>
<EMAIL_ADDR>abc@gmail.com</EMAIL_ADDR>
<CURRENT_BALANCE>10000</CURRENT_BALANCE>
<OWNERSHIP>JOINT</OWNERSHIP>
</root>
Run Code Online (Sandbox Code Playgroud)
现在,我想在上面的数据集中使用RDF/Semantic功能.但是,我无法理解是否需要将上述doc转换为RDF,如下所示(显示为<NAME>
),假设这是正确的方法:
<sem:triple>
<sem:subject>unique/uri/Person
</sem:subject>
<sem:predicate>unique/uri/Name
</sem:predicate>
<sem:object datatype="http://www.w3.org/2001/XMLSchema#string"
xml:lang="en">Vronik
</sem:object>
</sem:triple> …
Run Code Online (Sandbox Code Playgroud) 我写了以下查询:
SELECT DISTINCT
?predicate
?object
?label
WHERE {
VALUES ?subject { <http://dbpedia.org/resource/Hercules_(1997_film)> }
?subject ?predicate ?object .
?predicate rdfs:label ?label .
FILTER(langMatches(lang(?object), "EN"))
}
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
当我用FILTER
这种方式写行时,我基本上过滤掉了所有非文字(侧面问题:文字是唯一可以有语言标签的类型吗?)
那么,我如何保留所有结果并过滤掉非英语文字呢?