You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/11/13 21:25:28 UTC

svn commit: r1201504 - in /incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql: ARQConstants.java core/DatasetDescription.java

Author: andy
Date: Sun Nov 13 20:25:27 2011
New Revision: 1201504

URL: http://svn.apache.org/viewvc?rev=1201504&view=rev
Log:
Add ways to create a dataset description froma query and/or a context.

Modified:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/DatasetDescription.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java?rev=1201504&r1=1201503&r2=1201504&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java Sun Nov 13 20:25:27 2011
@@ -209,6 +209,7 @@ public class ARQConstants
      *  <li>Dataset of the service</li>
      *  </ol>
      *  Use in other situations should reflect this design. 
+     *  The value of this key in a Context must be an object of type DatasetDescription. 
      */  
     public static final Symbol sysDatasetDescription    = Symbol.create(systemVarNS+"datasetDescription") ;
 

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/DatasetDescription.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/DatasetDescription.java?rev=1201504&r1=1201503&r2=1201504&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/DatasetDescription.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/DatasetDescription.java Sun Nov 13 20:25:27 2011
@@ -24,9 +24,13 @@ import java.util.Iterator ;
 import java.util.List ;
 
 import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.Query ;
+import com.hp.hpl.jena.sparql.ARQConstants ;
+import com.hp.hpl.jena.sparql.ARQException ;
+import com.hp.hpl.jena.sparql.util.Context ;
 import com.hp.hpl.jena.sparql.util.DatasetUtils ;
 
-// TODO Integrate this
+// TODO Integrate this further
 //   use in FROM/FROM NAMED and change Query class.
 //   use in DatasetUtils
 //   use in tests
@@ -35,6 +39,40 @@ public class DatasetDescription
 {
     private List<String> defaultGraphURIs = new ArrayList<String>() ;
     private List<String> namedGraphURIs = new ArrayList<String>() ;
+ 
+    /** Create a dataset description, given a query.
+     * If the query does not have a dataset description, return null.
+     */
+    public static DatasetDescription create(Query query) { return create(query, null) ; }
+    
+    /** Create a dataset description, given a context.
+     * If the context does not have a dataset description, return null.
+     * The context uses the key {@link ARQConstants#sysDatasetDescription}.
+     */
+    public static DatasetDescription create(Context context) { return create(null, context) ; }
+
+    /** Create a dataset description, given a query and context.
+     * The context overrides the query FROM/FROM NAMED.
+     * If neither the context nor query has a dataset description, return null.
+     * The context uses the key {@link ARQConstants#sysDatasetDescription}.
+     */
+    public static DatasetDescription create(Query query, Context context)
+    {
+        if ( context != null && context.isDefined(ARQConstants.sysDatasetDescription) )
+        {
+            try {
+             return (DatasetDescription)context.get(ARQConstants.sysDatasetDescription) ;
+            } catch (ClassCastException ex)
+            {
+                throw new ARQException("Unexpected type (expected DatasetDescription): "+ex.getMessage()) ;
+            }
+        }
+        
+        if ( query != null && query.hasDatasetDescription() )
+            return query.getDatasetDescription() ;
+        
+        return null ;
+    }
     
     public DatasetDescription() {}
     public boolean isEmpty()    { return defaultGraphURIs.isEmpty() && namedGraphURIs.isEmpty() ; }
@@ -52,7 +90,7 @@ public class DatasetDescription
     public Iterator<String> eachNamedGraphURI()                 { return namedGraphURIs.iterator() ; }
     
     /** Create a dataset from the description - reads URLs into an in-memory dataset */ 
-    public Dataset create() { return DatasetUtils.createDataset(this) ; }
+    public Dataset createDataset() { return DatasetUtils.createDataset(this) ; }
 
     /** Create a DatasetGraph from the description - reads URLs into an in-memory DatasetGraph */ 
     public DatasetGraph createDatasetGraph() { return DatasetUtils.createDatasetGraph(this) ; }