Grafik-yapılandırılmış veritabanları ve Php

8 Cevap php

Ben php kullanarak bir grafik veritabanı kullanmak istiyorum. Başlamak için nerede bazı kaynaklara işaret edebilir? Orada herhangi bir örnek kod / öğretici var mı? Veya tamamen rastgele / arka durumlarda birbirleri ile veri depolama başka yöntem vardır?

-

Gerekli ilişkilerin çok soyut örnek: John Mary ile ilgilidir, hem Okulu ilgili, John Tall, Mary Kısa olan, John Mary, Green Eyes var istediğim sorgu insanların sahip Kısa insanlara 'ile ilgili olan, Blue Eyes var Green Eyes ve Okulu 'gidin -> cevap John

-

Başka bir örnek:

    TrackA -> ArtistA
           -> ArtistB

           -> AlbumA -----> [ label ]
           -> AlbumB -----> [   A   ]

           -> TrackA:Remix
           -> Genre:House

           -> [ Album ] -----> [ label ]
   TrackB  -> [   C   ]        [   B   ]

Örnek sorgular:

Tür TrackB daha yakın hangisi? Cevap: Evi - bu TrackA ilgilidir ve Tür ile ilgili Albüm C ile ilgili çünkü: Ev

Tüm Tür alın: Etiket A Evi ile ilgili albümler: Sonuç: AlbumA, Albumb - ikisi Tür ilgilidir TrackA çünkü: Evi

-

Bu MySQL mümkün ama bunun yerine ben her ayrıntının kendisi tarafından bir öğe olması ve bunun yerine 'olması için, bir şey için' aidiyet 'gerekir, her öğe için nitelikler / sütun sabit bir dizi ve karmaşık olmayan esnek sorgu gerektirecektir bir şey 'ile ilgili.

8 Cevap

Bazı işler, PHP Neo4j grafik veritabanı kullanılabilir hale this wiki page daha fazla bilgi için bkz: Orada oluyor! Bir grafik olarak etki modeli için nasıl ilgili, user mailing list güzel müthiş olma eğilimindedir.

Güncelleme: Kısa bir getting started blog post PHP neo4j DİNLENME müşteri için şimdi var.

Benim için PHP oldukça farklı bir programlama dilidir "tipik" Prolog sorunu gibi ... biraz geliyor. Ama belki popen ile işe yarayabilir.

Yüklem = "var", atom1 = "Mary", atom2 = "Green Eyes": Ya da "Mary Green Eyes bulunması" truthness saklamak için, sütun [id, yüklem, atom1, atom2] ile bir SQL tablo tanımlayabilirsiniz.

Şimdi katılmak ve seçtiğiniz SQL ile yüklemler ve özelliklerini filtre olabilir.

Bu semantik web bir sorun gibi görünüyor. Yani birlikte PHP ve anlamsal web kullanabilirsiniz nasıl anlamaya var. Belki bu link http://bnode.org/blog/2009/05/25/back-from-new-york-semantic-web-for-php-developers-trip yardımcı olabilir?

Eğer bu şekilde yaklaşmak gerekir gibi bu tür sesler:

1) Kod sizin verilerinizi istediğiniz şekilde sorgulamak sağlayacak bir grafik nesnesi.

2) nesne için bir kalıcılık katmanı yazın

3) veritabanı aramaları kullanmak grafik nesne içinde sorgunun yapmak aramaları optimize uygun olduğunda (örneğin, bellek korumak için gerekiyorsa).

Benim önerim OrientDB veya neo4j gibi Java tabanlı grafik DB almak ve ardından PHP/Java bridge yoluyla kullanmaktır. Yakın gelecekte neo4j (ve bazı nokta OrientDB de de) yerli php desteğini almalısınız ve yerel erişimi olan köprü değiştirebilirsiniz.

de dikkate alarak bu soruyu bir yıl eski, yine de SPARQL veya benzer dilleri destekleyen her RDF veri deposuna ile böyle bir sorgu yapabilirsiniz unutmayın ilginç olabilir.

PHP ile OrientDB kullanımı hakkında bu makalede de bir göz atın: http://www.odino.org/346/orientdb-the-graph-db-for-the-web

Ayrıca php için bir Rexster müşteri bulabilirsiniz: https://github.com/PommeVerte/rexpro-php

Gibi ekstra bilgiler. Rexster diğerleri arasında böyle Neo4j ve OrientDb gibi çeşitli diğer grafik DBS grafikler yükleyebilirsiniz.