我想解析一个n-triple形式的RDF文件.
我可以编写自己的解析器,但我宁愿使用一个库,Jena似乎为此目的而无法复杂(或者至少我看不到他们的文档解释如何以合理的方式读取n-triples).
你可以请我指出任何有用的图书馆,或者如果你了解芝麻或耶拿,你可能会知道如何解决这个问题.
我正在尝试从此转储创建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) 我以N-Quads,.nq文件的形式从Nature下载了一堆数据.这些包含RDF图,对吧?如何访问这些数据,以及如何将RDF图转换为更有用的格式(最好是像Boost或igraph for R/C++/Python)?
NetworkX 库可以读取 Ntriple 格式的 RDF 数据并构建一个带有属性或节点特征的 Graph 对象。\n我尝试使用下面的代码使用 rdflib 将 RDF 数据(.nt 文件)转换为 Graph,
\n\nfrom rdflib.extras.external_graph_libs import *\nfrom rdflib import Graph, URIRef, Literal\nimport networkx as nx\n\ngraph = Graph()\ngraph.parse(\xe2\x80\x9cAirports-with-lables.nt\xe2\x80\x9d, format=\xe2\x80\x9cnt\xe2\x80\x9d)\nnx_graph = rdflib_to_networkx_multidigraph(graph)\nnx.write_graphml(nx_graph,\xe2\x80\x9cexample_airport.graphml\xe2\x80\x9d)\n
Run Code Online (Sandbox Code Playgroud)\n\n然而,生成的 grahml 文件没有\xe2\x80\x99t 属性,因此我无法继续使用 StellarGraph Hinsage 算法(https://github.com/stellargraph/stellargraph/tree/develop/demos/node-classification /hinsage),它期望节点特征作为参数之一。
\n\n任何人都可以帮忙解决这个问题吗?
\n我正在尝试从低层超级输出区域(LSOA)和英国邮政编码数据集中获取一些信息.
我需要在数据转储中使用邮政编码和lsoa信息以便excel使用.
"低层超级输出区域"类型的表示法和标签. http://opendatacommunities.org/doc/geography/lsoa/E01009437
例如'lsoa'每种类型的'邮政编码单位' http://opendatacommunities.org/resource?uri=http%3A%2F%2Fdata.ordnancesurvey.co.uk%2Fid%2Fpostcodeunit%2FB721NB
我不知道如何在网站上使用SPARQL引擎来获取此信息,或者如何从我下载的N-Triples文件中提取信息...
N-Triples是RDF图的基于行的序列化格式.每行代表RDF Triple的主题,谓词和对象,由空格分隔,并以点结束,如:
<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> .
Run Code Online (Sandbox Code Playgroud)
更多细节可以在这里找到:http://www.w3.org/TR/n-triples/
但是为什么有必要定义这样的格式,如果可以简单地使用CSV来序列化RDF Triples
http://one.example/subject1, http://one.example/predicate1, http://one.example/object1
Run Code Online (Sandbox Code Playgroud)
我甚至可以使用CSV轻松扩展以支持N-Quads,N-Quints ...... 对于序列化RDF三元组,N-Triples比CSV有什么优势?
我对RDF和Jena很陌生.我想将.nt (N- TRIPLE)
文件加载到模型中.我试过read(inputStream, "N-TRIPLE")
但没有帮助.
它抛出
org.apache.jena.riot.RiotException: Element or attribute do not match QName production: QName::=(NCName':')?NCName.
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我有什么不对吗?
这是N-TRiple
我试图加载的文件的链接:http://dbpedia.org/data/Berlin.ntriples
这个小脚本读取文件,尝试将每一行与正则表达式匹配,并将匹配的行追加到另一个文件:
regex = re.compile(r"<http://dbtropes.org/resource/Film/.*?> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbtropes.org/resource/Main/.*?> \.")
with open("dbtropes-v2.nt", "a") as output, open("dbtropes.nt", "rb") as input:
for line in input.readlines():
if re.findall(regex,line):
output.write(line)
input.close()
output.close()
Run Code Online (Sandbox Code Playgroud)
但是,剧本在大约5分钟后突然停止.终端显示"Process stopped",输出文件保持空白.
输入文件可以在这里下载:http: //dbtropes.org/static/dbtropes.zip这是4.3Go n-triples文件.
我的代码有问题吗?还有别的吗?任何提示都将在这一个赞赏!