Не удается получить экземпляр из онтологии - PullRequest
0 голосов
/ 01 декабря 2018

Я вставил новый экземпляр профиля пользователя в мою онтологию.Однако я не могу правильно получить его с помощью запроса SPARQL SELECT.

Этот запрос ничего не возвращает.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://test.com/my-ontology.owl#> 

SELECT DISTINCT ?class ?birthyear ?gender
WHERE {
  ?class a owl:UserProfile.
  OPTIONAL { ?class owl:birthyear ?birthyear}
  OPTIONAL { ?class owl:gender ?gender}
}
LIMIT 25

Однако, если я отброшу ?class a owl:UserProfile., этот запрос вернет правильный результат:

class             birthyear    gender
owl:userProf_ES   1984         male

Я также пробовал этот запрос, но он также возвращает пустой результат:

SELECT DISTINCT ?class ?type ?birthyear ?gender
WHERE {
  ?class rdf:type ?type.
  ?type rdfs:subClassOf owl:User.
  OPTIONAL { ?class owl:birthyear ?birthyear}
  OPTIONAL { ?class owl:gender ?gender}
}
LIMIT 25

Почему это происходит?

Просто упомянуть, что UserProfile является подпрограммой-класс User.Также у меня есть следующие свойства в UserProfile в Protégé:

enter image description here

enter image description here

enter image description here

Вот как я вставил экземпляр в онтологию:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.test.com/my-ontology.owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX oo:  <http://www.w3.org/2002/07/owl#> 

INSERT { 
  owl:userProf_ES owl:name 'Roger' . 
  owl:userProf_ES owl:nationalityCode 'ES' . 
  owl:userProf_ES owl:languageCode 'es_ES' . 
  owl:userProf_ES owl:gender 'male' . 
  owl:userProf_ES owl:birthyear 1984 . 
  owl:userProf_ES owl:purchasingPower 'medium' . 
  owl:userProf_ES owl:buyingBehaviour 'bargain' . 
  owl:userProf_ES owl:travelingBehaviour 'traveler' . 
  owl:userProf_ES owl:lblSporty true . 
  owl:userProf_ES owl:lblFamily true . 
  owl:userProf_ES owl:lblWorker false . 
  owl:userProf_ES owl:lblHealthy true . 
  owl:userProf_ES owl:lblGamer false . 
  owl:userProf_ES owl:hasNationality owl:ES . 
  owl:userProf_ES owl:hasSpokenLanguage owl:es_ES . 
  owl:userProf_ES owl:hasTravelingBehaviour owl:traveler . 
  owl:userProf_ES owl:hasBuyingBehaviour owl:bargain . 
  owl:userProf_ES owl:hasPurchasingPower owl:medium . 
} 
WHERE {
  FILTER NOT EXISTS { 
    owl:userProf_ES rdf:type owl:UserProfile . 
  } 
} 

1 Ответ

0 голосов
/ 01 декабря 2018

Как упомянул пользователь AKSW, в части INSERT отсутствовал тройной owl:userProf_ES rdf:type owl:UserProfile . После добавления этой отсутствующей части в предложение INSERT все начало работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...