SPARQL-запрос извлекает свойства ресурсов - PullRequest
0 голосов
/ 31 января 2019

У меня есть тройной магазин, и я хотел бы создать запрос.Это пример ресурса, представляющего один документ:

<http://natarchives.com.mt/deed/MS588-D52>
    locah:accessProvidedBy  <http://natarchives.com.mt/repository/MT01> ;
    locah:associatedWith    "heredes" , "honorabilis" , "uncias" , "per tactum penne" , "vinea" , "ut moris est" , "juribus" , "unciarum" , "precij" , "spacium" , "gracia" , "tabernam sitam" , "honorabili" , "renunciantes" , "territorio" , "testes" , "tarenos" , "recuperacionis consuetudinarie" , "positam" , "ponderis" , "post" , "tabernam" , "causa" , "per se" , "sed sponte jure" , "diaconus" , "cisterna" , "precio" , "civitate" , "festo" , "solvere" ;
    locah:associatedWith    <http://natarchives.com.mt/person/person11817> , <http://natarchives.com.mt/person/person11826> , <http://natarchives.com.mt/person/person11822> , <http://natarchives.com.mt/person/person11820> , <http://natarchives.com.mt/person/person11823> , <http://natarchives.com.mt/person/person11818> , <http://natarchives.com.mt/place/place486> , <http://natarchives.com.mt/person/person11824> , <http://natarchives.com.mt/person/person11825> , <http://natarchives.com.mt/person/person11821> , <http://natarchives.com.mt/person/person11816> , <http://natarchives.com.mt/place/place886> , <http://natarchives.com.mt/person/person11819> ;
    locah:level             <http://data.archiveshub.ac.uk/page/level/item> ;
    dcterms:date            "1-10-1467" ;
    dcterms:identifier      "MS588-D52" ;
    dcterms:isPartOf        <http://natarchives.com.mt/archivalresource/MS588> ;
    dcterms:type            "Emptio" .

Я пытаюсь найти документ по дате.Результат должен показать:

идентификатор документа, тип, URI регистра - в этом случае (http://natarchives.com.mt/archivalresource/MS588), идентификатор регистра, URI хранилища (http://natarchives.com.mt/repository/MT01), имя хранилища, ключевые слова, связанные с документом илюди и места, связанные с делом. Для людей и мест, которые я хотел бы получить другие свойства, такие как имя, фамилия. Это то, что я до сих пор:

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX locah: <http://data.archiveshub.ac.uk/def/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX schema: <http://schema.org/>
SELECT  ?id ?type ?register ?regId ?rep ?repName ?associatedEntities                       
WHERE                                                                          
{
 {
    {
  SELECT ?id ?type ?register ?regId ?rep ?repName (group_concat(concat(str(?places)," @ ",?placeName); separator=" | ") as ?associatedEntities) 
  WHERE {
    ?x dcterms:date "22-1-1487".
    ?x dcterms:identifier ?id.
    ?x dcterms:type ?type.
    ?x locah:associatedWith ?places.
    ?places schema:name ?placeName.
    ?x dcterms:isPartOf ?register.
    ?register dcterms:identifier ?regId.
    ?x locah:accessProvidedBy ?rep.
    ?rep rdfs:label ?repName.
    FILTER (isURI(?places)).
    }
GROUP BY ?id ?type ?register ?regId ?rep ?repName
}union{
     SELECT ?id ?type ?register ?regId ?rep ?repName (group_concat(concat(str(?persons)," @ ",?name); separator=" | ") as ?associatedEntities) 
  WHERE {
    ?x dcterms:date "22-1-1487".
    ?x dcterms:identifier ?id.
    ?x dcterms:type ?type.
    ?x locah:associatedWith ?persons.
    ?persons foaf:firstName ?name.
    ?x dcterms:isPartOf ?register.
    ?register dcterms:identifier ?regId.
    ?x locah:accessProvidedBy ?rep.
    ?rep rdfs:label ?repName.
    FILTER (isURI(?persons)).
    }
      GROUP BY ?id ?type ?register ?regId ?rep ?repName
    }

  }

}

Мне удалось получить оба, но этоможно сгруппировать результаты объединения

...