RDF vs LPG
Triplas semânticas vs Labeled Property Graph — quando RDF, quando Neo4j
Dois modelos de grafo, propósitos diferentes. RDF (W3C, triplas, SPARQL) é orientado a interoperabilidade semântica e inferência. LPG (Neo4j, Cypher) é orientado a performance bruta de travessia e propriedades em arestas. Não é "qual é melhor" — é qual encaixa no seu problema.
Em uma tabela
| RDF | LPG (Neo4j) | |
|---|---|---|
| Standard | W3C (RDF, SPARQL, OWL, SHACL) | De facto (Neo4j); GQL/openCypher ainda emergindo |
| Unidade | Tripla (sujeito-predicado-objeto) | Nó + relação rotulada com propriedades |
| Identidade | URI globalmente única | ID interno do banco |
| Propriedade em aresta | Não nativo (reification ou named graph) | Nativo (relação tem propriedades direto) |
| Linguagem de query | SPARQL (pattern matching) | Cypher (caminho declarativo) |
| Inferência | OWL reasoner nativo | Não — código de aplicação |
| Validação de schema | SHACL | Cypher constraints + opcional schema |
| Federação | SPARQL SERVICE (cross-endpoint) | Limitado / via app |
| Interop público | Wikidata, DBpedia, schema.org | Quase nenhum dataset público |
| Performance travessia | Bom; varia por engine | Excelente (index-free adjacency) |
| Curva de aprendizado | Alta (URI, OWA, SPARQL, vocabulários) | Média (Cypher é intuitivo) |
| Ecosistema | Jena, RDFox, Stardog, GraphDB, Virtuoso | Neo4j (dominante), Memgraph, TigerGraph |
A grande diferença filosófica
RDF é dados-como-fatos-com-significado. Toda URI tem semântica resolvível; vocabulários públicos garantem que sua tripla
foaf:knows significa a mesma coisa que a tripla de qualquer outro. LPG é dados-como-grafo-otimizado. Você modela e otimiza para travessia. Significado é problema da sua aplicação. Propriedade na aresta — o ponto sensível
Caso clássico: "Card A foi reprintada em Card B com erro de tradução em 1998". A relação tem propriedades (ano, motivo).
- LPG nativo:
(A)-[r:REPRINTED_AS {year: 1998, error: 'translation'}]->(B) - RDF (reification): precisa criar um recurso de Statement que descreva a tripla — verboso
- RDF (RDF-star/RDF*): nova extensão que permite tripla sobre tripla nativamente
- RDF (named graphs): separar o "contexto" da relação em outro grafo
Por que escolheria RDF em vez de Neo4j para um knowledge graph de produto?
Quatro razões típicas. (1) Integração — precisa unir dados de múltiplas fontes que usam vocabulários públicos (schema.org, Wikidata, GS1). (2) Inferência — quer que "Card é Permanent é Card" seja deduzido automaticamente, não codificado. (3) Padronização — empresa tem política de Linked Data, ou cliente expõe SPARQL endpoint. (4) Validação semântica — SHACL shapes versionadas como contrato de domínio. Se nenhuma dessas se aplica, Neo4j provavelmente é mais simples e mais rápido — não force RDF por estética.