2010-05-23 52 views
3

我正在做(想做)使用Linked Open Datasets进行的一些实验,特别是那些由政府推出的实验。为RDBMS(MySQL数据库)创建SPARQL端点的最佳方法

我有一个RDBMS(更具体的MySQL)。我设计了语义网页的想法,即我有一个信息存储为定义对象的对象,谓词和类。反过来,所有对象通过形式为subject - > predicate - > object(其中主体来自对象表)的语句彼此相关。

我希望能够从我的应用程序中查询其他RDF三重商店,并让其他三重商店查询我的数据。是否有可能“设置某些东西”,这样才有可能?

我曾看过耶拿。使用Jena似乎意味着我必须将它作为存储应用程序而不是MySQL--唯一的问题是我包含了一个名为类别的新概念(我不认为它是语义Web语言的一部分)。我将使用类别来帮助显示信息(它们没有任何其他含义),但使用Jena似乎意味着我无法在类别下组织谓词以便更方便查看。

我正在使用Java,所以首选JAVA API。

这也有可能是我误解了耶拿的目的,也许这可以使用,但我不知道如何。

我相信从现在开始的四天之后,这个问题看起来会很愚蠢,但目前我对如何继续有些困惑。

回答

4

我不确定你的意思是“一个新的概念称为类别”,也许你可以举个例子吗?

如果您的意思是您想要添加额外的元数据,或许是作为在用户界面中组织信息的一种方式,则不需要扩展语义Web语言或存储系统 - 它们可以已经做到了您想要的。

假设你从UK Government schools dataset(使用龟编码为简洁起见)有一所学校的数据:

@prefix sch-ont: <http://education.data.gov.uk/def/school/>. 
<http://education.data.gov.uk/id/school/135412> 
a sch-ont:School; 
sch-ont:establishmentStatus 
    <http://education.data.gov.uk/def/school/EstablishmentStatus_Open>; 
sch-ont:MSOA <http://statistics.data.gov.uk/id/msoa/E02000001>; 
sch-ont:establishmentName "Guildhall School of Music and Drama"; 
... 

您可以直接从SPARQL end-point查询的数据,也可以在本地下载的数据并将其存储你自己的三重商店。无论哪种方式,您都可以随意添加对用户有用的额外信息。例如:

@prefix ankurs-app: <http://ankur.org/example/app/vocab/display#>. 
<http://education.data.gov.uk/id/school/135412> 
     ankurs-app:category ankurs-app:wkdCool. 

您可以在同一个图形保存这个新的三层作为下载的数据,也可以将其存储在一个单独的命名图来表明它是有不同的起源而不是源数据信息。无论哪种方式,通过Jena以编程方式或通过SPARQL查询进行查询都很简单。

高效地为做一个布局查询无模式的三重中心数据是一个研究得很深刻,难度很大的问题。包括Jena在内的大多数RDF平台都有针对自己的数据库方案查询和更新三元组的优化代码。你必须有很好的理由开始你自己的关系表布局:)

如果你真的需要采取现有的关系表方案并将其映射到耶拿RDF模型,请看D2RQ

3

为什么你不使用三重商店来存储所有的数据?如果您使用具有SPARQL endpoint功能的三重商店,那么您将拥有SPARQL可访问的Web API。同样,Web上的许多其他数据集都作为SPARQL端点公开,并可通过HTTP访问。

在db和其他方面(Jena + SDB,Mulgara,Virtuoso,Oracle等),有很多三重存储可用于持久存储。你当然可以通过他们的解析器扩展Mulgara来支持对你的定制数据库的查询,但我认为这可能是很多工作,因为没有太多的实际价值。

我确定您可以使用现有的概念来处理您在RDF中的类别概念,或者可能通过对Jena进行分层。

+0

是的,我倾向于耶拿和SDB--不知道类别会发生什么。 – Ankur 2010-05-24 02:06:09

相关问题