You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by jp...@apache.org on 2014/08/03 11:13:57 UTC

svn commit: r1615396 - in /jena/site/trunk/content/documentation/csv: design.mdtext get_started.mdtext implementation.mdtext index.mdtext jena-csv-architecture.png

Author: jpz6311whu
Date: Sun Aug  3 09:13:57 2014
New Revision: 1615396

URL: http://svn.apache.org/r1615396
Log:
Design Documentation for CSV PropertyTable [JENA 625]

Added:
    jena/site/trunk/content/documentation/csv/design.mdtext
    jena/site/trunk/content/documentation/csv/implementation.mdtext
    jena/site/trunk/content/documentation/csv/jena-csv-architecture.png   (with props)
Modified:
    jena/site/trunk/content/documentation/csv/get_started.mdtext
    jena/site/trunk/content/documentation/csv/index.mdtext

Added: jena/site/trunk/content/documentation/csv/design.mdtext
URL: http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/csv/design.mdtext?rev=1615396&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/csv/design.mdtext (added)
+++ jena/site/trunk/content/documentation/csv/design.mdtext Sun Aug  3 09:13:57 2014
@@ -0,0 +1,41 @@
+Title: CSV PropertyTable - Design
+
+## Architecture
+
+The architecture of jena-csv mainly involves 2 components:
+
+-    [PropertyTable](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/org/apache/jena/propertytable/PropertyTable.java)
+-    [GraphPropertyTable](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/org/apache/jena/propertytable/impl/GraphPropertyTable.java)
+
+![Picture of architecture of jena-csv](jena-csv-architecture.png "Architecture of jena-csv")
+
+### PropertyTable 
+
+A `PropertyTable` is collection of data that is sufficiently regular in shape it can be treated as a table.
+That means each subject has a value for each one of the set of properties.
+Irregularity in terms of missing values needs to be handled but not multiple values for the same property.
+With special storage, a PropertyTable
+
+-    is more compact and more amenable to custom storage (e.g. a JSON document store)
+-    can have custom indexes on specific columns
+-    can guarantee access orders
+
+More explicitly, `PropertyTable` is designed to be a table of RDF terms, or [Nodes](https://svn.apache.org/repos/asf/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/graph/Node.java) in Jena. 
+Each [Column](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/org/apache/jena/propertytable/Column.java) of the `PropertyTable` has an unique columnKey `Node` of the predicate (or p for short).
+Each [Row](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/org/apache/jena/propertytable/Row.java) of the `PropertyTable` has an unique rowKey `Node` of the subject (or s for short).
+You can use `getColumn()` to get the `Column` by its columnKey `Node` of the predicate, while `getRow()` for `Row`.
+
+### GraphPropertyTable
+
+`GraphPropertyTable` implements the [Graph](https://svn.apache.org/repos/asf/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/graph/Graph.java) interface (read-only) over a `PropertyTable`. 
+This is subclass from [GraphBase](https://svn.apache.org/repos/asf/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/graph/impl/GraphBase.java) and implements `find()`. 
+The `graphBaseFind()` method can choose the access route based on the find arguments.
+It holds/wraps an reference of the `PropertyTable` instance, so that such a graph can be treated in a more table-like fashion.
+
+Note that, both `PropertyTable` and `GraphPropertyTable` are *NOT* restricted to CSV data.
+They are supposed to be compatible with any table-like data sources, such as relational databases, Microsoft Excel, etc.
+
+### GraphCSV
+
+[GraphCSV](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/org/apache/jena/propertytable/impl/GraphCSV.java) is a sub class of GraphPropertyTable aiming at CSV data.
+Its constructor takes a CSV file path as the parameter and makes a `GraphPropertyTable` through parsing the file.

Modified: jena/site/trunk/content/documentation/csv/get_started.mdtext
URL: http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/csv/get_started.mdtext?rev=1615396&r1=1615395&r2=1615396&view=diff
==============================================================================
--- jena/site/trunk/content/documentation/csv/get_started.mdtext (original)
+++ jena/site/trunk/content/documentation/csv/get_started.mdtext Sun Aug  3 09:13:57 2014
@@ -25,12 +25,12 @@ In short, for Jena ARP, a CSV table is a
 
 ## Command Line Tool
 
-`[csv2rdf](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/riotcmd/csv2rdf.java)` is a tool for direct transforming from CSV to the formatted RDF syntax of N-Triples.
+[csv2rdf](https://svn.apache.org/repos/asf/jena/Experimental/jena-csv/src/main/java/riotcmd/csv2rdf.java) is a tool for direct transforming from CSV to the formatted RDF syntax of N-Triples.
 The script calls the `csv2rdf` java program in the `riotcmd` package in this way:
 
     java -cp ... riotcmd.csv2rdf -dest=outputFile inputFile ...
 
-It transforms the `inputFile`(i.e. CSV file(s)) into `outputFile`(i.e. N-Triples file). For example,
+It transforms the CSV `inputFile` into N-Triples `outputFile`. For example,
 
     java -cp ... riotcmd.csv2rdf --dest=test.ntriples src/test/resources/test.csv
 

Added: jena/site/trunk/content/documentation/csv/implementation.mdtext
URL: http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/csv/implementation.mdtext?rev=1615396&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/csv/implementation.mdtext (added)
+++ jena/site/trunk/content/documentation/csv/implementation.mdtext Sun Aug  3 09:13:57 2014
@@ -0,0 +1 @@
+Title: CSV PropertyTable - Implementation
\ No newline at end of file

Modified: jena/site/trunk/content/documentation/csv/index.mdtext
URL: http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/csv/index.mdtext?rev=1615396&r1=1615395&r2=1615396&view=diff
==============================================================================
--- jena/site/trunk/content/documentation/csv/index.mdtext (original)
+++ jena/site/trunk/content/documentation/csv/index.mdtext Sun Aug  3 09:13:57 2014
@@ -47,6 +47,9 @@ We can use the following SPARQL query fo
       }
     }
 
+What's more, we make some room for future extension through `PropertyTable`.
+The [architecture](design.html) is designed to be able to accommodate any table-like data sources, such as relational databases, Microsoft Excel, etc.
+
 ## Documentation
 
 -   [Get Started](get_started.html)

Added: jena/site/trunk/content/documentation/csv/jena-csv-architecture.png
URL: http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/csv/jena-csv-architecture.png?rev=1615396&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jena/site/trunk/content/documentation/csv/jena-csv-architecture.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream