Pergunta

geotagging um monte de < a href = "http://en.wikipedia.org/wiki/Kent%27s_Cavern" rel = "nofollow noreferrer"> sua artigos . (Olhar no canto superior direito da página).

Existe alguma API para consultar todos geotagged páginas dentro de um raio específico de um posição geográfica?

Atualização

Ok, então com base na resposta de perder-teoria, eu tentei isso (em DBpedia consulta explorador ):

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?subject ?label ?lat ?long WHERE {
    ?subject geo:lat ?lat.
    ?subject geo:long ?long.
    ?subject rdfs:label ?label.
    FILTER(xsd:float(?lat) - 57.03185 <= 0.05 && 57.03185 - xsd:float(?lat) <= 0.05
        && xsd:float(?long) - 9.94513 <= 0.05 && 9.94513 - xsd:float(?long) <= 0.05
        && lang(?label) = "en"
    ).
} LIMIT 20

Este é muito próximo do que eu quero, exceto que retorna resultados dentro de um ( locais ) quadrado em torno do ponto e não de um círculo. Também gostaria se os resultados onde ordenados com base na distância entre o ponto. (Se possível).

Update 2

Eu estou tentando determinar a distância euclidiana como uma aproximação da verdadeira distância, mas estou tendo problemas em quadratura com um número em SPARQL. ( Pergunta abriu aqui .) Quando eu chegar em algo útil Vou atualizar a questão, mas, entretanto, eu vou apreciar quaisquer sugestões sobre abordagens alternativas.

Update 3

A atualização final. Eu desisti de usar SPARQL através DBpedia. Eu escrevi um analisador simples que busca o artigo texto despejo de banco de dados noturno Wikipedia e analisa todos os artigos para geocodes. Ele funciona bastante bem e isso me permite armazenar informações sobre artigos georeferenciadas no entanto Desejo.

Esta é provavelmente a solução Vou continuar usando, e se eu chegar ao redor para criar uma interface agradável para que eu poderia considerar permitindo o acesso API pública e / ou a publicação da fonte para o analisador.

Foi útil?

Solução

O servidor OpenLink Virtuoso usado pelo endpoint DBpedia tem várias características da consulta. Eu encontrei a informação sobre http://docs.openlinksw.com/virtuoso/rdfsparqlgeospat.html útil para um problema semelhante.

Eu acabei com uma consulta como esta:

SELECT ?page ?lat ?long (bif:st_distance(?geo, bif:st_point(15.560278, 58.394167)))
WHERE{
    ?m foaf:page ?page.
    ?m geo:geometry ?geo.
    ?m geo:lat ?lat.
    ?m geo:long ?long.
    FILTER (bif:st_intersects (?geo, bif:st_point(15.560278, 58.394167), 30))
}
ORDER BY ASC 4 LIMIT 15

Este exemplo recupera os locais com geotags prazo de 30 km a partir da posição de origem.

Outras dicas

Você deve ser capaz de consulta para latitude / longitude usando SPARQL e DBpedia . Um exemplo (de aqui ):

SELECT distinct ?s ?la ?lo ?name ?country WHERE {
?s dbpedia2:latitude ?la .
?s dbpedia2:longitude ?lo .
?s dbpedia2:officialName ?name .
?s dbpedia2:country ?country .
filter (
  regex(?country, 'England|Scotland|Wales|Ireland')
  and regex(?name, '^[Aa]')
)
}

Você pode executar suas próprias consultas aqui .

Há um par de ferramentas listadas na Ferramentas e aplicativos baseados em coordenadas de Wikipedia . Eu não tenho certeza se é o que você está procurando, mas a Geosearch.py olhares ferramenta muito legal.

Não é uma API, mas você pode também baixar este bom conjunto de todos os artigos da Wikipédia geo-tag e consulta-lo diretamente em um banco de dados local: http://www.google.com/fusiontables/DataSource?dsrcid=423292

O livre GeoNames.org FindNearbyWikipedia serviço pode buscar artigos com geotags para um dar o código postal ou coordenadas (latitude, longitude)

Ele fornece 30.000 créditos limite diário por aplicação (identificado pelo parâmetro 'username'), o limite horário é de 2000 créditos. Um crédito é um pedido hit serviço web para a maioria dos serviços. Uma exceção é lançada quando o limite é excedido.

Eu não sou suficientemente familiarizado com SPARQL, mas se ele pode usar o poder em seu filtro, então é fácil de calcular a distância de um determinado artigo de um determinado ponto usando teorema de Pitágoras (a ^ 2 + b ^ 2 = c ^ 2) e que iria dar-lhe todos os artigos em um raio.

Outra opção seria a de obter um Wikipedia despejo de dados e processá-lo a si mesmo - este é o que eu fiz quando eu precisava fazer alguma análise linguística no artigo da Wikipedia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top