Pergunta

Eu tenho um aplicativo que recebe vários dados que caracterizam processos espaciais e temporais tridimensionais. Em seguida, filtra esses dados e cria ações que são enviadas para processos que executam as ações. Enxague e repita.

Atualmente, tenho uma coleção de filtros personalizados que realizam muitos cálculos espaciais/temporais complicados.

Muitas vezes, ao discutir meu sistema para indivíduos da minha empresa, eles perguntam se estou usando um mecanismo de regras.

Ainda não encontrei um mecanismo de regras capaz de raciocinar bem temporal e espacialmente. (Coisas como: Quando duas entidades 3D estão fechadas? A entidade 3D está sempre contida na região 3d B? Se a entidade C estiver perto da entidade D, mas orientada para trás em relação a C e depois executa a ação D.)

Eu olhei para babados, Cyc, Jess no passado (digamos 3-4 anos atrás). É hora de reexaminar o estado da arte. Alguma sugestão? Algum padrões que você conhece desse tipo de raciocínio? Algum padrões defacto? Algum aplicativo?

Obrigado!

Foi útil?

Solução

Premissa - lembre -se de que um SQL baseado1 O DBMS é um mecanismo de inferência (bastante capaz), como pode ser visto nessas comparações entre SQL e Prolog:

Para abordar especificamente seus aplicativos espaço-temporais, este livro ajudará:

  • Dados temporais e o modelo relacional - Uma investigação detalhada sobre a aplicação de Intervalo e teoria da relação para o problema do gerenciamento de banco de dados temporal.

Isto é, combinar o intervalo e a teoria das relações é possível ao raciocínio sobre problemas espaço-temporais de maneira eficaz (ver 5.2 Aplicações de intervalos).

Obviamente, se o seu DBMS baseado em SQL ainda não estiver equipado com intervalos (e outros) operadores, você precisará estendê-lo adequadamente (através da Store-Procedures e/ou funções definidas pelo usuário-UDFS).

Atualizar: Skimming o papel apontou Nos comentários de Timemirror (Em direção a uma linguagem de consulta espacial em 3D para modelos de informações de construção) Eles fazem essencialmente o que eu tocei acima:

(última página)

Conceitos de implementação

A implementação do sistema de tipos abstratos em uma linguagem de consulta será realizada com base no SQL de linguagem de consulta, que é um padrão amplamente estabelecido no campo dos bancos de dados relacionados a objetos. O SQL International Standard: 1999 estende o modelo relacional para incluir aspectos orientados a objetos, como a possibilidade de definir tipos de dados abstratos complexos com métodos integrados.

Eu não concordo com a terminologia "banco de dados de objetos-relatórios" (por motivo fora do tópico aqui), mas acho que o resto é pertinente.


Atualizar: Uma citação considera 3D e a teoria do intervalo do livro citado acima:

Nota: Todos os intervalos discutidos até agora podem ser considerados unidimensionais. No entanto, podemos querer combinar dois intervalos unidimensionais para formar um intervalo twodimensional. Por exemplo, um gráfico retangular do solo pode ser considerado um intervalo bidimensional, porque é, por definição, um objeto com comprimento e largura, cada um dos quais é basicamente um intervalo unidimensional medido ao longo de algum eixo. E claro, Podemos estender essa ideia a qualquer número de dimensões. Por exemplo, um edifício (bastante simples!) Pode ser considerado um intervalo tridimensional: é um objeto com comprimento, largura e altura, ou, em outras palavras, um cubóide. (Mais realisticamente, um edifício pode ser considerado como um conjunto de vários cubóides que se sobrepõem de várias maneiras.) E assim por diante. A seguir, no entanto, restringiremos nossa atenção a intervalos unidimensionais especificamente, impedindo declarações explícitas em contrário, e omitiremos o qualificador "unidimensional" por simplicidade.

Observação

  1. eu escrevi Baseado em SQL e não relacional Porque existem maneiras de usar esses DBMSs que se desviam completamente da teoria relacional.

Outras dicas

Este é um raciocínio espacial ... alguns modelos, mas o 9DE-IM agora é aceito pelo OGC e implementado no PostGIS e em outras ferramentas de programação.

O PostGIS implementa um mecanismo de raciocínio espacial baseado no modelo 9 de interseção dimensionalmente estendido ... 9DE-im ..

http://postgis.refrações.net/documentation/manual-svn/ch04.html#de-9im Verifique a Seção 4.3.6.1. Teoria...


O mesmo acontece com a suíte de topologia Java (e suíte de topologia líquida para C# etc) ...

http://docs.codehaus.org/display/geotdoc/Point+SetlTheory+And+the+De-9Im+Matrix

Em Partualr, consulte a geometria.

booleano isrelado = geometry.relate (geometry2, "t*t *** t **")

Você pode testar os relacionamentos ou filtrar dados com base neles. Trabalha com pts, linhas, polígonos etc ...


Isso pode ajudar em coisas temporais ..

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.4643&rep=rep1&type=pdf

Confira SpatialRules em http://www.objectfx.com/. É um processador de eventos complexos geoespaciais para 2D e 3D.

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