Beispiel #1
0
 /// <summary>
 /// Updates a store asynchronously.
 /// </summary>
 /// <param name="storage">Storage Provider.</param>
 /// <param name="updates">SPARQL Update.</param>
 /// <param name="callback">Callback.</param>
 /// <param name="state">State to pass to the callback.</param>
 internal static void AsyncUpdate(this IUpdateableStorage storage, string updates, AsyncStorageCallback callback, object state)
 {
     Task.Factory.StartNew(() => Update(storage, updates)).ContinueWith(antecedent =>
                                                                        callback(storage,
                                                                                 antecedent.IsFaulted
                 ? new AsyncStorageCallbackArgs(AsyncStorageOperation.SparqlUpdate, updates,
                                                antecedent.Exception)
                 : new AsyncStorageCallbackArgs(AsyncStorageOperation.SparqlUpdate, updates), state));
 }
        /// <summary>
        /// Updates a store asynchronously
        /// </summary>
        /// <param name="storage">Storage Provider</param>
        /// <param name="updates">SPARQL Update</param>
        /// <param name="callback">Callback</param>
        /// <param name="state">State to pass to the callback</param>
        internal static void AsyncUpdate(this IUpdateableStorage storage, String updates, AsyncStorageCallback callback, Object state)
        {
            AsyncUpdateDelegate d = new AsyncUpdateDelegate(Update);

            d.BeginInvoke(storage, updates, r =>
            {
                try
                {
                    d.EndInvoke(r);
                    callback(storage, new AsyncStorageCallbackArgs(AsyncStorageOperation.SparqlUpdate, updates), state);
                }
                catch (Exception e)
                {
                    callback(storage, new AsyncStorageCallbackArgs(AsyncStorageOperation.SparqlUpdate, updates, e), state);
                }
            }, state);
        }
Beispiel #3
0
        internal static IGraph CreateUpdateControlledDataset(this SpinWrappedDataset queryModel)
        {
            IGraph             dataset = queryModel._configuration;
            IUpdateableStorage storage = queryModel.UnderlyingStorage;

            if (!dataset.ContainsTriple(new Triple(RDFUtil.CreateUriNode(dataset.BaseUri), RDF.PropertyType, SD.ClassDataset)) && !dataset.ContainsTriple(new Triple(RDFUtil.CreateUriNode(dataset.BaseUri), RDF.PropertyType, RDFRuntime.ClassUpdateControlledDataset)))
            {
                throw new Exception("Invalid dataset to operate on : " + dataset.BaseUri.ToString());
            }

            // TODO ?See whether we should nest "transactions" or not? Currently not
            if (dataset.ContainsTriple(new Triple(RDFUtil.CreateUriNode(dataset.BaseUri), RDF.PropertyType, RDFRuntime.ClassUpdateControlledDataset)))
            {
                return(dataset);
            }

            // creates the work Dataset
            SpinDatasetDescription workingset = new SpinDatasetDescription();

            workingset.BaseUri = UriFactory.Create(RDFRuntime.DATASET_NS_URI + Guid.NewGuid().ToString());
            workingset.Assert(dataset.Triples);

            INode datasetNode    = RDFUtil.CreateUriNode(dataset.BaseUri);
            INode workingsetNode = RDFUtil.CreateUriNode(workingset.BaseUri);

            // adds workingset metadata
            workingset.Retract(dataset.GetTriplesWithSubject(datasetNode));
            workingset.Assert(workingsetNode, RDFRuntime.PropertyUpdatesGraph, workingsetNode);
            workingset.Assert(workingsetNode, RDF.PropertyType, RDFRuntime.ClassUpdateControlledDataset);
            workingset.Assert(workingsetNode, RDFRuntime.PropertyUpdatesDataset, datasetNode);
            workingset.Assert(workingsetNode, DCTerms.PropertyCreated, DateTime.Now.ToLiteral(RDFUtil.nodeFactory));

            queryModel._configuration = workingset;
            queryModel.Initialise();
            return(workingset);
        }
Beispiel #4
0
        internal static SpinDatasetDescription Load(IUpdateableStorage storage, Uri datasetUri = null, IEnumerable <Uri> graphsUri = null)
        {
            SpinDatasetDescription dataset;

            if (datasetUri == null)
            {
                SparqlResultSet datasetDiscovery = (SparqlResultSet)storage.Query("SELECT ?dataset WHERE {?dataset a <" + SD.ClassDataset.Uri.ToString() + ">}");
                int             datasetCount     = datasetDiscovery.Results.Count;
                if (datasetCount > 1)
                {
                    throw new Exception("More than one dataset has been found in the current storage provider. Please specify which to use through the datasetUri parameter.");
                }
                else if (datasetCount == 1)
                {
                    datasetUri = ((IUriNode)datasetDiscovery.Results.FirstOrDefault().Value("dataset")).Uri;
                }
                else
                {
                    datasetUri = UriFactory.Create(RDFRuntime.DATASET_NS_URI + Guid.NewGuid().ToString());
                }
            }
            dataset = new SpinDatasetDescription(datasetUri);
            storage.LoadGraph(dataset, datasetUri);
            dataset.BaseUri = datasetUri;
            Triple isUpdateControlledDataset = dataset.GetTriplesWithPredicate(RDFRuntime.PropertyUpdatesDataset).FirstOrDefault();

            if (isUpdateControlledDataset != null)
            {
                dataset._sourceUri = ((IUriNode)isUpdateControlledDataset.Object).Uri;
            }
            else
            {
                dataset.Assert(RDFUtil.CreateUriNode(datasetUri), RDF.PropertyType, SD.ClassDataset);
            }
            return(dataset);
        }
Beispiel #5
0
 private static void Update(IUpdateableStorage storage, string updates)
 {
     storage.Update(updates);
 }
 public ZWaveNodeController(IUpdateableStorage tripleStore, ZWaveSerialController zwaveController)
 {
     _tripleStore     = tripleStore;
     _zwaveController = zwaveController;
 }
Beispiel #7
0
 /// <summary>
 /// Inititalize a SpinWrapperDataset upon a storage engine using a RDF SparqlDataset definition.
 /// </summary>
 /// <param name="datasetUri"></param>
 /// <param name="storage"></param>
 public SpinWrappedDataset(Uri datasetUri, IUpdateableStorage storage)
 {
     Storage       = storage;
     Configuration = SpinDatasetDescription.Load(Storage, datasetUri);
     Initialise();
 }
Beispiel #8
0
 /// <summary>
 /// Inititalize a SpinWrapperDataset upon a storage engine using all the graphs in the store.
 /// </summary>
 /// <param name="storage"></param>
 internal SpinWrappedDataset(IUpdateableStorage storage)
 {
     Storage       = storage;
     Configuration = SpinDatasetDescription.Load(Storage);
     Initialise();
 }
Beispiel #9
0
 /// <summary>
 /// Inititalize a SPIN model upon a storage engine using a RDF SparqlDataset definition composed of the specified graphs.
 /// </summary>
 /// <param name="datasetUri"></param>
 /// <param name="storage"></param>
 /// <param name="graphUris"></param>
 public SpinWrappedDataset(Uri datasetUri, IUpdateableStorage storage, IEnumerable <Uri> graphUris)
 {
     Storage       = storage;
     Configuration = SpinDatasetDescription.Load(Storage, datasetUri, graphUris);
     Initialise();
 }
 public ZWaveTripleCollector(ZWaveSerialController zwaveController, IUpdateableStorage tripleStore)
 {
     _zwaveController = zwaveController;
     _zwaveController.FrameReceived += _zwaveController_FrameReceived;
     _tripleStore = tripleStore;
 }