Package: rdf2srl
RDF2SRLThis package exposes RDF data from sparql database engines for relational
learning models.It provides some convenience functions that send sparql queries in http
requests for both public and private sparql endpoints.Starting from version 1.0.3, aSmartRDFGraphDatasetclass is added that performs
client-side optimization of the Sparql query processing. This improves the performance
if the configuration of the public endpoint isn't tuned for a specific query.InstallationYou cna install the requirements usingpip install -r requiremtns.txtYou can install the RDF2SRL package from PyPI:pip install RDF2SRLGetting StartedCollecting Statistics about the dataWe can use this package to get some statistics about the DBpedia dataset.
Let's use theDBpedia public endpointprovided
byOpenLink VirtuosoFirst, import theRDFGraphDatasetclass from the python packagerdf2srland initialize theRDFGraphDatasetclass with the endpoint URI and the graph URIfromrdf2srlimportRDFGraphDatasetloader=RDFGraphDataset(sparql_endpoint="http://dbpedia.org/sparql",graph_name='http://dbpedia.org/')Now, Let's find the number of (subject, predicate, object) triples in the DBpedia graph:num_triples=loader.num_triples()To find the number of (subject, predicate, object) triples where the object is another entity,
find the number of entity to entity triples.num_e2e_triples=loader.num_entity2entity_triples()To find the number of (subject, predicate, object) triples where the object is a literal value,
find the number of entity to entity triples.num_e2l_triples=loader.num_entity2literal_triples()Loading the dataset into a dataframeWe can also use the package to access the entities in the graph. A useful format for
relational learning models is a dictionary that maps each entity to an index that starts
from 0 to n_entities-1. Other available formats are pandas dataframes and python lists.entity2idx=loader.entities('dict')Similarly, we can get all the entity-to-entity predicates in the graph. A useful format for
relational learning models is a dictionary that maps each predicate to an index that starts
from 0 to n_relations-1. Other available formats are pandas dataframes and python lists.relation2idx=loader.relations('dict')Now, we can get the triples in the dataset in a dataframe of three columns: [subject, object, predicate]
where the values inside the tuples represent the indices inentity2idxandrelation2idx.
The other available format is python list.
The dataframe can be saved incsvfile if output_dir is passed.triples=loader.triples('list')list of the convenience functions available:RDFGraphDataset.num_entities()RDFGraphDataset.num_predicates()RDFGraphDataset.num_relations()RDFGraphDataset.num_attributes()RDFGraphDataset.num_attr_literal_pairs()RDFGraphDataset.num_triples()RDFGraphDataset.num_entity2literal_triples()RDFGraphDataset.num_entity2entity_triples()RDFGraphDataset.num_rdf_type_triples()RDFGraphDataset.predicates(format)# where format is one of ['dict', 'df', 'list']RDFGraphDataset.relations(format)# where format is one of ['dict', 'df', 'list']RDFGraphDataset.attributes(format)# where format is one of ['dict', 'df', 'list']RDFGraphDataset.entities(format)# where format is one of ['dict', 'df', 'list']RDFGraphDataset.attr_literal_pairs()RDFGraphDataset.triples(format)# where format is one of ['df', 'list']RDFGraphDataset.entity2entity_triples(format)# where format is one of ['df', 'list']RDFGraphDataset.entity2literal_triples(format)# where format is one of ['df', 'list']RDFGraphDataset.subjects(predicate)RDFGraphDataset.objects(predicate)RDFGraphDataset.predicates_freq()