Запрос Sparql для получения значений свойств данных класса - PullRequest
0 голосов
/ 23 июня 2018

Я пробовал запрос SPARQL, чтобы получить свойство данных и его значение для данного класса.Онтология создана на сингальском языке, и вот описание класса:

<owl:Class rdf:about="http://webprotege.stanford.edu/R9uiQljpDXJEZ868fnnTGfE">
    <rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/R8PYsiiP0lkvFeFlpH3aQTP"/>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://webprotege.stanford.edu/R9ZKyvH13cQVwMboXOzwAkx"/>
            <owl:someValuesFrom rdf:resource="http://webprotege.stanford.edu/R7d2MyZOxPEpWxXVctrVcgX"/>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://webprotege.stanford.edu/RCDEhkpjMY51Mr6sbD8rJAk"/>
            <owl:someValuesFrom rdf:resource="http://webprotege.stanford.edu/RC5t0y1e6l6lUULc0l37Xhw"/>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://webprotege.stanford.edu/RGKrLFedeMijO31cz81JC2"/>
            <owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1</owl:hasValue>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:label>අනූනන විභාජනය</rdfs:label>
</owl:Class>

Я использовал python для написания запросов и извлечения данных, а вот запрос, который я написал:

my_world = World()
my_world.get_ontology("file://static\\ontology\\root-ontology.owl").load()  # path to the owl file is given here
self.graph = my_world.as_rdflib_graph()

query6 = ("prefix owl: <http://www.w3.org/2002/07/owl#> "
          "base <http://webprotege.stanford.edu/project/C25wqZ4qamhbITLmCGstJ0> "
          "prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> "
          "SELECT ?domain ?property ?value"
          "WHERE {"
          "rdfs:subClassOf owl:hasValue ?value."
          "owl:onProperty rdfs:label ?property."
          "?domain rdfs:label 'අනූනන විභාජනය'."
          "}")

domain_property_range = self.graph.query(query6)
    for item in domain_property_range:
        prop_label = str(item['property'].toPython())
        prop_label = re.sub(r'.*#', "", prop_label)

        value = str(item['value'].toPython())
        value = re.sub(r'.*#', "", value)
        sentences.append({'property': prop_label, 'value': value})
    print(sentences)

но это дает пустой список.Я очень новичок в этом Sparql запросов и RDF вещи.Поэтому было бы очень признательно, если бы кто-то мог помочь решить это.Спасибо!

...