【发布时间】:2013-09-02 19:24:41
【问题描述】:
我想从 DBPedia 的转储文件中提取所有语句。
是否可以编写一个 sparql 查询来提取包含日期值(如 releaseDate、deathDate、birthDate...)的谓词列表?
【问题讨论】:
-
是的,这是可能的。
-
@JeenBroekstra 谢谢,你能写下查询吗? :)
我想从 DBPedia 的转储文件中提取所有语句。
是否可以编写一个 sparql 查询来提取包含日期值(如 releaseDate、deathDate、birthDate...)的谓词列表?
【问题讨论】:
您可以编写一个 SPARQL 查询(您使用 SPARQL 进行了标记,所以大概这就是您想要查询这些东西的方式)来查找这些属性。您需要做的就是查询 owl:DatatypeProperties 的内容(因为日期应该是文字),然后根据它们的字符串表示进行过滤。例如:
select ?p where {
?p a owl:DatatypeProperty
filter( contains( str(?p), "Date" ) || contains( str(?p), "date" ))
}
limit 100
现在,这将返回字符串形式包含字符串“日期”或“日期”的任何属性。你会发现其中大部分都是你正在寻找的东西。但是,更好的方法可能是搜索以 xsd:date 为范围的事物,使用如下查询:
select ?p where {
?p a owl:DatatypeProperty ;
rdfs:range xsd:date .
}
limit 100
这样做的好处是您将获得值应该是日期的属性,即使它们的名称不包含日期。例如,你会得到:
【讨论】:
rdfs:label ?label ;(例如,在 a owl:DatatypeProperty ; 和 rdfs:range xsd:date . 之间)。标签对于回答所提出的问题并不是必不可少的,因此我宁愿将答案中的代码保持最小和直接。