Я работаю над онтологией о ветвях семейств Эльфов Толкина. Here - это файл OWL.Обновление моего запроса SPARQL
Теперь я добавил префиксы для вкладки SPARQL в Protégé так:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX gene: <http://www.semanticweb.org/kayurin/ontologies/2015/1/casata_di_finwe#>
А потом начал работать над моими первыми запросами, первого успешного один существом:
SELECT ?Prole
WHERE
{
?x gene:nomeCompleto ?Prole;
gene:haGenitore gene:Finwe.
}
Это означало вернуть меня под столбцом «Prole» (Offspring) Data Data NomeCompleto (строковое значение, которое я использовал, потому что не знаю, как использовать символы privatecase для членов класса Individuo.) для всех членов класса «Individuo »(Лицо), у которого была собственность haGenitore Finwe (имеет Finwe как родителя.).
Он работает, чувствует себя немного слишком многословны, но (в то же время.), Это хорошая база для меня работать на других связанных запросов, как:
SELECT ?FigliMaschi
WHERE
{
?x gene:nomeCompleto ?FigliMaschi;
gene:haGenitore gene:Finwe;
gene:haSesso gene:MaschioSesso.
}
Который успешно возвращает мне все строки NomeCompleto для мужские дети из Финляндии.
Теперь, моя первая проблема:
Строки возвращаются ко мне именно в таком формате . "[insertnamehere]" @
У них есть "" и @, о которых я действительно не знаю, откуда они пришли.
Вторая проблема:
Я попробовал эволюционировали запрос:
SELECT ?Prole
WHERE
{
?x gene:nomeCompleto ?Prole;
gene:haGenitore gene:Finwe;
gene:haSesso gene:MaschioSesso.
?y gene:nomeCompleto ?FiglieFemmine;
gene:haGenitore gene:Finwe;
gene:haSesso gene:FemminaSesso.
}
Идея состояла в том, чтобы получить две колонки, одна с сыновьями, а другой с дочерьми нашего prolificating эльфа.
Это так, но имена в мужской колонке копируются три раза, а те, что в женском столбце, копируются два раза, так что числа записей в обоих столбцах равны.
Невозможно исправить это?
Третий вопрос:
Я хотел бы получить две колонки: падре и Figli, первый предполагалось иметь имя только Финвэ, а второй все его потомках.
запрос был:
SELECT ?Padre ?Figli
WHERE
{
?a gene:nomeCompleto ?Padre;
gene:Finwe.
?x gene:nomeCompleto ?Figli;
gene:haGenitore gene:Finwe.
}
Не работает, пустое поле.
Наконец, я хотел улучшить свойства данных, разделив nomeCompleto на nomeFormale и nomeComune (чтобы добавить второе имя для каждого члена списка.) Я попытался сделать запрос, который будет возвращать nomeCompleto два раза, но единственное одна работала так:
SELECT ?Nome1 ?Nome2
WHERE
{
?x gene:nomeCompleto ?Nome1;
gene:haGenitore gene:Finwe.
?y gene:nomeCompleto ?Nome2;
gene:haGenitore gene:Finwe.
}
И даже при этом список беспорядок.
Любой, кто мог бы дать руку, решая эту вещь?
Заранее благодарен всем.
Примечание:
Я использую Protégé беты 5.0. (Единственная версия, которая работает на моем компьютере.) HermiT 1.3.8.3 как Reasoner. Обновление Java версии 8 31 Windows 8.1 64bit
Язык помечено RDF литералы имеют лексическую форму и тег языка. Например, Мое имя может быть представлено как «Джошуа Тейлор» @en. Это строка «Джошуа Тейлор», а язык - английский. Это тот результат, которого вы должны ожидать. –
Если у вас есть три разных вопроса, вы должны задать три разных вопроса. Stack Overflow - это помощь всем, у кого есть подобные проблемы, и объединение таких вопросов затрудняет поиск отдельных вопросов и ответов. –
Для вторых вопросов вам просто нужно сделать 'select? Son? Daugher где {{... sons query ...} union {... daughters query ...}}'. –