【发布时间】:2016-11-06 18:00:56
【问题描述】:
我是语义网的新人。我想使用 SPARQL 查询从 DBPedia 获取 Microsoft 的所有对象/值,并将结果保存为 RDF 格式。我在http://dbpedia.org/sparql 上进行了查询,该查询运行良好并返回有关Microsoft 的所有对/值。代码如下:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
select * where
{{ <http://dbpedia.org/resource/Microsoft> ?property ?value }
UNION
{?property ?value <http://dbpedia.org/resource/Microsoft>}}
我想要的是为结果创建 RDF 格式。我阅读了https://www.w3.org/TR/rdf-sparql-query/#construct 上的教程,并理解它可以通过使用 CONSTRUCT 查询来完成。我将 SELECT 更改为 CONSTRUCT,但这不起作用。如果可能的话,你能告诉我我的错误是什么,我如何将 CONSTRUCT 应用于我的查询以从查询中获取 RDF 模型?提前致谢!
【问题讨论】:
-
没有看到 CONSTRUCT 查询,我们怎么能说出问题所在?
-
@AKSW 这是我的查询:CONSTRUCT { ?property ?value } where {{ dbpedia.org/resource/Microsoft> ?property ?value } UNION {?property ?value dbpedia.org/resource/Microsoft>}}跨度>
-
看来您并没有真正了解 SPARQL 和 RDF。在第一部分中,您定义了将包含在结果中的三元组,因此在您的情况下,显然缺少主题 (
<dbpedia.org/resource/Microsoft>)。这给我带来了第二个问题,您必须使用属性 URI,否则它们是相对的。 IE。在示例中缺少协议,即它应该是<http://dbpedia.org/resource/Microsoft>。此外,语法错误,因为您有两个不能存在的分号。 -
最后但同样重要的是,在 UNION 的第二部分中,您混淆了主语和谓语。
-
总而言之,看起来您复制并粘贴了一些其他查询的部分内容,但不了解它的作用。我真的建议一些有助于理解的 SPARQL 教程,
标签: sparql rdf semantic-web dbpedia