Thanks very much, David, Timothy and Karsten,

I know some RDF store like Jena or Stardog, but the reason I want to take a
try of Clojure logic programming is the simplicity:

* setup for core.logic is very easy by lein
* no server needed
* and even from the concept level, Semantic Web is based on Description
logic <http://en.wikipedia.org/wiki/Description_logic> which is purely
logic things.

Maybe the simplicity is very nice for some special use cases.
But I don't know whether the idea is practical if the size of the triple
set is very large.

Right now I am downloading the wikidata database which contains millions of
entities and more triples.
I will try different approach, and benchmark them.

I am new to this area, and trying to learn more! Thanks again.

Regards,
Mingli




On Wed, Aug 7, 2013 at 7:53 PM, Karsten Schmidt <toxmeis...@gmail.com>wrote:

> Hi Mingli,
>
> FYI for the past 3 months I've been working almost fulltime on a
> lightweight, modular RDF Clojure toolkit, which I plan to opensource in the
> near future, once the core API has more solidified. The kit so far features:
>
> * core RDF datatype protocols (URIs, blank nodes, literals, containers &
> XSD type handling via multimethods)
> * simple & named graphs, datasets of multiple graphs
> * protocol based triple store implementations: in-memory (Clojure data
> structures), Redis, Cassandra (WIP)
> * SPARQL style query & update engine:
>   ** queries currently expressed as Clojure expressions
>   ** SPARQL syntax parser (WIP)
>   ** customizable query optimizations
>   ** fixed-length property paths
>   ** basic federation queries
>   ** optional queries
>   ** filter expressions, binding injection, grouping, sorting
> * graph -> tree mapper to turn a set of triples into nested object maps
> * rule based inferencing
>   ** supplied rule set of common OWL/RDFS semantics
> * streaming Turtle & JSON-LD IO, SPARQL result export as CSV, XML & JSON
> * customizable CSV -> RDF conversion
>
> Current focus of development:
> * SPARQL HTTP endpoint & protocol implementation
> * Streamed reasoning/inferencing w/ SPARQL-T
> * Extend support of OWL semantics in query engine
> * SPIN support, allowing queries, constraints & inference rules to be
> defined in RDF
> * async distributed query processor
> * Library of AngularJS visualization directives/components of SPARQL
> results (written in CLJS)
>
> In terms of performance, I can't unfortunately share yet any real
> benchmark results since I've only recently started looking into that for
> some core components, but IMHO things are looking promising (and obviously
> still have lengths to go). E.g. Using the in-memory store, the standard
> LUBM dataset with 1 uni & 105k triples loads in avg. 4.8 secs on a 2010
> MBP. With the Redis store (using the fabulous Carmine lib), the same loads
> in under 11 secs, but I know this will be a lot faster once I've switched
> to batching. So far the query engine has only been tested with smaller
> datasets (around 20k triples) and medium complex queries w/ around a dozen
> of graph patterns (incl. paths & optional queries) and hundred of results
> complete in < 100 ms.
>
> I will announce the release on this list once I'm comfortable with the
> basic setup & have spent some quality time on documentation...
> On 5 Aug 2013 18:13, "Timothy Baldridge" <tbaldri...@gmail.com> wrote:
>
>> This looks a re-implementation of many of the goals of Datomic. Perhaps
>> you can use Datomic as a datastore, and then use Datomic's datalog, or a
>> custom query engine (such as core.logic
>> https://github.com/clojure/core.logic/blob/master/src/main/clojure/clojure/core/logic/datomic.clj)
>> to do your queries?
>>
>> Timothy
>>
>>
>> On Mon, Aug 5, 2013 at 10:52 AM, David Nolen <dnolen.li...@gmail.com>wrote:
>>
>>> Very interesting. The rel feature is really still a bit of an
>>> experimental thing and we'd like to replace it eventually with something
>>> less problematic like pldb http://github.com/threatgrid/pldb.
>>>
>>> Still, core.logic isn't really a database and your needs may be better
>>> served by something with different goals.
>>>
>>> David
>>>
>>>
>>> On Mon, Aug 5, 2013 at 12:41 PM, Mingli Yuan <mingli.y...@gmail.com>wrote:
>>>
>>>> Hi, folks,
>>>>
>>>> After one night quick work, I had gave a proof-of-concept to
>>>> demonstrate the feasibility that we can combine Wikidata and Clojure logic
>>>> programming together.
>>>>
>>>> The source code is at here:
>>>> https://github.com/mountain/knowledge
>>>>
>>>> An example of an entity:
>>>>
>>>> https://github.com/mountain/knowledge/blob/master/src/entities/albert_einstein.clj
>>>>
>>>> Example of types:
>>>> https://github.com/mountain/knowledge/blob/master/src/meta/types.clj
>>>>
>>>> Example of predicates:
>>>>
>>>> https://github.com/mountain/knowledge/blob/master/src/meta/properties.clj
>>>>
>>>> Example of inference:
>>>>
>>>> https://github.com/mountain/knowledge/blob/master/test/knowledge/test.clj
>>>>
>>>> Also we found it is very easy to get any other language version than
>>>> English.
>>>>
>>>> Since I am new to Clojure logic programming, I have questions for the
>>>> way I take - what will happen when we have millions of triples? Should
>>>> I take another approach by using some RDF store?
>>>>
>>>>    - How many memory will it cost?
>>>>    - How about the performance?
>>>>    - How about the loading process of one million clojure source file
>>>>    or java class file?
>>>>
>>>> Hope you can give some helpful comments. Thanks in advance.
>>>>
>>>> Regards,
>>>> Mingli
>>>>
>>>> --
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clojure@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+unsubscr...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to clojure+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>>
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>>
>> --
>> “One of the main causes of the fall of the Roman Empire was that–lacking
>> zero–they had no way to indicate successful termination of their C
>> programs.”
>> (Robert Firth)
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to