语义Web,数据类型和sparql。 (是任意返回类型)

时间:2013-06-21 13:56:57

标签: sparql semantic-web dbpedia

我发现语义网是动态输入的!例如,我一直在查询生日,直到现在才找到xsd:Integer s。但是,现在我在查询其他人时收到了xsd:date。从静态类型语言中使用时,如何处理此问题?

1 个答案:

答案 0 :(得分:3)

根据DBpedia wiki中的4.3 Infobox Data部分,使用dbpprop命名空间(http://dbpedia.org/property/)中的属性的三元组更脏:

  

因此,只有当您的应用程序需要完全覆盖所有Wikipeda属性并且您准备接受相对嘈杂的数据时,才应使用信息框数据集。

您可以使用dbpedia-owlhttp://dbpedia.org/ontology/)命名空间中的属性获得更加一致的数据:

  

信息框本体中的实例数据比Infobox数据集更清晰,结构更好

例如,如果您使用dbprop:dateOfBirth抓住20个生日,您将获得整数和日期:

SELECT distinct ?date WHERE { 
  ?x dbpprop:dateOfBirth ?date 
}
LIMIT 10

SPARQL results

date
"1908"^^<http://www.w3.org/2001/XMLSchema#int>
1946-03-14
1951-06-15
"1984"^^<http://www.w3.org/2001/XMLSchema#int>
1878-11-09
"24"^^<http://www.w3.org/2001/XMLSchema#int>
"21"^^<http://www.w3.org/2001/XMLSchema#int>
"2"^^<http://www.w3.org/2001/XMLSchema#int>
"14"^^<http://www.w3.org/2001/XMLSchema#int>
1922-02-10

使用dbpedia-owl:birthDate可以提供更加一致的结果:

SELECT distinct ?date WHERE { 
  ?x dbpedia-owl:birthDate ?date 
}
LIMIT 10

SPARQL results

date
0001-01-01
0001-03-12
0005-02-27
0012-08-31
0012-12-07
0015-09-24
0016-09-16
0019-05-26
0019-11-25
0030-11-08

也就是说,数据中仍然存在一些噪声。例如,这是一个查询,告诉我们dbpedia-owl:birthDate的对象具有哪些数据类型,以及每种类型,dbpedia-owl:birthDate具有该类型的对象的次数,以及该类型的示例对象它显示为dbpedia-owl:birthDate的对象。

SELECT ?datetype (COUNT(?date) as ?numberOfType ) (SAMPLE(?date) as ?exampleDate )WHERE { 
  [] dbpedia-owl:birthDate ?date .
  BIND ( datatype( ?date ) as ?datetype )
}
GROUP BY ?datetype
ORDER BY DESC(?numberOfType)

SPARQL results

datetype                                    numberOfType  exampleDate
http://www.w3.org/2001/XMLSchema#date       608771        0001-01-01
http://www.w3.org/2001/XMLSchema#gMonthDay    1185        "--02-29"^^<http://www.w3.org/2001/XMLSchema#gMonthDay>
http://www.w3.org/2001/XMLSchema#string        246        "--01-01"^^<http://www.w3.org/2001/XMLSchema#gMonthDay>

大部分日期都是xsd:date秒。我不确定为什么xsd:gMonthDay会出现xsd:string的示例。