On Wed, May 15, 2013 at 12:20 PM, Manish Aggarwal <[email protected]> wrote:
> Hi Rupert,
>
> Thanks for your response. I will look into this.
>
> Meanwhile I was trying the FieldQuery option available with stanbol ...
>
> I have created the following FieldQuery
>
> {
>     "selected": [
>         "http:\/\/dbpedia.org\/ontology\/foundingYear",
>         "http:\/\/dbpedia.org\/ontology\/foundingDate",
>         "http:\/\/dbpedia.org\/ontology\/keyPerson",
>         "http:\/\/dbpedia.org\/ontology\/industry"],
>     "offset": "0",
>     "limit": "10",
>     "constraints": [{
>         "type": "reference",
>         "field": "http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type",
>         "value": "http:\/\/dbpedia.org\/ontology\/Organisation",
>     }]
> }
>
> and running the command:
>
> curl -X POST -H "Content-Type:application/json" --data "@fieldQuery.json"
> http://localhost:8080/entityhub/site/dbpedia/query
>
> I am using the dbpedia.solrindex (version 3.8)  (from link
> http://dev.iks-project.eu/downloads/stanbol-indices/dbpedia-3.8/)
>
>
> But I am not getting any of the attributes like foundingYear, industry etc
> in the result. Is this because that the dbpedia.solrindex doesn't contains
> these attributes?

The reason is that those attributes are not included in the Index.
Adding all dbpedia-owl namespace properties to the index would
probably increase the index size for more than 20GByte (The last time
I have done this was for dbpedia 3.6). If you need them in your index
you will need to build your own DBpedia index with an adapted
configuration (you will need to add those properties or the whole
namespace to the 'indexing/config/mappings.txt' file)

> I think this is also going to follow the same workflow that you had told in
> the last mail through sample code?

Yes, but my code assumed that you do already know the ID of Entities.
The above would search for Entities that are of type
dbpedia-owl:Organisation. The according Java code would look like
follows

    Site site; //the site (as obtained by the SiteManager)
    FieldQuery query = site.getQueryFactory().createFieldQuery();
    query.setConstraint(RDF_TYPE, new
ReferenceConstraint(DBPEDIA_ORGANIZATION));
    query.addSelectedField(RDF_TYPE);
    query.addSelectedField(DBPEDIA_INDUSTRY);
    query.addSelectedField(DBPEDIA_KEY_PERSON);
    query.setLimit(100);
    //and all the others
    QueryResultList<Representation> results = solrYard.find(query);
    for(Representation result : results){
        //process the results
    }

best
Rupert

> Regards,
> Manish
>
>
>
>
> On Wed, May 15, 2013 at 12:46 PM, Rupert Westenthaler <
> [email protected]> wrote:
>
>> Hi Manish,
>>
>> Yes, typically this is done by using the Stanbol Entiyhub in
>> combination with a referenced site for dbpedia.
>>
>> (1) Configuring the dbpedia ReferencedSite
>> ------
>>
>> But NOTE that all pre-build dbpedia indexes for the Entityhub do not
>> include the dbpedia-owl:industry property. Meaning that you will need
>> to create your own DBpedia index that does include this property by
>> using the Entityhub Indexing Tool for dbpedia.
>>
>> As alternative you could also configure a Referenced Site for dbpedia
>> that directly accesses the dbpedia SPARQL endpoint and stores
>> retrieved entities in a local cache. For that you can install the
>>
>>     <groupId>org.apache.stanbol</groupId>
>>     <artifactId>org.apache.stanbol.data.sites.dbpedia.cached</artifactId>
>>     <version>1.2.0-SNAPSHOT</version>
>>
>> NOTE: with revision http://svn.apache.org/r1482702 I changed the name
>> of the ReferencedSite configured by this bundle from 'dbpedia' to
>> 'dbpedia-cached' so that it does not conflict with the default
>> 'dbpedia' ReferencedSite that does use a full local index.
>>
>> (2) Access the information of the dbpedia ReferencedSite
>> ---------
>>
>> To get the required information you will need to use the Entityhub
>> API. See the code samples below.
>>
>>     import org.apache.stanbol.entityhub.servicesapi.site.SiteManager
>>
>>     //inject a reference to the Entityhub SiteManager
>>     @Reference
>>     SiteManager siteManager
>>
>>     //siteName is the name of the Referenced Site (most likely
>> 'dbpedia' or 'dbpedia-cached')
>>     private someMethod(String siteName, String entityId){
>>
>>         Site site = siteManager.getSite(siteName);
>>         //check for not null (site with that name is not active)
>>         Entity entity = site.getEntity(entityId);
>>         Representation data = entity.getRepresentation();
>>         //get the RDF type values of the Entity
>>         Iterator<Reference> types = data.getReferences(RDF_TYPE);
>>         //iterate over the types and check for dbp-ont:Organisation
>> (the full URI)
>>
>>         Iterator<Reference> industryValues =
>> data.gerReferences(DBPEDIA_INDUSTRY);
>>         //iterate over the values for the industry values
>>
>>     }
>>
>> If you prefer to use the Clerezza RDF API instead of the API of
>> Representation you can also convert the Representation to RDF
>>
>>     import org.apache.stanbol.entityhub.model.clerezza.RdfValueFactory;
>>     import import org.apache.clerezza.rdf.utils.GraphNode;
>>
>>     private static RdfValueFactory vf = RdfValueFactory.getInstance();
>>
>>     private GraphNode convertRepresentationToRdf(Representation r){
>>         return new GraphNode(new UriRef(r.getId()),
>>             vf.toRdfRepresentation(rep).getRdfGraph();
>>     }
>>
>> The above code would create a new MGraph for each Representation. If
>> you want to add multiple Representation to the same Graph you need to
>> use
>>
>>     import org.apache.stanbol.commons.indexedgraph.IndexedMGraph;
>>
>>     private someMethod(...) {
>>
>>     MGrpah graph = new IndexedMGrpah(); //a fast in-memory graph
>> implementation
>>     RdfValueFactory vf = new RdfValueFactory(graph);
>>
>>     //now use this RdfValueFactory to convert all Representations
>>     GraphNode entityRdfData = convertRepresentationToRdf(vf,representation)
>>
>>     }
>>
>>     private GraphNode convertRepresentationToRdf(RdfValueFactory vf,
>> Representation r){
>>         return new GraphNode(new UriRef(r.getId()),
>>             vf.toRdfRepresentation(rep).getRdfGraph();
>>    }
>>
>> hope this helps
>>
>> best
>> Rupert
>>
>> On Tue, May 14, 2013 at 2:29 PM, Manish Aggarwal <[email protected]>
>> wrote:
>> > Hi,
>> >
>> > Is it possible to query dbpedia database from a custom enhancement engine
>> > and find out more about a keyword. For example, if the keyword classify
>> > under organization (dbp-ont:Organisation), I will be interested to know
>> > what is the industry (dbpedia-owl:industry) this keyword belongs to.
>> > In a custom enhancement engine how can I get the required information?
>> >
>> > Regards,
>> > Manish
>>
>>
>>
>> --
>> | Rupert Westenthaler             [email protected]
>> | Bodenlehenstraße 11                             ++43-699-11108907
>> | A-5500 Bischofshofen
>>



--
| Rupert Westenthaler             [email protected]
| Bodenlehenstraße 11                             ++43-699-11108907
| A-5500 Bischofshofen

Reply via email to