By using protege can we store & retrieve data's like we doing it on relational database? - semantic-web

Hi I very new to semantic web and Protege.
Can we store and retrieve data in Protege like we do in relational database? Or can we manipulate only models? if yes, do we need RDBMS for storing data and use Protege to manage the relationship?.
Can we use protege as replacement for Mysql Database to store and retrieve information?
OR I am completely wrong about what is protege?

Simple say, Protege is a software that helps you to graphically building your ontology. Of cause you can store data (for example Individual) in your ontology and query them using a query language. But it really depends on what your data and your query are.

Related

How to populating RDF data from RDBMS-based system

I am new to semantic-web and ontology. From few weeks ago I am start reading papers and online course about it. I have an idea to use ontology rule-based system for extending the feature on my existing reminder system, as can be seen in the attached picture. I've read about Ontology, Rules (e.g. SPIN, SPARQL), Inference engine (e.g. Jena), RDF, RDFS, OWL etc. I think I've got the general idea about it.
System Architecture:
However, one thing that I still miss is: how to integrate this rule-based system into my current system. the current system data is stored in RDBMS (mysql) database. Every transaction data on the system has the possibility to be modified in later time after creation. Meanwhile, ontology-based system - AFAIK, rely on RDF data format. My thinking is, there should be a way to convert the trx data from RDBMS to RDF to be ready to use by the ontology system.
My question are:
Does my thinking correct?
What is best practise of this process?
When there is a modified data on the existing record (RDBMS), how to reflect it on the RDF?
In relation to #3, in case of not using RDBMS, how the ontology system manage their RDF data if there is an update of individual property? is that depend on the underlying triple-store database? Since I read that using TDB only able to insert or delete.

Add Triples to Protege for querying

I have the ontology and a file about 7.4 GB containing triples. How do I add this file of triples so that I can run queries on it ?
You might want to import you data into a triplestore.
See http://wiki.bitplan.com/index.php/SPARQL#The_sample_Data for an example how to import Data into a triple store - in this case blazegraph.
Different triplestores have different options. Protége is not so god for managing data directly. It's good for designing ontologies - that is specifying the schema/structure/model for the data. If you have the data in triples you might want to find out this structure by not only looking at the data but also finding sources for the underlying design. Of course you can sort of "reverse engineer" this by loading the triples into a triple store and trying queries.

Using an ontology to produce semantic full information from the raw data

Problem Definition: Store sensor data (temperature readings, sensor description) into rdf form using an ontoloy. Further, use SPARQL to perform queries on stored data.
My Approach: I am not an expert in this domain, but I have some basic understanding and accordingly I am using this approach: 1. Create Ontology, 2. convert data according to ontology vocabulary, 3. store converted data into triple store, 4. Perform SPARQL queries. I am not sure whether I am following the right way. Any comments from your side will be valuable.
Till now, I have done the following:
I have created an ontology in Protege 5.0.0 as for representing temperature sensor. This ontology only represents one part of full ontology.
I have collected data in a CSV file which includes date, time and temperature reading as shown as
Now, I want to use this ontoloy for storing the csv file in rdf form in some data store. At this step I am stuck from last three days. I have found some links like link1, link2 but still I am finding it difficult to proceed further. Do I need a script which will read csv file and perform mapping to given ontology concepts. If yes, is there a sample script which does the same? Possibly, outcome might look like:
<datetime>valX</datetime>
<tempvalue>valY</tempvalue>
Can anyone guide me in the following:
1. Am I taking correct steps to solve the problem?
2. How should I solve step 3, i.e, store data according to ontology.
P.S: I have posted this question on answers.semanticweb.com also. This is only to get the response asap.
actually, this is a great use of D2RQ mapping language, and D2RQ server.
Go install D2RQ, then start it up with a connection to your relational database. Then generate a mapping file using their generator that comes with the software. Then you'll have a mapping file -- edit that and swap out the automatically generated ontology prefixes with your own. Their website has a page that explains how the mapping language works.
Once you've done that and there are no errors in the mapping file, you can actually query your whole relational dataset with SPARQL without even having to export it and load it in a real triplestore.
However, if you want to export and load into a triplestore, you'd just run the D2RQ generate triples functionality (Also included in d2rq server), and then import that triples file into a triplestore like Jena Fuseki.

Storing dynamic fields with Doctrine2

in our app, we are looking to use doctrine2, however, there is one feature we want to offer but am completely confused as to how it would work.
we want our customers to be able to define custom fields to our standard objects. so, these fields would be made on-the-fly, and not part of the object definition that is known and mapped by doctrine.
our first thought was to use nosql (mongodb or amazon dynamodb) to store some of this data, but since we want to use doctrine to handle our core objects, we would like to stay within the realm of doctrine to achieve this without have to extend beyond it to store this data.
one thing on my mind was using doctrine's ability to serialize/unserialize complex objects and just have like a hash of custom field names and their values as an extra property in the object, however, this would not allow us to have a feature that would search these fields if we ever wanted to allow that...
anyone ever attempted to do this with doctrine2 or any orm variant?
You could consider using Doctrine ODM, which is Doctrine 2 but for NoSQL - I believe they support at least MongoDB.
Another approach would be to use serialization as you said. You probably shouldn't worry about search too much - I would recommend to use a separate fulltext search engine (Solr, ElasticSearch, or other) as they provide much more versatility and performance for search vs SQL fulltext search.
Third, you could use Doctrine alongside with NoSQL. In this case, you probably should abstract your querying into a service class or such, so that you can use Doctrine to query for the data from your SQL DB, and some other to query the remaining data.
Finally, you could consider using a key-value table. One column represents the key, another the value.

Grails ORM - advantage of MongoDB over Mysql

Not sure if this is a silly question but as an application developer that is abstracted from the database via an ORM (in my case I'm using Grails/GORM) what would be the advantages of using something like MongoDB vs something like MySQL ?
Does it really matter?... especially given that I'll be using the GORM API to access my data and will be identifying relationships between my objects.
Thanks!
If all you're doing is storing data that's basically relational in a NoSQL store like MongoDB then you might as well use a proper relational database. The big benefit of the GORM wrappers for the NoSQL stores is that for data that is basically table/column-based you can use GORM, but you can easily access the native store to work directly with the document/graph/column/key-value/etc storage mechanism.
Anything having tree structure is better to store in mongodb, otherwise if data has table structure mysql will be better solution