使用Scrapy创建三重链接

时间:2015-09-25 14:42:41

标签: web scrapy rdf sparql semantic-web

我正在使用Scrapy抓取网站并创建一组链接。我希望能够使用此数据集创建RDF文档;

我的三元组将采用以下形式,

<ParentURL> - <HTML Text associated with Link> - <LinkURL>

有关如何进行的任何指示?感谢帮助。

2 个答案:

答案 0 :(得分:1)

  

<ParentURL> - <HTML Text associated with Link> - <LinkURL>

这将是一个困难的表示,因为RDF三元组中的谓词只能是URI;它们不能是文字或空白节点。在我看来,你有两个简单的选择。

首先,您可以将三元组用作不透明的数据结构,并采用主题=源URL,谓词=目标URL和对象=链接文本的约定。那不完全&#34; RDF-ish&#34;,但我认为它会对你有用。这样做的好处是,您可以使用非常简单的RDF序列化,如N-Triples,并轻松生成 very 。 N-Triples语法是每行一个三元组,URI包含在尖括号中,行以#39;终止。&#39;。因此,如果您使用此表示形式,则只需生成纯文本,如:

<http://example.org/page1> <http://example.org/page2> "See page 2 for details." .
<http://example.org/page2> <http://example.org/page3> "See page 3 for even more details." .

这是一份完全合法的N-Triples文件。它并没有比这更容易。

第二种选择是使用更多结构。你想写一些像(在Turtle中)的东西:

@prefix : <http://example.org/your-prefix/>

<http://example.org/page1> :linksTo [ :hasTargetURL <http://example.org/page2> ; :hasLinkText "see page 2" ] .
<http://example.org/page2> :linksTo [ :hasTargetURL <http://example.org/page3> ; :hasLinkText "see page 3" ] .

每个链接使用三个三元组而不是一个。也就是说,用纯文本生成它仍然很容易。它可能只是你想要最小化空间(使用第一个选项)还是使图形在语义上更合理(第二个选项)。一些三重存储将优化对主题和对象的查询而不是谓词,这也有利于第二种选择。

答案 1 :(得分:-1)

由于您的数据非常简单,我会编写一个脚本来将Scrapy生成的json或csv输出转换为RDF。

或者你可以写一个项目导出器:

http://doc.scrapy.org/en/1.0/topics/exporters.html