我想知道如何使用 RDFa。更具体地说,如果语义网络数据由 RDF 中的三元组组成,RDFa 内容的消费者如何使用该数据?是否必须使用GRDDL之类的工具进行转换?还是有其他方法可以从 RDFa 网站获取语义数据?
谢谢,布鲁斯
我想知道如何使用 RDFa。更具体地说,如果语义网络数据由 RDF 中的三元组组成,RDFa 内容的消费者如何使用该数据?是否必须使用GRDDL之类的工具进行转换?还是有其他方法可以从 RDFa 网站获取语义数据?
谢谢,布鲁斯
一种方法是使用 RDFa 解析器从 RDFa 文档中提取三元组,然后在您的应用程序中处理它们。我想这就是谷歌和合作公司在他们的搜索引擎中所做的。
或者,您可以使用其 API 或 SPARQL 1.1 的 LOAD 命令告诉 SPARQL 存储(在内存中或持久性)加载文档,然后使用 SPARQL 查询访问数据。这也将允许您同时查询多个文档。
我可能会建议不要尝试直接处理三元组,除非您的应用程序或数据非常简单。
RDF 只不过是一个通过命名边将节点(通常是资源)连接到其他节点(其他资源或文字)的图,但有一点扭曲。边缘可以通过逻辑推断,这意味着即使您从未逐字提供答案,您也可以获得问题的答案。推理引擎足够聪明,可以从它对系统的了解以及对其描述的逻辑的了解中得出这些答案。示例:如果您指定 A 是 B 的母亲,推理引擎可以推断 B 有父 A。您从未指定边连接B -- hasParent -> A
,但您指定了该边,A -- motherOf -> B
并且您还指定了hasParent
和motherOf
是逆的。
获得数据后,您可以向数据库/推理引擎提问。这个操作基本上是一个子图同态搜索。您的查询是一个图,您的数据库包含一个巨大的图,其中所有资源都由命名边连接。数据库的任务是找到与您的查询匹配(同构)的巨大图的那些部分,还要考虑每个边和节点的风格,而不仅仅是它们的互连性。
它是干什么用的 ?很多东西。你可以用这个数据模型做一些非常强大的事情。一个简单的理解是思考社交网络:人(一种资源,图的一个节点)通过关系(friendOf)连接并被描述(isAged,livesIn)。通过查询,您可以找到所有拥有至少三个女性朋友并居住在巴黎的 23 岁人士。
有很多方法可以访问 RDF 数据。例如,像 dbpedia 这样的网站有一个 sparql 端点,因此您可以使用某种数据库语言直接查询三元组。这很方便。
您有时也可以直接获取 rdf 并使用 Jena (Java) 等框架对其进行解析。