Return-Path: X-Original-To: apmail-commons-dev-archive@www.apache.org Delivered-To: apmail-commons-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3C474175A1 for ; Mon, 19 Jan 2015 15:15:57 +0000 (UTC) Received: (qmail 3815 invoked by uid 500); 19 Jan 2015 15:15:57 -0000 Delivered-To: apmail-commons-dev-archive@commons.apache.org Received: (qmail 3677 invoked by uid 500); 19 Jan 2015 15:15:57 -0000 Mailing-List: contact dev-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Developers List" Delivered-To: mailing list dev@commons.apache.org Received: (qmail 3666 invoked by uid 99); 19 Jan 2015 15:15:56 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Jan 2015 15:15:56 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of andy.seaborne.apache@gmail.com designates 209.85.212.173 as permitted sender) Received: from [209.85.212.173] (HELO mail-wi0-f173.google.com) (209.85.212.173) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Jan 2015 15:15:29 +0000 Received: by mail-wi0-f173.google.com with SMTP id r20so16378421wiv.0 for ; Mon, 19 Jan 2015 07:15:27 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=l0Hs/0RvW9wbTDqghtYAPRFWsiN3iTmn0Jx9FkYKNG4=; b=YBMvz2q94s4zVAW99pVxryx174KMprE2goz3GW0KGJKf7SmKmzYJjueCSYDG8ttePE uXuNcyFltm/rfGD89OwSZtOZpi+qMUQCNVdZbhD6336QkuGi0reCGKJDw9Mlxi44th+H LydftgJAGk9kpBDLe8U6nFfQPlFAEZIDROoE0BNlKPo0SAYkYkC5NPDBnI6WpdUqhICA azuyODoMT2tb4nEW5hhGXzfimW2UA5RAvTsDcTBB2nr6BxHdz2b9p91tkdXWrFTNV5Zy bREvrS4ujttNekYZ+6GqEsnJ9zfSOG+WbB2UmzlBRNyoREF8F2fpHUxN+6NsX/DW3kfb 3ACw== X-Received: by 10.180.7.198 with SMTP id l6mr36527935wia.26.1421680527739; Mon, 19 Jan 2015 07:15:27 -0800 (PST) Received: from [192.168.1.63] (82-69-1-248.dsl.in-addr.zen.co.uk. [82.69.1.248]) by mx.google.com with ESMTPSA id q10sm17623877wjx.34.2015.01.19.07.15.26 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jan 2015 07:15:26 -0800 (PST) Message-ID: <54BD1F8D.9060505@apache.org> Date: Mon, 19 Jan 2015 15:15:25 +0000 From: Andy Seaborne User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: dev@commons.apache.org Subject: Re: [ALL][RDF] github Commons RDF vs. Apache Commons Sandbox RDF References: <54BA2E1E.8090502@apache.org> <1370221615.588044.1421496013025.JavaMail.yahoo@jws10740.mail.gq1.yahoo.com> In-Reply-To: <1370221615.588044.1421496013025.JavaMail.yahoo@jws10740.mail.gq1.yahoo.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On 17/01/15 12:00, Bruno P. Kinoshita wrote: > Hi Andy! > >> Jena can (and does) support multiple APIs over a common core. >> >> A commons-rdf API can be added along side the existing APIs; that means >> it is not a "big bang" to have commons-rdf interfaces supported. > > That's great! Would the commons-rdf dependency go in jena-core/pom.xml? Is it going to be necessary to change some classes in the core? I think it will be transparent for other modules like ARQ, Fuseki, Text. Is that right? I don't think so - Jena's core is "generalized" RDF and this is important. Just adding any new interfaces to the code Node (etc) objects isn't ideal: you get multiple method names for the same thing. And the hashcode/equality contract to work across implementations (hashCode() of implementation A must be the same as hashCode() of implementation B when equality is the same ) is really quite tricky. See also my comments about using classes not interfaces. I personally do not see the worry about wrappers - for me the importance is the architectural difference of a presentation API, designed for applications to write code against, and systems API, designed to support the machinery. Java is really rather good at optimizing away the cost of wrappers, including with multisite method dispatch optimizations and coping with dynamic loading code that changes assumptions at a later time. So a new module that is "jena-commons-rdf" that provides an application presentation API woudl be the obvious route to me. Fuseki etc And this is only RDF, not Datasets or SPARQL. We discussed that and fairly easily came to the conclusion that getting some common sooner was better than a complete set of APIs. Some of the natural other ones are a lot more complicated - they would build on the terms provided by commons-rdf. >> There is a lot more to working with RDF than the RDF API part - SPARQL >> engines don't use that API if they want performance and/or scale. (1) >> SPARQL queries collections of graphs and (2) for scale+persistence, you >> need to work in parts at a level somewhat lower level than java objects, >> and closer to the binary of persistence structures. > > Good point. I'm enjoying learning about Jena code for JENA-632. Even though datasets, streaming queries collections and all that part about journaling and graph persistence can be a bit scary. :-) Luckily, journalling and persistent is orthogonal to implementation JENA-632 though as a application feature mapped over the whole system, its a good way of seeing across several components. > Probably that won't be covered in the commons-rdf, but I think that's correct. I agree - there is a new world out here - a world of large memory machines, and quite likely, large scale persistent RAM in the not too distant future. Given the longevity of shared APIs, it's very hard to find a balance across requirements and expectations. The graph level is naturally driven by the specs but as soon as systems issues get thrown into the mix, the choice space is much larger. Andy > > Thanks! > Bruno > > > ----- Original Message ----- >> From: Andy Seaborne >> To: dev@commons.apache.org >> Cc: >> Sent: Saturday, January 17, 2015 7:40 AM >> Subject: Re: [ALL][RDF] github Commons RDF vs. Apache Commons Sandbox RDF >> >> On 15/01/15 11:52, Bruno P. Kinoshita wrote: >> >>> Hello! >>> >>> >>> I feel like I can't help much in the current discussion. But just >> wanted to chime in >>> and tell that I'm +1 for a [rdf] component in Apache Commons. As a >> commons committer I'd >>> like to help. >>> >>> I started watching the GitHub repository and have subscribed to the ongoing >> discussion. I'll >>> >>> tryto contribute in some way; maybe testing and with small patches. >>> >>> >>> My go-to Maven dependency for RDF, Turtle, N3, working with ontologies, >> reasoners, etc, >>> >>> is Apache Jena. I think it would be very positive to have a common >> interface that I could >>> use in my code (mainly crawlers and data munging for Hadoop jobs) and that >> would work >>> >>> with different implementations. >>> >>> >>> Thanks! >>> >>> Bruno >> >> Since you mention Jena ... :-) >> >> Jena can (and does) support multiple APIs over a common core. >> >> A commons-rdf API can be added along side the existing APIs; that means >> it is not a "big bang" to have commons-rdf interfaces supported. >> >> There is a lot more to working with RDF than the RDF API part - SPARQL >> engines don't use that API if they want performance and/or scale. (1) >> SPARQL queries collections of graphs and (2) for scale+persistence, you >> need to work in parts at a level somewhat lower level than java objects, >> and closer to the binary of persistence structures. >> >> Andy >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org >> For additional commands, e-mail: dev-help@commons.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org > For additional commands, e-mail: dev-help@commons.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org For additional commands, e-mail: dev-help@commons.apache.org