帮助:SPARQLStore/开发说明(存档)

来自semantic-mediawiki.org
跳转到:航行搜索


此页面包含过时信息,因此已作废!
此文档页面适用于从{{minversion}}}到最新版本的所有SMW版本。
其他语言:英语,{{lang}}}


自1.6.0版以来,SMW支持直接SPARQL数据库集成。请参见使用SPARQL和RDF存储了解详细信息。下面的文章仍然包含一些未实现的想法,这些想法可能会受到未来发展的影响。

本页总结了关于将更好的RDF、SPARQL和SPARUL支持纳入SMW核心的项目的讨论,这些讨论从SMWCon 2010年秋季。这项工作的核心目标是巩固各种现有SMW扩展的以下功能:

  • 将SMW数据与各种RDF存储同步,这样可以比MySQL更高效/方便地管理语义数据,
  • 使用类似SPARQL的#ask on pages查询SMW wiki,
  • redirect#ask查询基于RDF存储进行评估,而不是使用MySQL进行查询,
  • 通过SPARUL web服务更新SMW(这仍然是一个扩展)。

关于此事的持续讨论将通过semediawiki级邮件列表,使用标记[RDF](RDF)标记相关消息。

参与者[编辑]

各方对此话题表示了兴趣(请在此处添加您的姓名/所属单位/项目):

语义MediaWiki RDF存储连接器的比较[编辑]

已经有一些扩展提供了将SMW连接到RDF存储的可能性。这些连接器的功能和可扩展性不同。他们的创造者的目标和哲学也有所不同。

扩展 体系结构 基础存储 开放源代码 特征
在wiki页面中嵌入查询结果 多种查询输出格式 查询外部终结点 通过端点公开wiki数据 支持多端点实现 导入三元组(更新wiki文本中的事实)
[http://wiki.ontoprise.com/smwforum/index.php/Triple_store_connectorSMW+三存储连接器] Java语言 耶拿(免费),OntoBroker上(商业) 是的 是的 是的 是的
Sparql扩展 Java/Web服务 耶拿 是的 是的 是的 是的 是的 是的
第三次世界大战 菲律宾比索 ARC2公司(菲律宾比索) 是的 是的 是的
LinkedWiki(链接Wiki) 菲律宾比索 4个存储+arc2与黑客sparql 1.1 是的 是的 是的 是的 是的 是的
  • 注意,尽管它不是SPARQL连接器SPARQL查询扩展还定义了一个sparql解析器函数来显示页面内查询的嵌入结果。

要求[编辑]

  • 使用RDF存储回答SMW查询(包括现有的#ask)
  • 回答SPARQL查询(通过简单的web服务)
  • 抽象层实现SPARQL和SPARQL/Update(SPARUL)以连接到标准(W3C)三重存储。
  • 将SPARQL查询结果嵌入到wiki页面中,格式类似#ask,现在可以格式化
  • 允许使用任何SMW查询结果格式来显示查询结果
  • 支持各种RDF存储:

实现[编辑]

该任务可以分解为多个子项目,其中一些可以独立实现。

Wiki到RDF的映射[编辑]

SMW核心已经有一个从wiki数据到RDF的映射,这通常由RDF存储连接器使用。为了实现对这些存储中的数据的所有相关查询,可能需要扩展或修改此映射。

例如,可以通过不同的方式将wiki重定向正确解释为平等的同义词。

将SPARQL结果映射到SMW查询结果[编辑]

所有RDF存储连接器都必须将SPARQL查询结果映射到SMW数据。理想情况下,SPARQL结果应该表示为SMWQueryResult对象,这些对象可以通过现有的结果格式显示,而无需更改。这里有一些挑战:

  • SMW查询始终只返回页面列表,而SPARQL查询返回的表可能在任何列中包含也可能不包含“页面”。
(在这两种情况下,都可以应用打印输出来获取更多数据,以显示每行中的“主页面”;这不是作为查询的一部分,而是在稍后的显示过程中;结果格式甚至可以执行进一步的请求来获取更多数据。)
  • SPARQL查询结果包含RDF术语(RDF(S)文字、空白节点、URI),但要在SMW中显示,这些必须转换回SMWDataValue对象。不幸的是,SMW类型和RDF/OWL中使用的类型之间没有一对一的映射。

修改SMW存储API和实现以使用RDF存储[编辑]

需要使用接受SPARQL查询并返回与当前查询函数类似的SMW查询结果对象的函数来扩展SMW存储接口。SPARQL查询本质上仍然是字符串,因为我们不希望在SMW核心中使用PHP-side SPARQL-解析器。一些小扩展(例如添加标准名称空间声明)可能由处理SPARQL的实际实现完成。函数可能返回如果选定的存储解释根本不支持SPARQL。

核心中需要以下新类:

  • 基于RDF存储的SMW存储的基类(应使用简单的SMW Light存储并提供#要求SPARQL翻译对于内联查询、默认RDF翻译和默认SPARQL-result-to-wiki映射)
  • 通用SPARQL/SPARUL SMW存储实现,可以连接到支持这些标准的不同RDF存储(SPARUL目前不是标准)。

其他存储可能由扩展或核心提供:

  • 直接绑定到ARC2(通过PHP)
  • 直接绑定到其他存储(出于效率考虑,使用专有API)

请注意,像MySQL这样的关系数据库可能仍然用于存储该数据的第二个副本,但由于不需要提供高效的SQL查询,因此可以大大简化数据库布局(正如在SMW Light中所做的那样)。

#sparql解析器函数[编辑]

需要定义用于调用SPARQL查询的解析器函数的用户界面,很可能简单地称为#SPARQL。一般来说,它应该与#ask非常相似,支持同名且含义相同的参数。但是,当前的一些实现可能具有进一步的功能,这些功能可能受支持,也可能不受支持。

wiki的SPARQL服务[编辑]

将SPARQL特性提供给SMW提供的web服务并不难。

时间表[编辑]

大部分功能计划在SMW 1.6.0中发布;尽管1.6.0版本还没有发布日期。

--马库斯·克罗奇2011年8月2日20:10(CEST)