4

我是 SPARQL 查询的新手,我正在使用 twinkle SPARQL 对包含以下内容的 rdf 文档运行查询:

<defaultNamespac:courses rdf:ID="Cources">   
  <defaultNamespac:course rdf:resource="#Course1"/>
  <defaultNamespac:course rdf:resource="#Course10"/>
  <defaultNamespac:course rdf:resource="#Course2"/>
  <defaultNamespac:course rdf:resource="#Course3"/>
  <defaultNamespac:course rdf:resource="#Course4"/>
  <defaultNamespac:course rdf:resource="#Course5"/>
  <defaultNamespac:course rdf:resource="#Course6"/>
  <defaultNamespac:course rdf:resource="#Course7"/>
  <defaultNamespac:course rdf:resource="#Course8"/>
  <defaultNamespac:course rdf:resource="#Course9"/>
</defaultNamespac:courses>

查询如下:

选择?x?课程

WHERE {?x <file:/F:/Stuff/Muaz/GUC/Met.rdf#courses> ?course }

问题是没有返回任何结果(只显示 x 和 course)。怎么了?我越来越紧张,请尽快帮助我。非常感谢!

PS:查询可以返回哪些数据类型?(只有字符串或数字?!)

4

1 回答 1

2

只是快速猜测它是 defaultNamespac 还是 defaultNamespace ?以e结尾。

如果这不是错误,请尝试运行查询:

SELECT * WHERE { ?s ?p ?o }

如果我有以下 RDF 文件,并带有一些 defaultNamepac 定义:

<rdf:RDF
   xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#"
   xmlns:defaultNamespac="http://foo.bar"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <defaultNamespac:courses rdf:about="file:///Users/msalvadores/kk.rdf#Cources">
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course1"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course10"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course2"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course3"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course4"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course5"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course6"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course7"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course8"/>
    <defaultNamespac:course rdf:resource="file:///Users/msalvadores/kk.rdf#Course9"/>
  </defaultNamespac:courses>
</rdf:RDF>

那么上述查询的结果将是,如图所示:

替代文字

在我的情况下,xmlns:defaultNamespac="http://foo.bar"如果我想完全运行您的查询,那么我必须使用命名空间......

SELECT ?x ?course

WHERE {?x <http://foo.bar#courses> ?course }

我的建议是,为避免这些错误,请始终尝试设置命名空间。

于 2011-01-06T23:19:37.243 回答