Author: andy
Date: Sat Feb  2 19:50:55 2013
New Revision: 1441797

URL: http://svn.apache.org/viewvc?rev=1441797&view=rev
Log:
Extract getting a PropertyFunctionRegistry.
Add testing for PF's in quad patterns (currently commented out)

Modified:
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPropertyFunction.java
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/pfunction/PropertyFunctionRegistry.java

Modified: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPropertyFunction.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPropertyFunction.java?rev=1441797&r1=1441796&r2=1441797&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPropertyFunction.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPropertyFunction.java
 Sat Feb  2 19:50:55 2013
@@ -18,28 +18,38 @@
 
 package com.hp.hpl.jena.sparql.algebra.optimize;
 
+import org.apache.jena.atlas.logging.Log ;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.ARQ ;
 import com.hp.hpl.jena.sparql.algebra.Op ;
 import com.hp.hpl.jena.sparql.algebra.PropertyFunctionGenerator ;
 import com.hp.hpl.jena.sparql.algebra.TransformCopy ;
 import com.hp.hpl.jena.sparql.algebra.op.OpBGP ;
+import com.hp.hpl.jena.sparql.algebra.op.OpQuad ;
+import com.hp.hpl.jena.sparql.algebra.op.OpQuadPattern ;
 import com.hp.hpl.jena.sparql.algebra.op.OpTriple ;
+import com.hp.hpl.jena.sparql.pfunction.PropertyFunctionRegistry ;
 import com.hp.hpl.jena.sparql.util.Context ;
 
 /** Rewrite to replace a property function property with the call to the 
property function implementation */
 public class TransformPropertyFunction extends TransformCopy
 {
     private final Context context ;
-
+    private final boolean doingMagicProperties ;
+    private final PropertyFunctionRegistry registry ;
+    
     public TransformPropertyFunction(Context context)
     {
-        this.context = context ;   
+        this.context = context ;  
+        doingMagicProperties = context.isTrue(ARQ.enablePropertyFunctions) ;
+        registry = PropertyFunctionRegistry.chooseRegistry(context) ;
     }
     
     @Override
     public Op transform(OpTriple opTriple)
     {
-        boolean doingMagicProperties = 
context.isTrue(ARQ.enablePropertyFunctions) ;
         if ( ! doingMagicProperties )
             return opTriple ;
         
@@ -56,10 +66,46 @@ public class TransformPropertyFunction e
     @Override
     public Op transform(OpBGP opBGP)
     {
-        boolean doingMagicProperties = 
context.isTrue(ARQ.enablePropertyFunctions) ;
         if ( ! doingMagicProperties )
             return opBGP ;
         
-        return PropertyFunctionGenerator.buildPropertyFunctions(opBGP, 
context) ;
+        return PropertyFunctionGenerator.buildPropertyFunctions(registry, 
opBGP, context) ;
     }
+    
+    // Normally, property functionprocessing is done before quad conversion
+    // we could convert back to OpGraph and so handle quads 
+    
+    // For the moment, leave in old mode.
+    
+//    @Override
+//    public Op transform(OpQuad opQuad)
+//    {
+//        if ( ! doingMagicProperties )
+//            return super.transform(opQuad) ; ;
+//        check(opQuad.getQuad().getPredicate()) ;
+//        return super.transform(opQuad) ;
+//    }
+//    
+//    private void check(Node p)
+//    {
+//        if ( p.isURI() )
+//        {
+//            if ( registry.manages(p.getURI()) )
+//                Log.warn(this,  "Property function in quad: "+p) ;
+//        }
+//    }
+//    
+//    @Override
+//    public Op transform(OpQuadPattern opQuadPattern)
+//    {
+//        if ( ! doingMagicProperties )
+//            return super.transform(opQuadPattern) ; ;
+//        
+//        for ( Triple t : opQuadPattern.getBasicPattern().getList() )
+//            check(t.getPredicate()) ;
+//        
+//        return super.transform(opQuadPattern) ;
+//    }
+
 }
+

Modified: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/pfunction/PropertyFunctionRegistry.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/pfunction/PropertyFunctionRegistry.java?rev=1441797&r1=1441796&r2=1441797&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/pfunction/PropertyFunctionRegistry.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/pfunction/PropertyFunctionRegistry.java
 Sat Feb  2 19:50:55 2013
@@ -55,6 +55,16 @@ public class PropertyFunctionRegistry
         return 
(PropertyFunctionRegistry)context.get(ARQConstants.registryPropertyFunctions) ;
     }
     
+    /** Get the PropertyFunctionRegistry, defailting to the global one */
+    public static PropertyFunctionRegistry chooseRegistry(Context context)
+    {
+        PropertyFunctionRegistry registry = 
PropertyFunctionRegistry.get(context) ;
+        // Else global
+        if ( registry == null )
+            registry = PropertyFunctionRegistry.get() ;
+        return registry ;
+    }
+    
     public static void set(Context context, PropertyFunctionRegistry reg)
     { context.set(ARQConstants.registryPropertyFunctions, reg) ; }
     


Reply via email to