Refine search
@Override public Dataset open(final Assembler assembler, final Resource root, final Mode mode) { // Old name : bypass. if ( ! root.hasProperty( RDF.type, DatasetAssemblerVocab.tDatasetTxnMem ) ) checkType(root, DatasetAssemblerVocab.tMemoryDataset); final Dataset dataset = createTxnMem(); setContext(root, dataset.getContext()); Txn.executeWrite(dataset, ()->{ // Load data into the default graph // This also loads quads into the dataset. multiValueAsString(root, data) .forEach(dataURI -> read(dataset, dataURI)); // load data into named graphs multiValueResource(root, pNamedGraph).forEach(namedGraphResource -> { final String graphName = getAsStringValue(namedGraphResource, pGraphName); if (namedGraphResource.hasProperty(data)) { multiValueAsString(namedGraphResource, data) .forEach(namedGraphData -> read(dataset.getNamedModel(graphName), namedGraphData)); } }); }); return dataset; } }
public Object open(Assembler a, Resource root, Mode mode) { Resource r = getResourceValue(root, pSetting ) ; String k = getAsStringValue(r, pName) ; String v = getAsStringValue(r, pValue) ; Symbol symbol = Symbol.create(k) ; ARQ.getContext().set(symbol, v) ; return r ; } }
@Override protected Iterator<Quad> findInDftGraph(Node s, Node p, Node o) { return triples2quadsDftGraph(graph.find(s, p, o)); }
if ( ! GraphUtils.exactlyOneProperty(root, pDirectory) ) throw new SpatialIndexException("No 'spatial:directory' property on "+root) ; RDFNode n = root.getProperty(pDirectory).getObject() ; if ( n.isLiteral() ) String path = IRILib.IRIToFilename(x.getURI()) ; File dir = new File(path) ; directory = FSDirectory.open(dir.toPath()) ; Resource r = GraphUtils.getResourceValue(root, pDefinition) ; EntityDefinition docDef = (EntityDefinition)a.open(r) ;
public static String getAsStringValue(Resource r, Property p) { if ( !atmostOneProperty(r, p) ) throw new NotUniqueException(r, p) ; Statement s = r.getProperty(p) ; if ( s == null ) return null ; if ( s.getObject().isResource() ) return s.getResource().getURI() ; return s.getString() ; }
@Override public Dataset open(Assembler a, Resource root, Mode mode) Resource dataset = GraphUtils.getResourceValue(root, pDataset) ; Resource index = GraphUtils.getResourceValue(root, pIndex) ; Resource textDocProducerNode = GraphUtils.getResourceValue(root, pTextDocProducer) ; Class<?> c = ClsLoader.loadClass(textDocProducerNode.getURI(), TextDocProducer.class) ; String className = textDocProducerNode.getURI().substring(ARQConstants.javaClassURIScheme.length()) ; Constructor<?> dyadic = getConstructor(c, DatasetGraph.class, TextIndex.class); Constructor<?> monadic = getConstructor(c, TextIndex.class);
public static List<String> multiValueURI(Resource r, Property p) { List<RDFNode> nodes = multiValue(r, p) ; List<String> values = new ArrayList<>() ; for ( RDFNode n : nodes ) { if ( n.isURIResource() ) { values.add(((Resource)n).getURI()) ; } } return values ; }
static Dataset make(Resource root) { if ( !exactlyOneProperty(root, pLocation) ) throw new AssemblerException(root, "No location given") ; String dir = getStringValue(root, pLocation) ; Location loc = Location.create(dir) ; DatasetGraph dsg = TDBFactory.createDatasetGraph(loc) ; if ( root.hasProperty(pUnionDefaultGraph) ) { Node b = root.getProperty(pUnionDefaultGraph).getObject().asNode() ; NodeValue nv = NodeValue.makeNode(b) ; if ( nv.isBoolean() ) dsg.getContext().set(TDB.symUnionDefaultGraph, nv.getBoolean()) ; else Log.warn(DatasetAssemblerTDB.class, "Failed to recognize value for union graph setting (ignored): " + b) ; } /* <r> rdf:type tdb:DatasetTDB ; tdb:location "dir" ; //ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ; tdb:unionGraph true ; # or "true" */ AssemblerUtils.setContext(root, dsg.getContext()); return DatasetFactory.wrap(dsg) ; }
public static void addServiceEP(DataService dataService, Operation operation, Resource svc, Property property) { String p = "<"+property.getURI()+">" ; ResultSet rs = FusekiBuildLib.query("SELECT * { ?svc " + p + " ?ep}", svc.getModel(), "svc", svc) ; for ( ; rs.hasNext() ; ) { QuerySolution soln = rs.next() ; epName = r.getProperty(FusekiVocab.pServiceName).getString(); List<RDFNode> x = GraphUtils.multiValue(r, FusekiVocab.pAllowedUsers); if ( x.size() > 1 ) throw new FusekiConfigException("Multiple fuseki:"+FusekiVocab.pAllowedUsers.getLocalName()+" for "+r);
String main = GraphUtils.getStringValue(root, AssemblerVocab.pMain) ; if ( main == null ) main = GraphUtils.getStringValue(root, AssemblerVocab.pClassname) ; cd.setCmd(main) ; Resource x = GraphUtils.getResourceValue(root, AssemblerVocab.pArgs) ; if ( x != null ) for (; !x.equals(RDF.nil); ) RDFNode e = x.getRequiredProperty(RDF.first).getObject(); x = x.getRequiredProperty(RDF.rest).getResource(); String name = GraphUtils.getStringValue(entry, AssemblerVocab.pArgName) ; String value = GraphUtils.getStringValue(entry, AssemblerVocab.pArgValue) ; if ( value == null ) throw new CommandAssemblerException(entry, "Strange entry: "+entry) ;
@Override public Object open(Assembler a, Resource root, Mode mode) { ScriptDesc sd = new ScriptDesc() ; Resource x = GraphUtils.getResourceValue(root, AssemblerVocab.pSteps) ; if ( x != null ) { for (; !x.equals(RDF.nil); ) { Resource e = x.getRequiredProperty(RDF.first).getResource(); // Move to next list item x = x.getRequiredProperty(RDF.rest).getResource(); // Process this item. try { CmdDesc cd = (CmdDesc)a.open(e) ; sd.add(cd) ; } catch (ClassCastException ex) { System.err.println("Not a command description : "+ex.getMessage()) ; } } } return sd ; }
String locationDir = getStringValue(root, pLocation) ; Resource dataset = getResourceValue(root, pDataset) ; if ( root.hasProperty(pGraphName1) ) graphName = getAsStringValue(root, pGraphName1) ; if ( root.hasProperty(pGraphName2) ) graphName = getAsStringValue(root, pGraphName2) ; if ( root.hasProperty(pIndex) ) Log.warn(this, "Custom indexes not implemented yet - ignored") ;
public static Resource getResourceValue(Resource r, Property p) { if ( !atmostOneProperty(r, p) ) throw new NotUniqueException(r, p) ; Statement s = r.getProperty(p) ; if ( s == null ) return null ; return s.getResource() ; }
/** Format:: access:entry [ :user "user2" ; :graphs (<http://host/graphname3> ) ] */ private void parseStruct(Multimap<String, Node> map, Resource root, Resource r) { if ( ! GraphUtils.exactlyOneProperty(r, VocabSecurity.pUser) ) throw new AssemblerException(root, "Expected exactly one access:user property for "+r); if ( ! GraphUtils.exactlyOneProperty(r, VocabSecurity.pGraphs) ) throw new AssemblerException(root, "Expected exactly one access:graphs property for "+r); String user = GraphUtils.getStringValue(r, VocabSecurity.pUser); r.listProperties(VocabSecurity.pGraphs).mapWith(s->s.getObject()).forEachRemaining(x->{ List<Node> graphs = new ArrayList<>(); if ( x.isURIResource() ) { //System.out.printf("S: user %s : access : %s\n", user, x.asNode()); graphs.add(x.asNode()); } else { // List? RDFList list = x.as(RDFList.class); list.iterator().forEachRemaining(rn->{ graphs.add(rn.asNode()); }); } accessEntries(root, map, user, graphs); }); }
@Override public Dataset open(Assembler a, Resource root, Mode mode) { if ( ! GraphUtils.exactlyOneProperty(root, VocabSecurity.pSecurityRegistry) ) throw new AssemblerException(root, "Expected exactly one access:registry property"); if ( ! GraphUtils.exactlyOneProperty(root, VocabSecurity.pDataset) ) throw new AssemblerException(root, "Expected exactly one access:dataset property"); RDFNode rnRegistry = root.getProperty(VocabSecurity.pSecurityRegistry).getObject(); RDFNode rnDataset = root.getProperty(VocabSecurity.pDataset).getObject(); AuthorizationService sr = (AuthorizationService)a.open(rnRegistry.asResource()) ; DatasetGraph dsgBase = ((Dataset)a.open(rnDataset.asResource())).asDatasetGraph(); DatasetGraph dsg = new DatasetGraphAccessControl(dsgBase, sr); // Add marker // ds.getContext().set(DataAccessCtl.symControlledAccess, true); // Add security registry : if this dataset is wrapped then this means the AuthorizationService is still accessible. // But adding to DatasetGraphAccessControl (currently) pushes it down to the wrapped base DSG. //dsg.getContext().set(DataAccessCtl.symAuthorizationService, sr); return DatasetFactory.wrap(dsg); }
public Dataset createDataset(Assembler a, Resource root, Mode mode) { // Can use ja:graph or ja:defaultGraph but not both. Resource dftGraphDesc1 = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pDefaultGraph); Resource dftGraphDesc2 = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pGraph); if ( dftGraphDesc1 != null && dftGraphDesc2 != null ) throw new AssemblerException(root, "Found both ja:graph and ja:defaultGraph"); Resource graphDesc = ( dftGraphDesc1 != null) ? dftGraphDesc1 : dftGraphDesc2 ; Model model; if ( graphDesc != null ) model = a.openModel(graphDesc); else // Assembler description did not define one. model = GraphFactory.makeDefaultModel(); Dataset ds = DatasetFactory.wrap(model); List<RDFNode> nodes = GraphUtils.multiValue(root, DatasetAssemblerVocab.pNamedGraph); if ( ! nodes.isEmpty() ) { String x = DatasetAssemblerVocab.tDatasetOne.getLocalName(); throw new AssemblerException(root, "A "+x+" dataset can only hold a default graph, and no named graphs"); } AssemblerUtils.setContext(root, ds.getContext()); return ds; } }
@Override public Object open(Assembler a, Resource cmd, Mode mode) { if ( cmd.hasProperty(AssemblerVocab.pQueryFile) && cmd.hasProperty(AssemblerVocab.pQueryString) ) throw new CommandAssemblerException(cmd, "Both "+FmtUtils.stringForResource(AssemblerVocab.pQueryString)+" and "+FmtUtils.stringForResource(AssemblerVocab.pQueryFile)+" present") ; if ( ! cmd.hasProperty(AssemblerVocab.pQueryFile) && ! cmd.hasProperty(AssemblerVocab.pQueryString) ) throw new CommandAssemblerException(cmd, "No queryString or queryFile present") ; String queryString = GraphUtils.getStringValue(cmd, AssemblerVocab.pQueryString) ; if ( queryString == null ) { String filename = GraphUtils.getStringValue(cmd, AssemblerVocab.pQueryFile) ; queryString = FileManager.get().readWholeFileAsUTF8(filename) ; } // Base?? // Convert to another exception? return QueryFactory.create(queryString) ; } }
public Dataset createDataset(Assembler a, Resource root, Mode mode) { Resource dftGraph = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pDefaultGraph) ; if ( dftGraph == null ) dftGraph = GraphUtils.getResourceValue(root, DatasetAssemblerVocab.pGraph) ; Dataset ds = DatasetFactory.create(dftModel) ; List<RDFNode> nodes = GraphUtils.multiValue(root, DatasetAssemblerVocab.pNamedGraph) ; for ( RDFNode n : nodes ) { if ( !(n instanceof Resource) ) Resource r = (Resource)n; String gName = GraphUtils.getAsStringValue(r, DatasetAssemblerVocab.pGraphName); Resource g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraph); if ( g == null ) { g = GraphUtils.getResourceValue(r, DatasetAssemblerVocab.pGraphAlt); if ( g != null ) { Log.warn(this, "Use of old vocabulary: use :graph not :graphData");
Resource c = GraphUtils.getResourceValue(root, AssemblerVocab.pConnection) ; if ( c != null ) sdbConnDesc = (SDBConnectionDesc)a.open(c) ; String layoutName = GraphUtils.getStringValue(root, AssemblerVocab.pLayout) ; String dbType = chooseDBType(root, sdbConnDesc) ; List<Resource> x = GraphUtils.multiValueResource(root, AssemblerVocab.featureProperty) ; FeatureSet fSet = new FeatureSet() ; for ( Resource r : x ) String n = GraphUtils.getStringValue(r, AssemblerVocab.featureNameProperty) ; String v = GraphUtils.getStringValue(r, AssemblerVocab.featureValueProperty) ; Feature f = new Feature(new Feature.Name(n), v) ; fSet.addFeature(f) ; String engineName = GraphUtils.getStringValue(root, AssemblerVocab.pMySQLEngine) ; storeDesc.engineType = null ; if ( engineName != null ) String storageType = GraphUtils.getStringValue(root, AssemblerVocab.pStorageType) ; if ( storageType != null ) try { storeDesc.storageType= SAPStorageType.convert(storageType) ; }
@Override public TupleIndex open(Assembler a, Resource root, Mode mode) exactlyOneProperty(root, pDescription) ; String desc = getAsStringValue(root, pDescription).toUpperCase(Locale.ENGLISH) ; exactlyOneProperty(root, pFile) ; String filename = getAsStringValue(root, pFile) ;