我想知道Ruby目前对语义Web技术的支持.有没有好的RDF选项?最近的调查似乎是大约2007年(http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/).Redland的RDF包装器是获得RDF支持的最佳方式 - 该老化文章中提到的所有其他项目似乎都不受支持或删除.如果追求与语义网相关的项目,Ruby可能是一个糟糕的选择吗?
我正在尝试查询远程端点并获取owl:sameAs映射,我已经尝试了RDFLib和Redland,但都没有为我工作,可能我没有正确处理名称空间.
这是我在RDFLib中的尝试:
import rdflib
rdflib.plugin.register('sparql', rdflib.query.Processor, 'rdfextras.sparql.processor', 'Processor')
rdflib.plugin.register('sparql', rdflib.query.Result, 'rdfextras.sparql.query', 'SPARQLQueryResult')
g = rdflib.Graph()
query = """
SELECT *
FROM <http://api.talis.com/stores/bbc-backstage/services/sparql>
WHERE {
?s a http://purl.org/ontology/mo/MusicArtist;
http://www.w3.org/2002/07/owl#sameAs ?o .
}Limit 50
"""
for row in g.query(query):
print row
Run Code Online (Sandbox Code Playgroud)
这里是雷德兰:
import RDF
model = RDF.Model()
query = """
SELECT *
FROM <http://api.talis.com/stores/bbc-backstage/services/sparql>
WHERE {
?s a http://purl.org/ontology/mo/MusicArtist;
http://www.w3.org/2002/07/owl#sameAs ?o .
}Limit 50
"""
for statement in RDF.Query(query ,query_language="sparql").execute(model):
print statement
Run Code Online (Sandbox Code Playgroud)
你能不能暗示其中任何一个出了什么问题?我有另一个困难:是否有可能获得对象的数据集名称?例如:如果有:
?s = http://www.bbc.co.uk/music/artists/eb5c8564-927d-414d-b152-c7b48a2c9d8b#artist
predicate = http://www.w3.org/2002/07/owl#sameAs
?0 = http://dbpedia.org/resource/The_Boy_Least_Likely_To …
Run Code Online (Sandbox Code Playgroud) 我目前正在浏览Redland的Python绑定,并且还没有找到一种通过它在存储引擎上进行事务处理的简洁方法.我在低级Redland模块中发现了一些模型事务:
import RDF, Redland
storage = RDF.Storage(...)
model = RDF.Model(storage)
Redland.librdf_model_transaction_start(model._model)
try:
# Do something
Redland.librdf_model_transaction_commit(model._model)
model.sync()
except:
Redland.librdf_model_transaction_rollback(model._model)
Run Code Online (Sandbox Code Playgroud)
这些还可以转化为存储层吗?
谢谢 :-)
给定一个RDF文件,我想编写一个python脚本来验证文件并注释格式是否错误.我是用RAptor做的吗?还是Sax还是有其他图书馆吗?w3没有运气.
我目前正在尝试在Windows下编译redland(librdf http://librdf.org/).根据他们的网站,它应该在Windows下构建.因为我不想花时间修复.sln,我想在cygwin中编译librdf(以及必要的项目),然后在visual studio中使用该库.
所以我的问题是:是否可以在windows应用程序中使用cygwin中的库编译?如果是这样怎么样?
由于我是Windows开发人员,我不知道从创建的.a文件到.dll是否有任何区别.我已经阅读了这个主题,有必要在项目中包含cygwin1.dll,但这不会有问题.
或者有没有人更好地了解如何将redland编译为windows dll?我想过使用mingw,但直到现在我还没有设法编译它.
任何帮助将不胜感激.
谢谢
更新:
感谢Yaakov(以及他非常酷的cygwin端口)的帮助,我同时设法编译raptor(这是librdf的先决条件).我所要做的就是为configure配置另一个参数: - with-xml2-config =/usr/x86_64-w64-mingw32/sys-root/mingw/bin/xml2-config
现在我正在尝试编译rasqal,这是另一个请求,也依赖于raptor2.为了使它工作,我必须为pkg-config导出PKG_CONFIG_PATH ="/ usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig /"以找到正确的raptor安装.
所以配置为rasqal工作,但当我尝试使它,我得到以下错误:
Making all in src
make[1]: Entering directory `/home/Stefan/workspace/rasqal/src'
make all-am
make[2]: Entering directory `/home/Stefan/workspace/rasqal/src'
/bin/sh ../libtool --tag=CC --mode=compile x86_64-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -DRASQAL_INTERNAL=1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/raptor2 -g -O2 -DMTWIST_CONFIG -I../libmtwist -g -O2 -MT rasqal_algebra.lo -MD -MP -MF .deps/rasqal_algebra.Tpo -c -o rasqal_algebra.lo rasqal_algebra.c
libtool: compile: x86_64-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -DRASQAL_INTERNAL=1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/raptor2 -g -O2 -DMTWIST_CONFIG -I../libmtwist -g -O2 -MT rasqal_algebra.lo -MD -MP -MF .deps/rasqal_algebra.Tpo -c rasqal_algebra.c …
Run Code Online (Sandbox Code Playgroud) 有人请指出使用Python来存储使用Redland/RDF的RDF数据,然后再检索数据的示例.
我看到那里有很多Redland文档,我确信它非常好,但我对RDF很新,并且对C没有很强的把握,所以我无法完全理解它.
谢谢.
如何将数据传输到 rapper(Redland 的命令行 RDF 解析器)?以下不起作用:
curl "http://download.lodlaundromat.org/85d5a476b56fde200e770cefa0e5033c" | gunzip | rapper
Run Code Online (Sandbox Code Playgroud) redland ×7
rdf ×6
python ×4
cygwin ×1
pipe ×1
raptor2 ×1
rdflib ×1
rdfstore ×1
ruby ×1
sax ×1
sparql ×1
transactions ×1
validation ×1
visual-c++ ×1